| | |
| | | |
| | | NProgress.configure({ showSpinner: false }) // NProgress Configuration |
| | | |
| | | const whiteList = ['/login', '/zhkb', '/ckgl', '/cgdd', '/bzcj', '/dccj', '/zpcj', '/back'] // no redirect whitelist |
| | | const whiteList = ['/login', '/jgcj','/zpcj'] // no redirect whitelist |
| | | |
| | | router.beforeEach(async(to, from, next) => { |
| | | // start progress bar |
| | |
| | | * çæ¿é¨åè·¯ç± |
| | | * */ |
| | | { |
| | | path: '/zhkb', |
| | | component: () => import('@/views/kb/zhkb'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/ckgl', |
| | | component: () => import('@/views/kb/ckgl'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/cgdd', |
| | | component: () => import('@/views/kb/cgdd'), |
| | | path: '/jgcj', |
| | | component: () => import('@/views/kb/jgcj'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/zpcj', |
| | | component: () => import('@/views/kb/zpcj'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/dccj', |
| | | component: () => import('@/views/kb/dccj'), |
| | | hidden: true |
| | | }, |
| | | { |
| | | path: '/bzcj', |
| | | component: () => import('@/views/kb/bzcj'), |
| | | hidden: true |
| | | }, |
| | | |
| | |
| | | return myChart |
| | | } |
| | | |
| | | const colorX = '#c7e7ff' |
| | | const colorY = '#7696c5' |
| | | |
| | | // ç³»ç»é¦é¡µå¾ |
| | | export function barTop(data, colorArr) { |
| | | var salvProName = ['x'] |
| | |
| | | data: salvProValue |
| | | |
| | | }, |
| | | { |
| | | name: 'èæ¯', |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | barGap: '-100%', |
| | | data: Value, |
| | | itemStyle: { |
| | | normal: { |
| | | color: `rgba(${color[1]},0.8)`, |
| | | barBorderRadius: 30 |
| | | { |
| | | name: 'èæ¯', |
| | | type: 'bar', |
| | | barWidth: 15, |
| | | barGap: '-100%', |
| | | data: Value, |
| | | itemStyle: { |
| | | normal: { |
| | | color: `rgba(${color[1]},0.8)`, |
| | | barBorderRadius: 30 |
| | | } |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | } |
| | | |
| | |
| | | // 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 option = { |
| | | animation: false, |
| | | backgroundColor: 'transparent', |
| | | title: { |
| | | show: false, |
| | |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '10%', |
| | | right: '5%', |
| | | left: '5%', |
| | | right: '10%', |
| | | bottom: '0%', |
| | | top: '10%', |
| | | containLabel: true |
| | | }, |
| | | // animation: false, // åæ¶å¨ç» |
| | | xAxis: { |
| | | show: false |
| | | }, |
| | |
| | | color: function(value, index) { |
| | | return value === '0' ? 'transparent' : '#fff' |
| | | }, |
| | | fontSize: 18, |
| | | fontSize: 20, |
| | | // formatter: function(value, index) { |
| | | // return [ |
| | | // '{lg|' + (index + 1) + 'ã }' + '{title|' + value + '} ' |
| | |
| | | show: true, |
| | | position: 'right', |
| | | formatter: '{c}', |
| | | fontSize: 14, |
| | | fontSize: 20, |
| | | color: '#fff' |
| | | // formatter: '{c}%', |
| | | } |
| | |
| | | } |
| | | return option |
| | | } |
| | | |
| | | // çæ¿å¤´é¨èæ¯æ¡ |
| | | export function kbTop() { |
| | | var getXY = ['å¦åæè²ç³»'] // æ°æ®ç¹åç§° |
| | | var getRS = [255] // å¦ç满æåº¦ |
| | | |
| | | var max = Math.ceil(255 / 10) * 10 |
| | | |
| | | const option = { |
| | | animation: false, |
| | | backgroundColor: 'transparent', |
| | | grid: { |
| | | left: '0%', |
| | | right: '0%', |
| | | bottom: '0%', |
| | | top: '0%' |
| | | // containLabel: true |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: 'value', |
| | | show: false, |
| | | axisLabel: { |
| | | margin: 5, |
| | | color: '#666666', |
| | | textStyle: { |
| | | fontSize: '13' |
| | | } |
| | | }, |
| | | min: 0, |
| | | max: max, // è®¡ç®æå¤§å¼ |
| | | interval: max / 5, // å¹³åå为5份 |
| | | splitNumber: 5, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: '#D1D1D1' |
| | | } |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#333333' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | } |
| | | } |
| | | ], |
| | | yAxis: [ |
| | | { |
| | | type: 'category', |
| | | inverse: true, |
| | | show: false, |
| | | axisLabel: { |
| | | textStyle: { |
| | | color: '#6F84BD', |
| | | fontSize: '13' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | color: '#333333' |
| | | } |
| | | }, |
| | | data: getXY |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'å¼', |
| | | type: 'bar', |
| | | zlevel: 1, |
| | | xAxisIndex: 0, |
| | | label: { |
| | | show: false, |
| | | position: 'right', |
| | | color: '#6F84BD', |
| | | fontSize: 14, |
| | | offset: [10, 0] |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | barBorderRadius: [10, 10, 10, 10], |
| | | color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ |
| | | offset: 0, |
| | | color: '#91ddec' // 0% å¤çé¢è² |
| | | }, { |
| | | offset: 1, |
| | | color: '#09d8f2' // 100% å¤çé¢è² |
| | | }], false) |
| | | } |
| | | }, |
| | | barWidth: 15, |
| | | data: getRS |
| | | } |
| | | ] |
| | | } |
| | | |
| | | return option |
| | | } |
| | | |
| | | // 车é´è´¨éå·¦ä¸å¨ä¸è¯ |
| | | export function line02(dataX, dataY) { |
| | | return { |
| | | animation: false, |
| | | backgroundColor: 'transparent', |
| | | tooltip: {}, |
| | | // title: { |
| | | // show: false, |
| | | // text: '订åå®ææ»æ°', |
| | | // left: '50%', |
| | | // top: '5%', |
| | | // textAlign: 'center', |
| | | // textStyle: { |
| | | // // color: '#fff', |
| | | // color: '#00ffff', |
| | | // fontSize: '20', |
| | | // fontWeight: 'bolder' |
| | | // } |
| | | // }, |
| | | grid: { |
| | | left: '0%', |
| | | right: '2%', |
| | | bottom: '5%', |
| | | top: '8%', |
| | | containLabel: true |
| | | }, |
| | | legend: { |
| | | show: false, |
| | | itemGap: 50, |
| | | data: ['æ³¨åæ»é', 'ææ°æ³¨åé'], |
| | | textStyle: { |
| | | color: '#f9f9f9', |
| | | borderColor: '#fff' |
| | | } |
| | | }, |
| | | xAxis: [ |
| | | { |
| | | type: 'category', |
| | | boundaryGap: true, |
| | | axisLabel: { |
| | | interval: 0, |
| | | formatter: '{value}', |
| | | fontSize: 18, |
| | | margin: 20, |
| | | textStyle: { |
| | | color: colorX |
| | | } |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#032c58' |
| | | } |
| | | }, |
| | | splitLine: { |
| | | show: false, |
| | | lineStyle: { |
| | | color: '#032c58' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | data: dataX |
| | | }], |
| | | yAxis: [ |
| | | { |
| | | // max: 800, |
| | | boundaryGap: false, |
| | | splitNumber: 4, |
| | | type: 'value', |
| | | axisLabel: { |
| | | textStyle: { |
| | | fontSize: 18, |
| | | color: colorY |
| | | } |
| | | }, |
| | | // name: 'å', |
| | | // nameTextStyle: { |
| | | // color: colorY, |
| | | // fontSize: 14, |
| | | // lineHeight: 20 |
| | | // }, |
| | | splitLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: '#032c58' |
| | | } |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: '#032c58' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: true |
| | | } |
| | | } |
| | | ], |
| | | series: [ |
| | | { |
| | | name: 'æ³¨åæ»é', |
| | | type: 'line', |
| | | // smooth: true, //æ¯å¦å¹³æ»æ²çº¿æ¾ç¤º |
| | | // symbol:'circle', // é»è®¤æ¯ç©ºå¿åï¼ä¸é´æ¯ç½è²çï¼ï¼æ¹æå®å¿å |
| | | showAllSymbol: true, |
| | | symbol: 'emptyCircle', |
| | | symbolSize: 6, |
| | | lineStyle: { |
| | | normal: { |
| | | color: '#28ffb3' // 线æ¡é¢è² |
| | | }, |
| | | borderColor: '#f0f' |
| | | }, |
| | | label: { |
| | | show: true, |
| | | position: 'top', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 16 |
| | | } |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | color: '#28ffb3' |
| | | |
| | | } |
| | | }, |
| | | tooltip: { |
| | | show: false |
| | | }, |
| | | areaStyle: { // åºåå¡«å
æ ·å¼ |
| | | normal: { |
| | | // çº¿æ§æ¸åï¼å4ä¸ªåæ°å嫿¯x0,y0,x2,y2(èå´0~1);ç¸å½äºå¾å½¢å
å´çä¸çç¾åæ¯ã妿æåä¸ä¸ªåæ°æ¯âtrueâï¼å该åä¸ªå¼æ¯ç»å¯¹åç´ ä½ç½®ã |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ |
| | | offset: 0, |
| | | color: 'rgba(0,154,120,1)' |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgba(0,0,0, 0)' |
| | | } |
| | | ], false), |
| | | shadowColor: 'rgba(53,142,215, 0.9)', // é´å½±é¢è² |
| | | shadowBlur: 20 // shadowBlur设å¾å½¢é´å½±ç模ç³å¤§å°ãé
åshadowColor,shadowOffsetX/Y, 设置å¾å½¢çé´å½±ææã |
| | | } |
| | | }, |
| | | data: dataY |
| | | // data: [600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100), 600 + Math.floor(Math.random() * 100)] |
| | | } |
| | | // { |
| | | // name: 'ææ°æ³¨åé', |
| | | // type: 'bar', |
| | | // barWidth: 20, |
| | | // tooltip: { |
| | | // show: false |
| | | // }, |
| | | // label: { |
| | | // show: true, |
| | | // position: 'top', |
| | | // textStyle: { |
| | | // color: '#fff', |
| | | // } |
| | | // }, |
| | | // itemStyle: { |
| | | // normal: { |
| | | // // barBorderRadius: 5, |
| | | // // color: new echarts.graphic.LinearGradient( |
| | | // // 0, 0, 0, 1, |
| | | // // [{ |
| | | // // offset: 0, |
| | | // // color: '#14c8d4' |
| | | // // }, |
| | | // // { |
| | | // // offset: 1, |
| | | // // color: '#43eec6' |
| | | // // } |
| | | // // ] |
| | | // // ) |
| | | // color: function (params) { |
| | | // var colorList = ['#0ec1ff', '#10cdff', '#12daff', '#15ebff', '#17f8ff', '#1cfffb', '#1dfff1']; |
| | | // return colorList[params.dataIndex]; |
| | | // } |
| | | // } |
| | | // }, |
| | | // data: [200, 382, 102, 267, 186, 315, 316] |
| | | // } |
| | | ] |
| | | } |
| | | } |
| | | |
| | | // 车é´è´¨éå³ä¸ æ¥ä¸è¯ |
| | | export function bar04(resValueArr) { |
| | | // let data = resValueArr.map(({ eqp_name, cont }) => ({ name: eqp_name, value: cont }))//æ¿æ¢æ°ç»å¯¹è±¡ä¸çé®å |
| | | |
| | | const data = [ |
| | | { |
| | | name: 'è£
é
ä¸çº¿', |
| | | value: resValueArr.find(i => i.eqp_name === 'è£
é
ä¸çº¿') ? resValueArr.find(i => i.eqp_name === 'è£
é
ä¸çº¿').cont : 0 |
| | | }, |
| | | { |
| | | name: 'è£
é
äºçº¿', |
| | | value: resValueArr.find(i => i.eqp_name === 'è£
é
äºçº¿') ? resValueArr.find(i => i.eqp_name === 'è£
é
äºçº¿').cont : 0 |
| | | }, |
| | | { |
| | | name: 'è£
é
ä¸çº¿', |
| | | value: resValueArr.find(i => i.eqp_name === 'è£
é
ä¸çº¿') ? resValueArr.find(i => i.eqp_name === 'è£
é
ä¸çº¿').cont : 0 |
| | | }, |
| | | { |
| | | name: 'è£
é
å线', |
| | | value: resValueArr.find(i => i.eqp_name === 'è£
é
å线') ? resValueArr.find(i => i.eqp_name === 'è£
é
å线').cont : 0 |
| | | } |
| | | ] |
| | | const getSymbolData = (data) => { |
| | | const arr = [] |
| | | for (var i = 0; i < data.length; i++) { |
| | | arr.push({ |
| | | value: data[i].value, |
| | | symbolPosition: 'end' |
| | | }) |
| | | } |
| | | return arr |
| | | } |
| | | |
| | | const option = { |
| | | animation: false, |
| | | backgroundColor: 'transparent', |
| | | grid: { |
| | | top: '0%', |
| | | bottom: 0, |
| | | right: '4%', |
| | | left: -20, |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | show: false |
| | | }, |
| | | yAxis: [{ |
| | | triggerEvent: true, |
| | | show: true, |
| | | inverse: true, |
| | | data: data.map(r => r.name), |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | |
| | | axisLabel: { |
| | | show: true, |
| | | interval: 0, |
| | | color: '#fff', |
| | | align: 'left', |
| | | margin: 60, |
| | | formatter: function(value, index) { |
| | | return '{title|' + value + '}' |
| | | }, |
| | | rich: { |
| | | title: { |
| | | width: 50, |
| | | align: 'right', |
| | | fontSize: 20 |
| | | } |
| | | } |
| | | } |
| | | }, { |
| | | triggerEvent: true, |
| | | show: true, |
| | | inverse: true, |
| | | data: data.map(r => r.name), |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | interval: 0, |
| | | shadowOffsetX: '-20px', |
| | | color: ['#fff'], |
| | | align: 'left', |
| | | verticalAlign: 'center', |
| | | lineHeight: 40, |
| | | fontSize: 20, |
| | | formatter: function(value, index) { |
| | | return data[index].value + '' |
| | | } |
| | | |
| | | } |
| | | }], |
| | | series: [ |
| | | { |
| | | name: 'XXX', |
| | | type: 'pictorialBar', |
| | | symbol: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==', |
| | | // symbolSize: [50, 50], |
| | | symbolSize: function(params) { |
| | | return params === 0 ? [0, 0] : [50, 50] |
| | | }, |
| | | symbolOffset: [20, 0], |
| | | z: 12, |
| | | itemStyle: { |
| | | normal: { |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | data: getSymbolData(data) |
| | | }, |
| | | { |
| | | name: 'æ¡', |
| | | type: 'bar', |
| | | showBackground: true, |
| | | // barBorderRadius: 30, |
| | | yAxisIndex: 0, |
| | | data: data, |
| | | barWidth: 10, |
| | | // align: left, |
| | | itemStyle: { |
| | | normal: { |
| | | color: 'rgba(41, 162, 245, 1)', |
| | | barBorderRadius: 10 |
| | | } |
| | | // color: '#A71A2B', |
| | | // barBorderRadius: 4, |
| | | } |
| | | // label: { |
| | | // normal: { |
| | | // color: '#fff', |
| | | // show: true, |
| | | // position: ["-80px", 0], |
| | | // textStyle: { |
| | | // fontSize: 16 |
| | | // }, |
| | | // formatter: function(a, b) { |
| | | // return a.name |
| | | // } |
| | | // } |
| | | // } |
| | | }] |
| | | } |
| | | |
| | | return option |
| | | } |
| | | |
| | | // 车é´è´¨éå³ä¸ å¨ä¸è¯ |
| | | export function pie02(resValueArr) { |
| | | const bgColor = 'transparent' |
| | | const title = 'æ»ä¸è¯æ°' |
| | | const color = ['#0E7CE2', '#FF8352', '#E271DE', '#F8456B', '#00FFFF', '#4AEAB0'] |
| | | const echartData = resValueArr.map(({ eqp_name, cont }) => ({ name: eqp_name, value: cont }))// æ¿æ¢æ°ç»å¯¹è±¡ä¸çé®å |
| | | const formatNumber = function(num) { |
| | | const reg = /(?=(\B)(\d{3})+$)/g |
| | | return num.toString().replace(reg, ',') |
| | | } |
| | | const total = echartData.reduce((a, b) => { |
| | | return a + b.value * 1 |
| | | }, 0) |
| | | |
| | | const option = { |
| | | animation: false, |
| | | backgroundColor: bgColor, |
| | | color: color, |
| | | // tooltip: { |
| | | // trigger: 'item' |
| | | // }, |
| | | title: [{ |
| | | text: '{name|' + title + '}\n{val|' + formatNumber(total) + '}', |
| | | top: 'center', |
| | | left: 'center', |
| | | textStyle: { |
| | | rich: { |
| | | name: { |
| | | fontSize: 22, |
| | | fontWeight: 'normal', |
| | | color: '#fff', |
| | | padding: [10, 0] |
| | | }, |
| | | val: { |
| | | fontSize: 22, |
| | | fontWeight: 'bold', |
| | | color: '#fff' |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // { |
| | | // text: 'åä½ï¼ä¸ª', |
| | | // top: 20, |
| | | // left: 20, |
| | | // textStyle: { |
| | | // fontSize: 14, |
| | | // color: '#666666', |
| | | // fontWeight: 400 |
| | | // } |
| | | // } |
| | | ], |
| | | // legend: { |
| | | // orient: 'vertical', |
| | | // icon: 'rect', |
| | | // x: '80%', |
| | | // y: 'center', |
| | | // itemWidth: 12, |
| | | // itemHeight: 12, |
| | | // align: 'left', |
| | | // textStyle: { |
| | | // rich: { |
| | | // name: { |
| | | // fontSize: 12 |
| | | // }, |
| | | // value: { |
| | | // fontSize: 16, |
| | | // padding: [0, 5, 0, 15] |
| | | // }, |
| | | // unit: { |
| | | // fontSize: 12 |
| | | // } |
| | | // } |
| | | // }, |
| | | // formatter: function(name) { |
| | | // let res = echartData.filter(v => v.name === name); |
| | | // res = res[0] || {}; |
| | | // let unit = res.unit || ''; |
| | | // return '{name|' + name + '} {value|' + res.value + '}{unit|' + unit + '}' |
| | | // } |
| | | // // data: legendName |
| | | // }, |
| | | series: [ |
| | | { |
| | | type: 'pie', |
| | | radius: ['35%', '50%'], |
| | | center: ['50%', '50%'], |
| | | data: echartData, |
| | | hoverAnimation: false, |
| | | itemStyle: { |
| | | normal: { |
| | | borderColor: bgColor, |
| | | borderWidth: 2 |
| | | } |
| | | }, |
| | | labelLine: { |
| | | normal: { |
| | | // showAbove: false, |
| | | length: 20, |
| | | length2: 35, |
| | | lineStyle: { |
| | | color: '#fff' |
| | | } |
| | | } |
| | | }, |
| | | label: { |
| | | normal: { |
| | | formatter: params => { |
| | | return ( |
| | | '{icon|â}{name|' + params.name + '}{value|' + |
| | | formatNumber(params.value) + '}' |
| | | ) |
| | | }, |
| | | padding: [0, -50, 25, -50], |
| | | rich: { |
| | | icon: { |
| | | fontSize: 18, |
| | | color: 'red' |
| | | }, |
| | | name: { |
| | | fontSize: 18, |
| | | padding: [0, 10, 0, 4], |
| | | color: '#fff' |
| | | }, |
| | | value: { |
| | | fontSize: 18, |
| | | fontWeight: 'bold', |
| | | color: '#fff' |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }] |
| | | } |
| | | return option |
| | | } |
| | | |
| | | // 车é´ç产 çäº§ä¿¡æ¯ ç产è¿åº¦ è¿åº¦æ¡ |
| | | export function progress(param1, param2) { |
| | | // param1 æ¥å·¥æ°é |
| | | // param2 任塿°é |
| | | |
| | | // æ¿å°æ°æ®ä¹åéè¦è®¡ç®åºç¸å¯¹é¿åº¦ param2çç¸å¯¹é¿åº¦ä¸º100 |
| | | let relativeValue = ''// ç¸å¯¹å¼ 绿è²èæ¯ |
| | | |
| | | relativeValue = (param1 / param2) * 100 |
| | | // ç¾åæ¯æ°å¼çä½ç½® |
| | | var position = 'right' |
| | | // if (param1 >= 50) { |
| | | // position = 'inside'; |
| | | // } else if (param1 < 50) { |
| | | // position = 'right'; |
| | | // } |
| | | |
| | | var option = { |
| | | animation: false, |
| | | // animation: false, // åæ¶å¨ç» |
| | | // animationDuration: 5000, |
| | | grid: { |
| | | top: 'center', |
| | | left: '0%', |
| | | right: '0%', |
| | | // height: '%', |
| | | // containLabel: false |
| | | containLabel: true |
| | | |
| | | }, |
| | | xAxis: { |
| | | type: 'value', |
| | | axisLabel: { |
| | | show: false |
| | | }, |
| | | max: 100, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | } |
| | | }, |
| | | yAxis: [{ |
| | | type: 'category', |
| | | data: [], |
| | | axisLabel: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | z: 10 |
| | | }, { |
| | | type: 'category', |
| | | axisLabel: { |
| | | show: false |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | data: [] |
| | | }], |
| | | series: [{ |
| | | name: '', |
| | | type: 'bar', |
| | | barWidth: '100%', |
| | | // barMaxWidth: '100%', |
| | | label: { |
| | | normal: { |
| | | show: true, |
| | | // position: ['24', '38%'], |
| | | position: (param1.toString() + param2.toString()).length <= 6 ? ['24', '38%'] : 'insideLeft', |
| | | // formatter: '{c} %', |
| | | formatter: param1 + '/' + param2, |
| | | textStyle: { |
| | | color: '#FFFFFF', |
| | | fontWeight: 'bold', |
| | | fontFamily: 'Microsoft YaHei', |
| | | fontSize: 18 |
| | | } |
| | | } |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | barBorderRadius: 5, |
| | | shadowBlur: 10, |
| | | shadowColor: '#111', |
| | | color: '#2FD04F' |
| | | } |
| | | }, |
| | | // data: [param1], |
| | | data: [relativeValue], |
| | | z: 10 |
| | | }, { |
| | | type: 'bar', |
| | | barWidth: '100%', |
| | | yAxisIndex: 1, |
| | | silent: true, |
| | | // barMaxWidth: '100%', |
| | | itemStyle: { |
| | | normal: { |
| | | barBorderRadius: 5, |
| | | color: '#42475B' |
| | | } |
| | | }, |
| | | // data: [param2] |
| | | data: [100] |
| | | }] |
| | | } |
| | | |
| | | return option |
| | | } |
| | | |
| | | // éè´è®¢å |
| | | export function cgddchart(data1, data2, data3) { |
| | | // å¾å°æå¤§å¼ 5çåæ° |
| | | |
| | | let max = Math.max(Math.max(data1, data2), data3) + 5 |
| | | if (max % 5 !== 0) { |
| | | max = 5 - max % 5 + max |
| | | } |
| | | const option = { |
| | | backgroundColor: 'transparent', |
| | | tooltip: { |
| | | formatter: '{a} <br/>{c} {b}' |
| | | }, |
| | | series: [ |
| | | { |
| | | name: 'æ¬æéè´è®¢åæ°', |
| | | type: 'gauge', |
| | | color: ['#f00'], |
| | | min: 0, |
| | | max: max, |
| | | splitNumber: 5, |
| | | radius: '70%', |
| | | center: ['17%', '48%'], |
| | | axisLine: { // åæ è½´çº¿ |
| | | lineStyle: { // 屿§lineStyleæ§å¶çº¿æ¡æ ·å¼ |
| | | width: 10, |
| | | color: [ |
| | | [0.4, '#09d8f2'], |
| | | [1, '#00FFFFF'] |
| | | ] |
| | | }, |
| | | backgroundColor: 'none' |
| | | }, |
| | | tooltip: { |
| | | show: false |
| | | }, |
| | | axisTick: { // åæ è½´å°æ è®° |
| | | length: 10, // 屿§lengthæ§å¶çº¿é¿ |
| | | lineStyle: { // 屿§lineStyleæ§å¶çº¿æ¡æ ·å¼ |
| | | color: 'auto' |
| | | } |
| | | }, |
| | | splitLine: { // åé线 |
| | | length: 10, // 屿§lengthæ§å¶çº¿é¿ |
| | | lineStyle: { // 屿§lineStyleï¼è¯¦è§lineStyleï¼æ§å¶çº¿æ¡æ ·å¼ |
| | | color: colorY |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | borderRadius: 1, |
| | | // color: 'rgba(255,255,255,0.7)', |
| | | color: '#00FFFF', |
| | | padding: 1, |
| | | fontSize: 18 |
| | | }, |
| | | title: { |
| | | // å
¶ä½å±æ§é»è®¤ä½¿ç¨å
¨å±ææ¬æ ·å¼ï¼è¯¦è§TEXTSTYLE |
| | | // fontWeight: 'bolder', |
| | | fontSize: 22, |
| | | fontFamily: 'Microsoft YaHei', |
| | | fontColor: '#FFF', |
| | | color: '#FFF', |
| | | paddingTop: 20, |
| | | offsetCenter: [0, '120%'] |
| | | // fontStyle: 'italic' |
| | | }, |
| | | itemStyle: { |
| | | // color: '#1092ff' |
| | | color: '#09d8f2' |
| | | }, |
| | | detail: { |
| | | shadowOffsetX: 0, |
| | | shadowOffsetY: 0, |
| | | fontFamily: 'digital', |
| | | fontSize: 26, |
| | | color: '#fff', |
| | | rich: {}, |
| | | offsetCenter: [0, '90%'], |
| | | |
| | | formatter: function(value) { |
| | | return value |
| | | } |
| | | }, |
| | | data: [{ |
| | | value: data1, |
| | | name: 'æ¬æéè´è®¢åæ°' |
| | | }] |
| | | }, |
| | | { |
| | | name: 'æ¬æå°è´§åæ°', |
| | | type: 'gauge', |
| | | color: ['#f00'], |
| | | min: 0, |
| | | max: max, |
| | | splitNumber: 5, |
| | | radius: '70%', |
| | | center: ['50%', '48%'], |
| | | axisLine: { // åæ è½´çº¿ |
| | | lineStyle: { // 屿§lineStyleæ§å¶çº¿æ¡æ ·å¼ |
| | | width: 10, |
| | | color: [ |
| | | [0.4, '#09d8f2'], |
| | | [1, '#00FFFFF'] |
| | | ] |
| | | }, |
| | | backgroundColor: 'none' |
| | | }, |
| | | tooltip: { |
| | | show: false |
| | | }, |
| | | axisTick: { // åæ è½´å°æ è®° |
| | | length: 10, // 屿§lengthæ§å¶çº¿é¿ |
| | | lineStyle: { // 屿§lineStyleæ§å¶çº¿æ¡æ ·å¼ |
| | | color: 'auto' |
| | | } |
| | | }, |
| | | splitLine: { // åé线 |
| | | length: 10, // 屿§lengthæ§å¶çº¿é¿ |
| | | lineStyle: { // 屿§lineStyleï¼è¯¦è§lineStyleï¼æ§å¶çº¿æ¡æ ·å¼ |
| | | color: colorY |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | borderRadius: 1, |
| | | // color: 'rgba(255,255,255,0.7)', |
| | | color: '#00FFFF', |
| | | padding: 1, |
| | | fontSize: 18 |
| | | }, |
| | | title: { |
| | | // å
¶ä½å±æ§é»è®¤ä½¿ç¨å
¨å±ææ¬æ ·å¼ï¼è¯¦è§TEXTSTYLE |
| | | // fontWeight: 'bolder', |
| | | fontSize: 22, |
| | | fontColor: '#FFF', |
| | | color: '#FFF', |
| | | fontFamily: 'Microsoft YaHei', |
| | | paddingTop: 20, |
| | | offsetCenter: [0, '120%'] |
| | | // fontStyle: 'italic' |
| | | }, |
| | | itemStyle: { |
| | | // color: '#1092ff' |
| | | color: '#09d8f2' |
| | | }, |
| | | detail: { |
| | | shadowOffsetX: 0, |
| | | shadowOffsetY: 0, |
| | | // borderWidth: 1, |
| | | textBorderColor: '#000', |
| | | textBorderWidth: 1, |
| | | textShadowBlur: 1, |
| | | textShadowColor: colorY, |
| | | textShadowOffsetX: 0, |
| | | textShadowOffsetY: 0, |
| | | paddingTop: 10, |
| | | fontFamily: 'digital', |
| | | fontSize: 20, |
| | | width: 30, |
| | | color: '#fff', |
| | | rich: {}, |
| | | offsetCenter: [0, '90%'], |
| | | formatter: function(value) { |
| | | // console.info(value) |
| | | // return (value * 10 + '%') |
| | | return value |
| | | } |
| | | }, |
| | | data: [{ |
| | | value: data2, |
| | | name: 'æ¬æå°è´§åæ°' |
| | | }] |
| | | }, |
| | | { |
| | | name: 'æ¬æéè´å
¥åºåæ°', |
| | | type: 'gauge', |
| | | color: ['#f00'], |
| | | min: 0, |
| | | max: max, |
| | | splitNumber: 5, |
| | | radius: '70%', |
| | | center: ['83%', '48%'], |
| | | axisLine: { // åæ è½´çº¿ |
| | | lineStyle: { // 屿§lineStyleæ§å¶çº¿æ¡æ ·å¼ |
| | | width: 10, |
| | | color: [ |
| | | [0.4, '#09d8f2'], |
| | | [1, '#00FFFFF'] |
| | | ] |
| | | }, |
| | | backgroundColor: 'none' |
| | | }, |
| | | tooltip: { |
| | | show: false |
| | | }, |
| | | axisTick: { // åæ è½´å°æ è®° |
| | | length: 10, // 屿§lengthæ§å¶çº¿é¿ |
| | | lineStyle: { // 屿§lineStyleæ§å¶çº¿æ¡æ ·å¼ |
| | | color: 'auto' |
| | | } |
| | | }, |
| | | splitLine: { // åé线 |
| | | length: 10, // 屿§lengthæ§å¶çº¿é¿ |
| | | lineStyle: { // 屿§lineStyleï¼è¯¦è§lineStyleï¼æ§å¶çº¿æ¡æ ·å¼ |
| | | color: colorY |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | borderRadius: 1, |
| | | // color: 'rgba(255,255,255,0.7)', |
| | | color: '#00FFFF', |
| | | padding: 1, |
| | | fontSize: 18 |
| | | }, |
| | | title: { |
| | | // å
¶ä½å±æ§é»è®¤ä½¿ç¨å
¨å±ææ¬æ ·å¼ï¼è¯¦è§TEXTSTYLE |
| | | // fontWeight: 'bolder', |
| | | fontSize: 22, |
| | | fontColor: '#FFF', |
| | | color: '#FFF', |
| | | fontFamily: 'Microsoft YaHei', |
| | | paddingTop: 20, |
| | | offsetCenter: [0, '120%'] |
| | | // fontStyle: 'italic' |
| | | }, |
| | | itemStyle: { |
| | | // color: '#1092ff' |
| | | color: '#09d8f2' |
| | | }, |
| | | detail: { |
| | | shadowOffsetX: 0, |
| | | shadowOffsetY: 0, |
| | | // borderWidth: 1, |
| | | textBorderColor: '#000', |
| | | textBorderWidth: 1, |
| | | textShadowBlur: 1, |
| | | textShadowColor: colorY, |
| | | textShadowOffsetX: 0, |
| | | textShadowOffsetY: 0, |
| | | paddingTop: 10, |
| | | fontFamily: 'digital', |
| | | fontSize: 20, |
| | | width: 30, |
| | | color: '#fff', |
| | | rich: {}, |
| | | offsetCenter: [0, '90%'], |
| | | formatter: function(value) { |
| | | return value |
| | | } |
| | | }, |
| | | data: [{ |
| | | value: data3, |
| | | name: `æ¬æéè´å
¥åºåæ°` |
| | | }] |
| | | } |
| | | |
| | | ] |
| | | } |
| | | return option |
| | | } |
| | |
| | | <div class="bodyTopButtonGroup" style="justify-content: space-between"> |
| | | <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">æ°å¢</el-button> |
| | | <div style="display: flex"> |
| | | <el-button |
| | | v-waves |
| | | icon="el-icon-refresh-right" |
| | | @click="syncSeaveSearchPartner" |
| | | >忥徿¥åä½ |
| | | </el-button> |
| | | <!-- <el-button--> |
| | | <!-- v-waves--> |
| | | <!-- icon="el-icon-refresh-right"--> |
| | | <!-- @click="syncSeaveSearchPartner"--> |
| | | <!-- >忥徿¥åä½--> |
| | | <!-- </el-button>--> |
| | | <el-button v-waves icon="el-icon-download" @click="upload">导å
¥</el-button> |
| | | </div> |
| | | </div> |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="kb_dashboard"> |
| | | <!-- æç©ºèæ¯--> |
| | | <div ref="starsRef" class="stars"> |
| | | <div v-for="(item, index) in starsCount" :key="index" class="star"/> |
| | | </div> |
| | | |
| | | <div class="kb_header"> |
| | | <div class="flex_c_c kb_header_text"> |
| | | <div id="topBarLeft" style="width:600px;height:100%"/> |
| | | éå·¥è½¦é´æ°ååçæ¿ |
| | | <div id="topBarRight" style="width:600px;height:100%;transform:rotate(180deg);"/> |
| | | </div> |
| | | <div class="kb_headTime"> |
| | | <span>{{ headTime }}</span> |
| | | </div> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-between;padding:0 20px 20px 20px"> |
| | | <!-- 左边--> |
| | | <div style="width: 1400px ;height: 969px;" class="flex_c_b"> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="cxjg" class="svg_class"/> |
| | | 产线å å·¥ä¸ä»»å¡ |
| | | </div> |
| | | <div class="lineContent horn"> |
| | | <div v-for="item in lineContent3" :key="item.workcode" class="kb_left_top_block"> |
| | | <div class="kb_block02 kb_pd10"> |
| | | <div> |
| | | <div>éå®è®¢å:{{ item.saleordercode }}</div> |
| | | <div class="kb_mt10"> |
| | | å å·¥åå·:{{ item.workcode }} |
| | | </div> |
| | | <div class="kb_mt10"> |
| | | 产ååç§°:{{ item.partname }} |
| | | </div> |
| | | <div class="kb_mt10"> |
| | | 任塿°é:{{ parseFloat(item.qty) }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="kb_block03 kb_pd10 "> |
| | | <div v-if="item.children&&item.children.length>0" class="flex_s_c"> |
| | | <div |
| | | v-for="(it,ind) in item.children" |
| | | :key="ind" |
| | | class="kb_block03_content flex_c_c" |
| | | > |
| | | <div> |
| | | <div class="content01">{{ it.stepname }}</div> |
| | | </div> |
| | | <div class="content02Parent"> |
| | | <div class="content02"> |
| | | <div class="content02_1 ">ä»»å¡</div> |
| | | <div class="content02_2 borderTop ">{{ parseFloat(it.planqty) }}</div> |
| | | </div> |
| | | <div class="content02"> |
| | | <div class="content02_1 ">åæ ¼</div> |
| | | <div class="content02_2 borderTop ">{{ parseFloat(it.goodqty) }}</div> |
| | | </div> |
| | | <div class="content02" style="border-right: 0"> |
| | | <div class="content02_1 ">ä¸è¯</div> |
| | | <div class="content02_2 borderTop ">{{ parseFloat(it.ngqty) }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="item.children&&item.children.length>0" class="kb_block03_02 flex_s_c"> |
| | | <div |
| | | v-for="(it,ind) in item.children" |
| | | :key="ind" |
| | | class="kb_block03_02_content flex_c_c" |
| | | > |
| | | <div class="flex_c_c content01"> |
| | | <div |
| | | v-if="it.status==='START'&&(parseFloat(it.ngqty)===0||it.ngqty==='')&&(parseFloat(it.goodqty)===0||it.goodqty==='')" |
| | | class="circle" |
| | | style="background-color: blue;" |
| | | /> |
| | | <div |
| | | v-else-if="it.status==='ALLO'&&(parseFloat(it.ngqty)===0||it.ngqty==='')&&(parseFloat(it.goodqty)===0||it.goodqty==='')" |
| | | class="circle" |
| | | style="background-color: rgb(255 255 255)" |
| | | /> |
| | | <div |
| | | v-else-if="parseFloat(it.ngqty)+parseFloat(it.goodqty)>=parseFloat(it.planqty)" |
| | | class="circle" |
| | | /> |
| | | <div v-else class="circleYellow"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="cxmc" class="svg_class"/> |
| | | 产线å å·¥ä»»å¡ |
| | | </div> |
| | | <div class="lineContent horn"> |
| | | <el-table |
| | | ref="tableDataLeftBottomRef" |
| | | :data="tableDataLeftBottom" |
| | | class="tableData" |
| | | style="width: 100%;" |
| | | :header-cell-style="headerCellStyle" |
| | | :cell-style="cellStyle" |
| | | height="428" |
| | | > |
| | | <el-table-column |
| | | prop="RowNum" |
| | | label="åºå·" |
| | | width="60" |
| | | /> |
| | | |
| | | <el-table-column |
| | | prop="status" |
| | | width="80" |
| | | label="ç¶æ" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.status==='ALLO'">已派å</div> |
| | | <div v-if="row.status==='START'">å¼å·¥</div> |
| | | <div v-if="row.status==='NEW'">æ°å·¥å</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="lm_date" |
| | | label="æ´¾åæ¶é´" |
| | | width="120" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.lm_date.substring(0, 10) }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="éå®è®¢åå·" |
| | | 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="wo_code" |
| | | label="å å·¥åå·" |
| | | width="190" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产ååç§°" |
| | | width="350" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="任塿°é" |
| | | width="105" |
| | | /> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="å®å·¥æ°é" |
| | | width="105" |
| | | /> |
| | | <el-table-column |
| | | prop="ng_qty" |
| | | label="ä¸è¯æ°é" |
| | | width="105" |
| | | /> |
| | | <el-table-column |
| | | label="宿ç" |
| | | width="105" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | |
| | | <!-- label="é¢è®¡å¼å§"--> |
| | | <!-- width="140"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div>{{ row.planstartdate.substring(0, 10) }}</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop=""--> |
| | | <!-- label="é¢è®¡ç»æ"--> |
| | | <!-- width="140"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div>{{ row.planenddate.substring(0, 10) }}</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <!-- å³è¾¹--> |
| | | <div style="width: 450px;height: 969px;" class="flex_c_b"> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="drwg" class="svg_class"/> |
| | | 彿¥å®å·¥äº§åæ°éæè¡ |
| | | </div> |
| | | <div class="lineContent horn"> |
| | | <el-table |
| | | ref="tableDataRightTopRef" |
| | | :data="tableDataRightTop" |
| | | class="tableData" |
| | | style="width: 100%;" |
| | | :header-cell-style="headerCellStyle" |
| | | :cell-style="cellStyle" |
| | | height="428" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | width="60" |
| | | /> |
| | | <el-table-column |
| | | prop="linename" |
| | | width="125" |
| | | label="产线" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | width="160" |
| | | label="产å" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="æ°é" |
| | | width="90" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat(row.good_qty) }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | | </div> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="top5" class="svg_class"/> |
| | | ä¸å¨ä¸è¯Top5 |
| | | </div> |
| | | <div class="lineContent horn"> |
| | | <div id="bar01" class="flex_c_c" style="width: 100%;height:100%"/> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import './kbCommon.css' |
| | | import {bar02, kbTop, loadEcharts} from '@/utils/myEcharts' |
| | | import { |
| | | LineSearchBottomLeftData, |
| | | LineSearchBottomRightData, |
| | | LineSearchTopLeftData, |
| | | LineSearchTopRightData, |
| | | ShopSearch |
| | | } from '@/api/dzkb' |
| | | import {parseTime} from '@/utils' |
| | | |
| | | export default { |
| | | name: 'Cjsc', |
| | | data() { |
| | | return { |
| | | headTime: '', |
| | | tableDataRightTop: [], |
| | | tableDataRightTopTemp: [], |
| | | tableDataLeftBottom: [], |
| | | tableDataLeftBottomTemp: [], |
| | | lineContent3: [], |
| | | ShopArr: ['101'], // 车é´ç¼ç æ°ç» //éå·¥è½¦é´ |
| | | |
| | | starsCount: 800, // æææ°é |
| | | distance: 900 // é´è· |
| | | |
| | | } |
| | | }, |
| | | created() { |
| | | setInterval(this.getNowTime, 1000) |
| | | |
| | | // 䏤尿¶çæ¿å·æ°ä¸æ¬¡ |
| | | setInterval(() => { |
| | | window.location.reload() |
| | | }, 1000 * 60 * 120) |
| | | }, |
| | | mounted() { |
| | | this.getTopBar() |
| | | |
| | | this.getShopSearch() |
| | | this.setStarsRef() |
| | | }, |
| | | methods: { |
| | | setStarsRef() { |
| | | const starNodes = Array.from(this.$refs.starsRef.children) |
| | | starNodes.forEach(item => { |
| | | const speed = 0.2 + Math.random() * 1 |
| | | const thisDistance = this.distance + Math.random() * 300 |
| | | item.style.transformOrigin = `0 0 ${thisDistance}px` |
| | | item.style.transform = ` |
| | | translate3d(0,0,-${thisDistance}px) |
| | | rotateY(${Math.random() * 360}deg) |
| | | rotateX(${Math.random() * -50}deg) |
| | | scale(${speed},${speed})` |
| | | }) |
| | | }, |
| | | // è·å车é´ç¼ç |
| | | async getShopSearch() { |
| | | // const res1 = await ShopSearch() |
| | | // if (res1.code === '200') { |
| | | // this.ShopArr = [] |
| | | // res1.data.forEach(item => { |
| | | // this.ShopArr.push(item.org_code) |
| | | // }) |
| | | |
| | | // if (this.ShopArr.length > 0) { |
| | | this.getShopSearchLine() |
| | | this.getRightRightData() |
| | | this.getLeftBottomData() |
| | | this.getEcharts() |
| | | // } |
| | | // } |
| | | // if (this.ShopArr.length > 0) { |
| | | // setInterval(() => { |
| | | // this.ShopSearchTask = ShopSearch().then(res1 => { |
| | | // if (res1.code === '200') { |
| | | // this.ShopArr = [] |
| | | // res1.data.forEach(item => { |
| | | // this.ShopArr.push(item.org_code) |
| | | // }) |
| | | // } |
| | | // }) |
| | | // }, 1000 * 60) |
| | | // } |
| | | }, |
| | | // 产线å å·¥ä¸ä»»å¡ |
| | | getShopSearchLine() { |
| | | let length, count |
| | | LineSearchTopLeftData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 3) // éè¦è½®æçç»æ° 3个为ä¸ç» |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | this.number1 = this.lineContent.length |
| | | }) |
| | | |
| | | let start = 0 |
| | | const timer = setInterval(() => { |
| | | if (Math.floor(start / 3) === count && count !== 0) { |
| | | start = 0 |
| | | LineSearchTopLeftData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 3) // éè¦è½®æçç»æ° 3个为ä¸ç» |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | |
| | | this.number1 = this.lineContent.length |
| | | }) |
| | | } else if (count === 0) { |
| | | clearInterval(timer) |
| | | this.getShopSearchLine() |
| | | } |
| | | this.lineContent3 = this.lineContent.slice(start, start + 3) |
| | | start = start + 3 |
| | | }, 1000 * 10) |
| | | }, |
| | | |
| | | // è·åå³ä¸æ°æ® 彿¥å®å·¥äº§åæ°éæè¡ |
| | | getRightRightData() { |
| | | let startValue = 0 // åå§å¼ |
| | | const scale = 10// å»åº¦ |
| | | |
| | | LineSearchTopRightData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.tableDataRightTopTemp = res.data |
| | | |
| | | this.tableDataRightTop = this.tableDataRightTopTemp.slice(startValue, startValue + scale) |
| | | |
| | | const loop = Math.floor(this.tableDataRightTopTemp.length / scale)// éè¦å¾ªç¯çæ¬¡æ° |
| | | let nowLoop = 0// å½å循ç¯çæ¬¡æ° |
| | | |
| | | const timer = setInterval(() => { |
| | | startValue = startValue + scale |
| | | this.tableDataRightTop = this.tableDataRightTopTemp.slice(startValue, startValue + scale) |
| | | if (nowLoop === loop) { |
| | | clearInterval(timer) |
| | | this.getRightRightData() |
| | | } |
| | | |
| | | nowLoop++ |
| | | }, 1000 * 10) |
| | | }) |
| | | }, |
| | | // 产线å å·¥ä»»å¡ å·¦ä¸æ°æ® |
| | | getLeftBottomData() { |
| | | let startValue = 0 // åå§å¼ |
| | | const scale = 10// å»åº¦ |
| | | |
| | | LineSearchBottomLeftData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.tableDataLeftBottomTemp = res.data |
| | | this.tableDataLeftBottom = this.tableDataLeftBottomTemp.slice(startValue, startValue + scale) |
| | | |
| | | const loop = Math.floor(this.tableDataLeftBottomTemp.length / scale)// éè¦å¾ªç¯çæ¬¡æ° |
| | | let nowLoop = 0// å½å循ç¯çæ¬¡æ° |
| | | |
| | | const timer = setInterval(() => { |
| | | startValue = startValue + scale |
| | | this.tableDataLeftBottom = this.tableDataLeftBottomTemp.slice(startValue, startValue + scale) |
| | | if (nowLoop === loop) { |
| | | clearInterval(timer) |
| | | this.getLeftBottomData() |
| | | } |
| | | |
| | | nowLoop++ |
| | | }, 1000 * 10) |
| | | }) |
| | | }, |
| | | |
| | | getEcharts() { |
| | | let dataArr = [30, 20, 20, 18, 10] |
| | | let titlenameArr = ['é¢è²', '尺寸', 'æ°å³', 'æ¯åº', 'è£ç'] |
| | | LineSearchBottomRightData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | dataArr = res.data.map(i => i.cont) |
| | | titlenameArr = res.data.map(i => i.name) |
| | | loadEcharts('bar01', bar02(dataArr, titlenameArr)) |
| | | }) |
| | | |
| | | setInterval(() => { |
| | | LineSearchBottomRightData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | dataArr = res.data.map(i => i.cont) |
| | | titlenameArr = res.data.map(i => i.name) |
| | | loadEcharts('bar01', bar02(dataArr, titlenameArr)) |
| | | }) |
| | | }, 1000 * 10) |
| | | }, |
| | | // è·åtopEcharts |
| | | getTopBar() { |
| | | loadEcharts('topBarLeft', kbTop()) |
| | | loadEcharts('topBarRight', kbTop()) |
| | | }, |
| | | // è·åå½åæ¶é´ |
| | | getNowTime() { |
| | | const dt = new Date() |
| | | const wk = dt.getDay() |
| | | const y = dt.getFullYear() |
| | | const m = (dt.getMonth() + 1 + '').padStart(2, '0') |
| | | const d = (dt.getDate() + '').padStart(2, '0') |
| | | |
| | | const hh = (dt.getHours() + '').padStart(2, '0') |
| | | const mm = (dt.getMinutes() + '').padStart(2, '0') |
| | | const ss = (dt.getSeconds() + '').padStart(2, '0') |
| | | const weeks = ['æææ¥', 'ææä¸', 'ææäº', 'ææä¸', 'ææå', 'ææäº', 'ææå
'] |
| | | const week = weeks[wk] |
| | | |
| | | this.headTime = `${y}-${m}-${d} ${hh}:${mm}:${ss} ${week}` |
| | | }, |
| | | headerCellStyle() { |
| | | return { |
| | | backgroundColor: '#000', |
| | | padding: '10px 0', |
| | | textAlign: 'center', |
| | | color: '#07acc2', |
| | | border: 'none', |
| | | fontSize: '18px' |
| | | } |
| | | }, |
| | | cellStyle() { |
| | | return { |
| | | padding: '7px 0', |
| | | textAlign: 'center', |
| | | backgroundColor: '#000', |
| | | color: '#fff', |
| | | border: 'none', |
| | | fontSize: '18px' |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | $main_color: #09d8f2; |
| | | $color01: #00FFFF; |
| | | |
| | | .tableData { |
| | | background: #000; |
| | | } |
| | | |
| | | .el-table::before { |
| | | height: 0; |
| | | } |
| | | |
| | | .el-table__empty-text { |
| | | color: $main_color; |
| | | } |
| | | |
| | | .kb_left_top_block { |
| | | width: 100%; |
| | | height: 143px; |
| | | display: flex; |
| | | font-size: 16px; |
| | | border-bottom: 1px solid $main_color; |
| | | justify-content: flex-start; |
| | | |
| | | .kb_block02 { |
| | | width: 304px; |
| | | display: flex; |
| | | align-items: center; |
| | | border-right: 1px solid $main_color; |
| | | } |
| | | |
| | | .kb_block03 { |
| | | width: 1020px; |
| | | font-size: 16px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | border-radius: 5px; |
| | | |
| | | .kb_block03_content { |
| | | border: 1px solid $main_color; |
| | | width: 180px; |
| | | height: 80px; |
| | | margin-right: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content01 { |
| | | height: 30px; |
| | | width: 100%; |
| | | border-bottom: 1px solid $main_color; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .content02Parent { |
| | | display: flex; |
| | | |
| | | .content02 { |
| | | width: 60px; |
| | | border-right: 1px solid $main_color; |
| | | |
| | | .content02_1 { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 25px; |
| | | } |
| | | |
| | | .content02_2 { |
| | | height: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .borderTop { |
| | | border-top: 1px solid $main_color; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | .kb_block03_02 { |
| | | margin-top: 15px; |
| | | display: flex; |
| | | |
| | | .kb_block03_02_content { |
| | | width: 180px; |
| | | margin-right: 15px; |
| | | |
| | | .content01 { |
| | | .circle { |
| | | width: 26px; |
| | | height: 26px; |
| | | background-color: #00ff8b; |
| | | border-radius: 50%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .kb_left_top_block:nth-child(3n) { |
| | | border-bottom: none !important; |
| | | } |
| | | |
| | | .circleYellow { |
| | | width: 26px; |
| | | height: 26px; |
| | | background-color: rgb(255 255 0); |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | </style> |
| | | |
| | | <!--æç©º--> |
| | | <style lang="css" scoped> |
| | | @keyframes rotate { |
| | | 0% { |
| | | transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0); |
| | | } |
| | | 100% { |
| | | transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg); |
| | | } |
| | | } |
| | | |
| | | .stars { |
| | | transform: perspective(500px); |
| | | transform-style: preserve-3d; |
| | | position: absolute; |
| | | perspective-origin: 50% 100%; |
| | | left: 45%; |
| | | animation: rotate 90s infinite linear; |
| | | bottom: 0; |
| | | z-index: 102; |
| | | } |
| | | |
| | | .star { |
| | | width: 2px; |
| | | height: 2px; |
| | | /*background: #f7f7b6;*/ |
| | | background: #8edffc; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | backface-visibility: hidden; |
| | | z-index: 102; |
| | | } |
| | | </style> |
| | |
| | | color: #fff; |
| | | background-size: 1920px 1080px; |
| | | /*background: url("../../assets/images/kb_bg.png") no-repeat;*/ |
| | | |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .kb_header { |
| | |
| | | justify-content: space-evenly; |
| | | /*align-content: center;*/ |
| | | } |
| | | .flex_c_b { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | align-content: space-between; |
| | | } |
| | | |
| | | .flex_e_c { |
| | | display: flex; |
| | |
| | | margin-top: 10px; |
| | | } |
| | | |
| | | .kb_mt5 { |
| | | margin-top: 5px; |
| | | .kb_mt10 { |
| | | margin-top: 10px; |
| | | } |
| | | /*å
¬åæ ·å¼*/ |
| | | .MarqueeTipsContentClass { |
| | |
| | | /*}*/ |
| | | |
| | | /*scrollbar END*/ |
| | | |
| | | |
| | | .smallTitle{ |
| | | height: 35px; |
| | | display: flex; |
| | | color: #00ffff; |
| | | font-size: 26px; |
| | | /*align-content: flex-start;*/ |
| | | } |
| | | |
| | | .svg_class{ |
| | | margin-right: 10px; |
| | | font-size: 28px; |
| | | } |
| | | |
| | | |
| | | |
| | | .lineContent { |
| | | height: 435px; |
| | | border: 1px solid #09d8f2; |
| | | border-radius: 5px; |
| | | padding: 2px; |
| | | box-shadow: #00FFFF 0 0 10px; |
| | | } |
| | | |
| | | .lineContentCenter { |
| | | height: 935px; |
| | | border: 1px solid #09d8f2; |
| | | border-radius: 5px; |
| | | padding: 2px; |
| | | box-shadow: #00FFFF 0 0 10px; |
| | | } |
| | | |
| | | .horn { |
| | | background: linear-gradient(#00FFFF, #00FFFF) left top, |
| | | linear-gradient(#00FFFF, #00FFFF) left top, |
| | | linear-gradient(#00FFFF, #00FFFF) right top, |
| | | linear-gradient(#00FFFF, #00FFFF) right top, |
| | | linear-gradient(#00FFFF, #00FFFF) left bottom, |
| | | linear-gradient(#00FFFF, #00FFFF) left bottom, |
| | | linear-gradient(#00FFFF, #00FFFF) right bottom, |
| | | linear-gradient(#00FFFF, #00FFFF) right bottom; |
| | | background-repeat: no-repeat; |
| | | background-size: 2px 20px, 20px 2px; |
| | | } |
| | |
| | | <template> |
| | | <div> |
| | | <div class="kb_dashboard"> |
| | | <!-- æç©ºèæ¯--> |
| | | <div ref="starsRef" class="stars"> |
| | | <div v-for="(item, index) in starsCount" :key="index" class="star"/> |
| | | </div> |
| | | |
| | | <div class="kb_header"> |
| | | <div class="flex_c_c kb_header_text"> |
| | | è£
é
车é´çæ¿ |
| | | <div id="topBarLeft" style="width:600px;height:100%"/> |
| | | è£
é
è½¦é´æ°ååçæ¿ |
| | | <div id="topBarRight" style="width:600px;height:100%;transform:rotate(180deg);"/> |
| | | </div> |
| | | <div class="kb_headerPic" /> |
| | | <div class="kb_headTime"> |
| | | <span>{{ headTime }}</span> |
| | | </div> |
| | | </div> |
| | | <MarqueeTips |
| | | :content="MarqueeTipsContent" |
| | | class="MarqueeTipsContentClass" |
| | | :speed="180" |
| | | /> |
| | | <!-- :speed="speed"--> |
| | | <div class="kb_content"> |
| | | <div class="kb_left"> |
| | | <!-- 1--> |
| | | <div class="kb_left_top_title01 kb_title_text"> |
| | | <!-- <div class="PG01" />--> |
| | | <!-- <svg-icon icon-class="sccx" />--> |
| | | 产线å å·¥ä¸ä»»å¡ |
| | | <div style="margin-left: 30px">{{ number1 }} å</div> |
| | | </div> |
| | | |
| | | <div class="kb_left_top kb_pd10"> |
| | | <div class="kb_left_top02"> |
| | | <div style="display: flex;justify-content: space-between;padding:0 20px 20px 20px"> |
| | | <!-- 左边--> |
| | | <div style="width: 1400px ;height: 969px;" class="flex_c_b"> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="cxjg" class="svg_class"/> |
| | | 产线å å·¥ä¸ä»»å¡ |
| | | </div> |
| | | <div class="lineContent horn"> |
| | | <div v-for="item in lineContent3" :key="item.workcode" class="kb_left_top_block"> |
| | | <div class="kb_block02 kb_pd10"> |
| | | <div> |
| | | <div>éå®åå·:{{ item.saleordercode }}</div> |
| | | <div class="kb_mt5"> |
| | | <div>éå®è®¢å:{{ item.saleordercode }}</div> |
| | | <div class="kb_mt10"> |
| | | å å·¥åå·:{{ item.workcode }} |
| | | </div> |
| | | <div class="kb_mt5"> |
| | | <div class="kb_mt10"> |
| | | 产ååç§°:{{ item.partname }} |
| | | </div> |
| | | <div class="kb_mt5"> |
| | | <div class="kb_mt10"> |
| | | 任塿°é:{{ parseFloat(item.qty) }} |
| | | </div> |
| | | </div> |
| | |
| | | v-else-if="parseFloat(it.ngqty)+parseFloat(it.goodqty)>=parseFloat(it.planqty)" |
| | | class="circle" |
| | | /> |
| | | <div v-else class="circleYellow" /> |
| | | <div v-else class="circleYellow"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | <!-- 2--> |
| | | <div class="kb_left_bottom kb_pd10"> |
| | | <div class="kb_left_bottom_content"> |
| | | <div class="content_head kb_title_text">产线å å·¥ä»»å¡ |
| | | <div style="margin-left: 30px">{{ number2 }} å</div> |
| | | </div> |
| | | <div class="content_body"> |
| | | <el-table |
| | | ref="tableData" |
| | | :data="tableData" |
| | | style="width: 100%;" |
| | | :header-cell-style="headerCellStyle" |
| | | :cell-style="cellStyle" |
| | | height="440" |
| | | > |
| | | <el-table-column |
| | | prop="RowNum" |
| | | label="åºå·" |
| | | width="50" |
| | | /> |
| | | <!-- label="å å·¥ç¶æ"--> |
| | | <el-table-column |
| | | prop="status" |
| | | label="ç¶æ" |
| | | width="65" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.status==='ALLO'">已派å</div> |
| | | <div v-if="row.status==='START'">å¼å·¥</div> |
| | | <div v-if="row.status==='NEW'">æ°å·¥å</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="lm_date" |
| | | label="æ´¾åæ¶é´" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.lm_date.substring(0, 10) }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="éå®è®¢åå·" |
| | | width="178" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderCode" class="ellipsis">{{ row.saleOrderCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo_code" |
| | | label="å å·¥åå·" |
| | | width="205" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.wo_code" class="ellipsis">{{ row.wo_code }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产ååç§°" |
| | | width="150" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- prop="partspec"--> |
| | | <!-- label="è§æ ¼"--> |
| | | <!-- width="125"--> |
| | | <!-- >--> |
| | | <!-- <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="name"--> |
| | | <!-- label="åä½"--> |
| | | <!-- width="50"--> |
| | | <!-- />--> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="任塿°é" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="å®å·¥æ°é" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="ng_qty" |
| | | label="ä¸è¯æ°é" |
| | | width="85" |
| | | /> |
| | | <el-table-column |
| | | prop="wcl" |
| | | label="宿ç" |
| | | width="60" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="planenddate" |
| | | label="é¢è®¡å¼å§" |
| | | width="115" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planenddate.substring(0, 10) }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="planstartdate" |
| | | label="é¢è®¡ç»æ" |
| | | width="125" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.planstartdate.substring(0, 10) }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="cxmc" class="svg_class"/> |
| | | 产线å å·¥ä»»å¡ |
| | | </div> |
| | | <div class="lineContent horn"> |
| | | <el-table |
| | | ref="tableDataLeftBottomRef" |
| | | :data="tableDataLeftBottom" |
| | | class="tableData" |
| | | style="width: 100%;" |
| | | :header-cell-style="headerCellStyle" |
| | | :cell-style="cellStyle" |
| | | height="428" |
| | | > |
| | | <el-table-column |
| | | prop="RowNum" |
| | | label="åºå·" |
| | | width="60" |
| | | /> |
| | | |
| | | <el-table-column |
| | | prop="status" |
| | | width="80" |
| | | label="ç¶æ" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.status==='ALLO'">已派å</div> |
| | | <div v-if="row.status==='START'">å¼å·¥</div> |
| | | <div v-if="row.status==='NEW'">æ°å·¥å</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="lm_date" |
| | | label="æ´¾åæ¶é´" |
| | | width="120" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.lm_date.substring(0, 10) }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="éå®è®¢åå·" |
| | | 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="wo_code" |
| | | label="å å·¥åå·" |
| | | width="190" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | label="产ååç§°" |
| | | width="350" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="plan_qty" |
| | | label="任塿°é" |
| | | width="105" |
| | | /> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="å®å·¥æ°é" |
| | | width="105" |
| | | /> |
| | | <el-table-column |
| | | prop="ng_qty" |
| | | label="ä¸è¯æ°é" |
| | | width="105" |
| | | /> |
| | | <el-table-column |
| | | label="宿ç" |
| | | width="105" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | |
| | | <!-- label="é¢è®¡å¼å§"--> |
| | | <!-- width="140"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div>{{ row.planstartdate.substring(0, 10) }}</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | <!-- <el-table-column--> |
| | | <!-- prop=""--> |
| | | <!-- label="é¢è®¡ç»æ"--> |
| | | <!-- width="140"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div>{{ row.planenddate.substring(0, 10) }}</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="kb_right kb_pd10"> |
| | | <div class="kb_right_top kb_pd10"> |
| | | <div class="kb_right_top_content"> |
| | | <div class="content_head kb_title_text">彿¥å®å·¥äº§åæ°éæè¡</div> |
| | | <div class="content_body"> |
| | | <el-table |
| | | ref="tableDataRank" |
| | | :data="tableDataRank" |
| | | class="tableDataRank" |
| | | style="width: 100%;" |
| | | :header-cell-style="headerCellStyle" |
| | | :cell-style="cellStyle" |
| | | height="396" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | width="55" |
| | | /> |
| | | <el-table-column |
| | | prop="wkshname" |
| | | label="车é´ï¼ä¾æ¹ï¼" |
| | | width="120" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.wkshname" class="ellipsis">{{ row.wkshname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="linename" |
| | | label="产线" |
| | | width="120" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.linename" class="ellipsis">{{ row.linename }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="partname" |
| | | width="138" |
| | | label="产å" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="æ°é" |
| | | width="100" |
| | | /> |
| | | </el-table> |
| | | </div> |
| | | <!-- å³è¾¹--> |
| | | <div style="width: 450px;height: 969px;" class="flex_c_b"> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="drwg" class="svg_class"/> |
| | | 彿¥å®å·¥äº§åæ°éæè¡ |
| | | </div> |
| | | <div class="lineContent horn"> |
| | | <el-table |
| | | ref="tableDataRightTopRef" |
| | | :data="tableDataRightTop" |
| | | class="tableData" |
| | | style="width: 100%;" |
| | | :header-cell-style="headerCellStyle" |
| | | :cell-style="cellStyle" |
| | | height="428" |
| | | > |
| | | <el-table-column |
| | | type="index" |
| | | label="åºå·" |
| | | width="60" |
| | | /> |
| | | <el-table-column |
| | | prop="linename" |
| | | width="125" |
| | | label="产线" |
| | | /> |
| | | <el-table-column |
| | | prop="partname" |
| | | width="160" |
| | | label="产å" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="good_qty" |
| | | label="æ°é" |
| | | width="90" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ parseFloat(row.good_qty) }}</div> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="kb_right_bottom kb_pd10"> |
| | | <div class="kb_right_bottom_content_title kb_title_text"> |
| | | <div> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="top5" class="svg_class"/> |
| | | ä¸å¨ä¸è¯Top5 |
| | | </div> |
| | | <div class="kb_right_bottom_content"> |
| | | <div id="bar02" style="width: 100%;height:100%" /> |
| | | <div class="lineContent horn"> |
| | | <div id="bar01" class="flex_c_c" style="width: 100%;height:100%"/> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import './kbCommon.css' |
| | | import { bar02, loadEcharts } from '@/utils/myEcharts' |
| | | import {bar02, kbTop, loadEcharts} from '@/utils/myEcharts' |
| | | import { |
| | | LineSearchBottomLeftData, |
| | | LineSearchBottomRightData, |
| | | LineSearchTopLeftData, |
| | | LineSearchTopRightData, ShopSearch, WkspReportNotice |
| | | LineSearchTopRightData, |
| | | ShopSearch |
| | | } from '@/api/dzkb' |
| | | import MarqueeTips from 'vue-marquee-tips' |
| | | import {parseTime} from '@/utils' |
| | | |
| | | export default { |
| | | name: 'Index2', |
| | | components: { |
| | | MarqueeTips |
| | | }, |
| | | name: 'Cjsc', |
| | | data() { |
| | | return { |
| | | |
| | | onLine: navigator.onLine, // çå¬ç½ç»æ¯å¦å¨çº¿ |
| | | |
| | | headTime: '', |
| | | |
| | | lineContent: [], |
| | | tableDataRightTop: [], |
| | | tableDataRightTopTemp: [], |
| | | tableDataLeftBottom: [], |
| | | tableDataLeftBottomTemp: [], |
| | | lineContent3: [], |
| | | ShopArr: ['102'], // 车é´ç¼ç æ°ç» è£
é
è½¦é´ |
| | | |
| | | leftTopData: [], |
| | | tableData: [], |
| | | tableDataRank: [], |
| | | lineCodeArr: [], |
| | | starsCount: 800, // æææ°é |
| | | distance: 900 // é´è· |
| | | |
| | | ShopArr: ['CJ001'], // 车é´ç¼ç æ°ç» |
| | | |
| | | number1: '', |
| | | number2: '', |
| | | |
| | | MarqueeTipsContent: '', // å
Œ |
| | | speed: 100, // å
¬åææ¾çé度 |
| | | |
| | | MarqueeTipsTask: null, |
| | | ShopSearchTask: null, |
| | | ShopSearchLineTask: null, |
| | | TableDataRollTask: null, |
| | | TableDataRankRollTask: null, |
| | | EchartsTask: null |
| | | } |
| | | }, |
| | | |
| | | created() { |
| | | setInterval(this.getNowTime, 1000) |
| | | |
| | |
| | | }, 1000 * 60 * 120) |
| | | }, |
| | | mounted() { |
| | | // çå¬ç½ç»æ¯å¦å¨çº¿ |
| | | window.addEventListener('online', this.updateOnlineStatus) |
| | | window.addEventListener('offline', this.updateOnlineStatus) |
| | | this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true }) |
| | | }, |
| | | beforeDestroy() { |
| | | window.removeEventListener('online', this.updateOnlineStatus) |
| | | window.removeEventListener('offline', this.updateOnlineStatus) |
| | | this.getTopBar() |
| | | |
| | | this.getShopSearch() |
| | | this.setStarsRef() |
| | | }, |
| | | methods: { |
| | | // æ´æ°ç½ç»ç¶æ |
| | | updateOnlineStatus(e) { |
| | | if (e.isFirst) { |
| | | this.getValue()// è·åå¼ |
| | | } else { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: 'æç½äºï¼æ£å¨æ¼å½èç½ä¸ï¼è¯·æ£æ¥ç½ç»æ¯å¦æ£å¸¸...', |
| | | spinner: 'el-icon-loading', |
| | | customClass: 'osloading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }) |
| | | const { type } = e |
| | | this.onLine = type === 'online' |
| | | if (this.onLine) { |
| | | this.getValue() |
| | | loading.close() |
| | | this.$message.success('ç½ç»è¿æ¥æåï¼') |
| | | } else { |
| | | clearInterval(this.MarqueeTipsTask) |
| | | clearInterval(this.ShopSearchTask) |
| | | clearInterval(this.ShopSearchLineTask) |
| | | clearInterval(this.TableDataRollTask) |
| | | clearInterval(this.TableDataRankRollTask) |
| | | clearInterval(this.EchartsTask) |
| | | this.$message.error('ç½ç»æçº¿ï¼è¯·å
³æ³¨ç½ç»ç¶æï¼') |
| | | } |
| | | } |
| | | }, |
| | | // è·åå¼ |
| | | async getValue() { |
| | | // await this.getShopSearch() |
| | | await this.getShopSearchLine() |
| | | |
| | | await this.getEcharts() |
| | | await this.getTableDataRoll() |
| | | await this.getTableDataRankRoll() |
| | | await this.getMarqueeTipsContent() |
| | | await this.getMarqueeTipsContent() |
| | | }, |
| | | // è·åå
Œ |
| | | getMarqueeTipsContent() { |
| | | WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | let contentAll = '' |
| | | res.data.forEach(item => { |
| | | contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ') |
| | | }) |
| | | this.MarqueeTipsContent = contentAll |
| | | this.speed = this.MarqueeTipsContent.length / 10 |
| | | |
| | | this.MarqueeTipsTask = setInterval(() => { |
| | | WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res1 => { |
| | | let contentAll = '' |
| | | res1.data.forEach(item => { |
| | | contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ') |
| | | }) |
| | | this.MarqueeTipsContent = contentAll |
| | | this.speed = this.MarqueeTipsContent.length / 10 |
| | | }) |
| | | // }, this.speed * 1000) |
| | | }, 1000 * 60 * 5) |
| | | setStarsRef() { |
| | | const starNodes = Array.from(this.$refs.starsRef.children) |
| | | starNodes.forEach(item => { |
| | | const speed = 0.2 + Math.random() * 1 |
| | | const thisDistance = this.distance + Math.random() * 300 |
| | | item.style.transformOrigin = `0 0 ${thisDistance}px` |
| | | item.style.transform = ` |
| | | translate3d(0,0,-${thisDistance}px) |
| | | rotateY(${Math.random() * 360}deg) |
| | | rotateX(${Math.random() * -50}deg) |
| | | scale(${speed},${speed})` |
| | | }) |
| | | }, |
| | | // è·å车é´ç¼ç |
| | | async getShopSearch() { |
| | | const res1 = await ShopSearch() |
| | | if (res1.code === '200') { |
| | | this.ShopArr = [] |
| | | res1.data.forEach(item => { |
| | | this.ShopArr.push(item.org_code) |
| | | }) |
| | | } |
| | | setInterval(() => { |
| | | this.ShopSearchTask = ShopSearch().then(res1 => { |
| | | if (res1.code === '200') { |
| | | this.ShopArr = [] |
| | | res1.data.forEach(item => { |
| | | this.ShopArr.push(item.org_code) |
| | | }) |
| | | } |
| | | }) |
| | | }, 1000 * 30) |
| | | // const res1 = await ShopSearch() |
| | | // if (res1.code === '200') { |
| | | // this.ShopArr = [] |
| | | // res1.data.forEach(item => { |
| | | // this.ShopArr.push(item.org_code) |
| | | // }) |
| | | |
| | | // if (this.ShopArr.length > 0) { |
| | | this.getShopSearchLine() |
| | | this.getRightRightData() |
| | | this.getLeftBottomData() |
| | | this.getEcharts() |
| | | // } |
| | | // } |
| | | // if (this.ShopArr.length > 0) { |
| | | // setInterval(() => { |
| | | // this.ShopSearchTask = ShopSearch().then(res1 => { |
| | | // if (res1.code === '200') { |
| | | // this.ShopArr = [] |
| | | // res1.data.forEach(item => { |
| | | // this.ShopArr.push(item.org_code) |
| | | // }) |
| | | // } |
| | | // }) |
| | | // }, 1000 * 60) |
| | | // } |
| | | }, |
| | | // 产线å å·¥ä¸ä»»å¡ |
| | | getShopSearchLine() { |
| | | let length, count |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | LineSearchTopLeftData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 3) // éè¦è½®æçç»æ° 3个为ä¸ç» |
| | | this.lineContent3 = this.lineContent.slice(0, 3) |
| | | |
| | | this.number1 = this.lineContent.length |
| | | }) |
| | | |
| | | let start = 0 |
| | | this.ShopSearchLineTask = setInterval(() => { |
| | | const timer = setInterval(() => { |
| | | if (Math.floor(start / 3) === count && count !== 0) { |
| | | start = 0 |
| | | LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | LineSearchTopLeftData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.lineContent = res.data |
| | | length = this.lineContent.length |
| | | count = Math.ceil(length / 3) // éè¦è½®æçç»æ° 3个为ä¸ç» |
| | |
| | | this.number1 = this.lineContent.length |
| | | }) |
| | | } else if (count === 0) { |
| | | clearInterval(this.ShopSearchLineTask) |
| | | clearInterval(timer) |
| | | this.getShopSearchLine() |
| | | } |
| | | this.lineContent3 = this.lineContent.slice(start, start + 3) |
| | | start = start + 3 |
| | | }, 1000 * 3) |
| | | }, 1000 * 10) |
| | | }, |
| | | |
| | | // 产线å å·¥ä»»å¡ |
| | | getTableDataRoll() { |
| | | LineSearchBottomLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.tableData = res.data |
| | | this.number2 = this.tableData.length |
| | | // è·åå³ä¸æ°æ® 彿¥å®å·¥äº§åæ°éæè¡ |
| | | getRightRightData() { |
| | | let startValue = 0 // åå§å¼ |
| | | const scale = 10// å»åº¦ |
| | | |
| | | const divData = this.$refs.tableData.bodyWrapper |
| | | // æ¿å°å
ç´ åï¼å¯¹å
ç´ è¿è¡å®æ¶å¢å è·ç¦»é¡¶é¨è·ç¦»ï¼å®ç°æ»å¨ææ(æ¤é
置为æ¯100毫ç§ç§»å¨1åç´ ) |
| | | this.TableDataRollTask = setInterval(() => { |
| | | // å
ç´ èªå¢è·ç¦»é¡¶é¨1åç´ |
| | | divData.scrollTop += 1 |
| | | // divData.scrollTop += divData.scrollHeight / this.tableData.length |
| | | // 夿å
ç´ æ¯å¦æ»å¨å°åºé¨(å¯è§é«åº¦+è·ç¦»é¡¶é¨=æ´ä¸ªé«åº¦) |
| | | if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) { |
| | | // éç½®tableè·ç¦»é¡¶é¨è·ç¦» |
| | | divData.scrollTop = 0 |
| | | LineSearchBottomLeftData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.tableData = res.data |
| | | this.number2 = this.tableData.length |
| | | if (this.tableData.length > 10) { |
| | | clearInterval(this.TableDataRollTask) |
| | | this.getTableDataRoll() |
| | | } |
| | | }) |
| | | LineSearchTopRightData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.tableDataRightTopTemp = res.data |
| | | |
| | | this.tableDataRightTop = this.tableDataRightTopTemp.slice(startValue, startValue + scale) |
| | | |
| | | const loop = Math.floor(this.tableDataRightTopTemp.length / scale)// éè¦å¾ªç¯çæ¬¡æ° |
| | | let nowLoop = 0// å½å循ç¯çæ¬¡æ° |
| | | |
| | | const timer = setInterval(() => { |
| | | startValue = startValue + scale |
| | | this.tableDataRightTop = this.tableDataRightTopTemp.slice(startValue, startValue + scale) |
| | | if (nowLoop === loop) { |
| | | clearInterval(timer) |
| | | this.getRightRightData() |
| | | } |
| | | }, this.tableData.length <= 10 ? 1000 * 3 : 100) |
| | | |
| | | nowLoop++ |
| | | }, 1000 * 10) |
| | | }) |
| | | }, |
| | | // 彿¥å®å·¥äº§åæ°éæè¡ |
| | | getTableDataRankRoll() { |
| | | LineSearchTopRightData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.tableDataRank = res.data |
| | | // 产线å å·¥ä»»å¡ å·¦ä¸æ°æ® |
| | | getLeftBottomData() { |
| | | let startValue = 0 // åå§å¼ |
| | | const scale = 10// å»åº¦ |
| | | |
| | | const divData = this.$refs.tableDataRank.bodyWrapper |
| | | // æ¿å°å
ç´ åï¼å¯¹å
ç´ è¿è¡å®æ¶å¢å è·ç¦»é¡¶é¨è·ç¦»ï¼å®ç°æ»å¨ææ(æ¤é
置为æ¯100毫ç§ç§»å¨1åç´ ) |
| | | this.TableDataRankRollTask = setInterval(() => { |
| | | // å
ç´ èªå¢è·ç¦»é¡¶é¨1åç´ |
| | | // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length |
| | | divData.scrollTop += 1 |
| | | // 夿å
ç´ æ¯å¦æ»å¨å°åºé¨(å¯è§é«åº¦+è·ç¦»é¡¶é¨=æ´ä¸ªé«åº¦) |
| | | if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) { |
| | | // éç½®tableè·ç¦»é¡¶é¨è·ç¦» |
| | | divData.scrollTop = 0 |
| | | LineSearchTopRightData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | this.tableDataRank = res.data |
| | | LineSearchBottomLeftData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | this.tableDataLeftBottomTemp = res.data |
| | | this.tableDataLeftBottom = this.tableDataLeftBottomTemp.slice(startValue, startValue + scale) |
| | | |
| | | if (this.tableDataRank.length > 9) { |
| | | clearInterval(this.TableDataRankRollTask) |
| | | this.getTableDataRankRoll() |
| | | } |
| | | }) |
| | | const loop = Math.floor(this.tableDataLeftBottomTemp.length / scale)// éè¦å¾ªç¯çæ¬¡æ° |
| | | let nowLoop = 0// å½å循ç¯çæ¬¡æ° |
| | | |
| | | const timer = setInterval(() => { |
| | | startValue = startValue + scale |
| | | this.tableDataLeftBottom = this.tableDataLeftBottomTemp.slice(startValue, startValue + scale) |
| | | if (nowLoop === loop) { |
| | | clearInterval(timer) |
| | | this.getLeftBottomData() |
| | | } |
| | | }, this.tableDataRank.length <= 9 ? 1000 * 3 : 100) |
| | | |
| | | nowLoop++ |
| | | }, 1000 * 10) |
| | | }) |
| | | }, |
| | | // è·åecharts |
| | | |
| | | getEcharts() { |
| | | LineSearchBottomRightData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | loadEcharts('bar02', bar02(res.data.map(i => i.cont), res.data.map(i => i.name))) |
| | | let dataArr = [30, 20, 20, 18, 10] |
| | | let titlenameArr = ['é¢è²', '尺寸', 'æ°å³', 'æ¯åº', 'è£ç'] |
| | | LineSearchBottomRightData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | dataArr = res.data.map(i => i.cont) |
| | | titlenameArr = res.data.map(i => i.name) |
| | | loadEcharts('bar01', bar02(dataArr, titlenameArr)) |
| | | }) |
| | | |
| | | this.EchartsTask = setInterval(() => { |
| | | LineSearchBottomRightData({ shopcode: this.ShopArr.join(',') }).then(res => { |
| | | loadEcharts('bar02', bar02(res.data.map(i => i.cont), res.data.map(i => i.name))) |
| | | setInterval(() => { |
| | | LineSearchBottomRightData({shopcode: this.ShopArr.join(',')}).then(res => { |
| | | dataArr = res.data.map(i => i.cont) |
| | | titlenameArr = res.data.map(i => i.name) |
| | | loadEcharts('bar01', bar02(dataArr, titlenameArr)) |
| | | }) |
| | | }, 1000 * 15) |
| | | }, 1000 * 10) |
| | | }, |
| | | // è·åtopEcharts |
| | | getTopBar() { |
| | | loadEcharts('topBarLeft', kbTop()) |
| | | loadEcharts('topBarRight', kbTop()) |
| | | }, |
| | | // è·åå½åæ¶é´ |
| | | getNowTime() { |
| | |
| | | }, |
| | | headerCellStyle() { |
| | | return { |
| | | backgroundColor: 'rgb(30 ,33, 46)', |
| | | backgroundColor: '#000', |
| | | padding: '10px 0', |
| | | textAlign: 'center', |
| | | color: '#07acc2', |
| | | border: 'none' |
| | | border: 'none', |
| | | fontSize: '18px' |
| | | } |
| | | }, |
| | | cellStyle() { |
| | | return { |
| | | padding: '8px 0', |
| | | padding: '7px 0', |
| | | textAlign: 'center', |
| | | backgroundColor: 'rgba(30, 33, 46 )', |
| | | // backgroundColor: 'transparent', |
| | | backgroundColor: '#000', |
| | | color: '#fff', |
| | | border: 'none' |
| | | border: 'none', |
| | | fontSize: '18px' |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | $kbBorderColor: rgba(9, 216, 242, 0.4); |
| | | $kbBackgroundColor: rgba(30, 33, 46, 0.6); |
| | | .kb_content { |
| | | display: flex; |
| | | position: relative; |
| | | height: 990px; |
| | | width: 100%; |
| | | letter-spacing: 2px; |
| | | color: #fff; |
| | | <style lang="scss" scoped> |
| | | $main_color: #09d8f2; |
| | | $color01: #00FFFF; |
| | | |
| | | .kb_left { |
| | | width: 1345px; |
| | | height: 100%; |
| | | padding-left: 5px; |
| | | |
| | | .kb_left_top_title01 { |
| | | position: absolute; |
| | | top: 37px; |
| | | left: 15px; |
| | | display: flex; |
| | | color: #00ffff; |
| | | |
| | | .PG01 { |
| | | background: url("../../assets/images/GP_1.png") no-repeat; |
| | | width: 28px; |
| | | height: 12px; |
| | | margin-top: 4px; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | |
| | | .kb_left_top { |
| | | height: 495px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: flex-start; |
| | | padding-top: 70px; |
| | | |
| | | .kb_left_top02 { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: flex-start; |
| | | border: 1px solid $kbBorderColor; |
| | | height: 400px; |
| | | border-radius: 5px; |
| | | background-color: $kbBackgroundColor; |
| | | |
| | | .kb_left_top_block { |
| | | width: 100%; |
| | | height: 133px; |
| | | display: flex; |
| | | font-size: 17px; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | justify-content: flex-start; |
| | | |
| | | .kb_block02 { |
| | | width: 304px; |
| | | display: flex; |
| | | align-items: center; |
| | | border-right: 1px solid $kbBorderColor; |
| | | } |
| | | |
| | | .kb_block03 { |
| | | width: 1020px; |
| | | font-size: 17px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | //font-size: 12px; |
| | | border-radius: 5px; |
| | | |
| | | .kb_block03_content { |
| | | border: 1px solid $kbBorderColor; |
| | | width: 180px; |
| | | height: 80px; |
| | | margin-right: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content01 { |
| | | height: 30px; |
| | | width: 100%; |
| | | border-bottom: 1px solid $kbBorderColor; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .content02Parent { |
| | | display: flex; |
| | | |
| | | .content02 { |
| | | width: 60px; |
| | | border-right: 1px solid $kbBorderColor; |
| | | |
| | | .content02_1 { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | //height: 50%; |
| | | height: 25px; |
| | | } |
| | | |
| | | .content02_2 { |
| | | height: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .borderTop { |
| | | border-top: 1px solid $kbBorderColor; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | .kb_block03_02 { |
| | | margin-top: 7px; |
| | | display: flex; |
| | | |
| | | .kb_block03_02_content { |
| | | width: 180px; |
| | | margin-right: 15px; |
| | | |
| | | .content01 { |
| | | .circle { |
| | | width: 26px; |
| | | height: 26px; |
| | | background-color: #00ff8b; |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .kb_left_top_block:nth-child(3n) { |
| | | border-bottom: none !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .kb_left_bottom { |
| | | height: 495px; |
| | | |
| | | .kb_left_bottom_content { |
| | | height: 460px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | display: flex; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | color: #00ffff; |
| | | |
| | | } |
| | | |
| | | .content_body { |
| | | border: 1px solid $kbBorderColor; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .kb_right { |
| | | width: 575px; |
| | | height: 100%; |
| | | |
| | | .kb_right_top { |
| | | margin-top: 30px; |
| | | margin-bottom: -30px; |
| | | height: 476px; |
| | | width: 100%; |
| | | |
| | | .kb_right_top_content { |
| | | height: 430px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content_head { |
| | | //font-size: 18px; |
| | | line-height: 20px; |
| | | margin-bottom: 10px; |
| | | margin-top: -10px; |
| | | color: #00ffff; |
| | | } |
| | | |
| | | .content_body { |
| | | border: 1px solid $kbBorderColor; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .kb_right_bottom { |
| | | height: 482px; |
| | | margin-top: 8px; |
| | | |
| | | .kb_right_bottom_content_title { |
| | | color: #00ffff; |
| | | margin-bottom: 5px; |
| | | margin-top: -12px; |
| | | } |
| | | |
| | | .kb_right_bottom_content { |
| | | border: 1px solid $kbBorderColor; |
| | | height: 441px; |
| | | width: 100%; |
| | | border-radius: 5px; |
| | | background-color: $kbBackgroundColor; |
| | | } |
| | | } |
| | | } |
| | | .tableData { |
| | | background: #000; |
| | | } |
| | | |
| | | ::v-deep .el-table::before { |
| | | .el-table::before { |
| | | height: 0; |
| | | } |
| | | |
| | | ::v-deep .el-table__body-wrapper { |
| | | background-color: rgba(30, 33, 46); |
| | | .el-table__empty-text { |
| | | color: $main_color; |
| | | } |
| | | |
| | | ::v-deep .el-table__body-wrapper::-webkit-scrollbar { |
| | | /* width: 0;宽度为0æè */ |
| | | width: 0; |
| | | .kb_left_top_block { |
| | | width: 100%; |
| | | height: 143px; |
| | | display: flex; |
| | | font-size: 16px; |
| | | border-bottom: 1px solid $main_color; |
| | | justify-content: flex-start; |
| | | |
| | | .kb_block02 { |
| | | width: 304px; |
| | | display: flex; |
| | | align-items: center; |
| | | border-right: 1px solid $main_color; |
| | | } |
| | | |
| | | .kb_block03 { |
| | | width: 1020px; |
| | | font-size: 16px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | border-radius: 5px; |
| | | |
| | | .kb_block03_content { |
| | | border: 1px solid $main_color; |
| | | width: 180px; |
| | | height: 80px; |
| | | margin-right: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | |
| | | .content01 { |
| | | height: 30px; |
| | | width: 100%; |
| | | border-bottom: 1px solid $main_color; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .content02Parent { |
| | | display: flex; |
| | | |
| | | .content02 { |
| | | width: 60px; |
| | | border-right: 1px solid $main_color; |
| | | |
| | | .content02_1 { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 25px; |
| | | } |
| | | |
| | | .content02_2 { |
| | | height: 25px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .borderTop { |
| | | border-top: 1px solid $main_color; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | .kb_block03_02 { |
| | | margin-top: 15px; |
| | | display: flex; |
| | | |
| | | .kb_block03_02_content { |
| | | width: 180px; |
| | | margin-right: 15px; |
| | | |
| | | .content01 { |
| | | .circle { |
| | | width: 26px; |
| | | height: 26px; |
| | | background-color: #00ff8b; |
| | | border-radius: 50%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | font-size: 18px; |
| | | .kb_left_top_block:nth-child(3n) { |
| | | border-bottom: none !important; |
| | | } |
| | | |
| | | .circleYellow { |
| | |
| | | background-color: rgb(255 255 0); |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | </style> |
| | | |
| | | <!--æç©º--> |
| | | <style lang="css" scoped> |
| | | @keyframes rotate { |
| | | 0% { |
| | | transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0); |
| | | } |
| | | 100% { |
| | | transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg); |
| | | } |
| | | } |
| | | |
| | | .stars { |
| | | transform: perspective(500px); |
| | | transform-style: preserve-3d; |
| | | position: absolute; |
| | | perspective-origin: 50% 100%; |
| | | left: 45%; |
| | | animation: rotate 90s infinite linear; |
| | | bottom: 0; |
| | | z-index: 102; |
| | | } |
| | | |
| | | .star { |
| | | width: 2px; |
| | | height: 2px; |
| | | /*background: #f7f7b6;*/ |
| | | background: #8edffc; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | backface-visibility: hidden; |
| | | z-index: 102; |
| | | } |
| | | </style> |
| | |
| | | <div class="bodyTopButtonGroup" style="justify-content: space-between"> |
| | | <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">æ°å¢</el-button> |
| | | <div style="display: flex"> |
| | | <el-button |
| | | v-waves |
| | | icon="el-icon-refresh-right" |
| | | @click="syncSeaveSearchWhareHouseLocation" |
| | | >忥ä»åº/åºä½ |
| | | </el-button> |
| | | <!-- <el-button--> |
| | | <!-- v-waves--> |
| | | <!-- icon="el-icon-refresh-right"--> |
| | | <!-- @click="syncSeaveSearchWhareHouseLocation"--> |
| | | <!-- >忥ä»åº/åºä½--> |
| | | <!-- </el-button>--> |
| | | <el-button v-waves icon="el-icon-download" @click="upload">导å
¥</el-button> |
| | | </div> |
| | | |
| | |
| | | |
| | | <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">æ°å¢</el-button> |
| | | <!-- <el-button v-waves type="primary" icon="el-icon-office-building" @click="office">åä½</el-button>--> |
| | | <div style="display: flex"> |
| | | <el-button |
| | | v-waves |
| | | icon="el-icon-refresh-right" |
| | | @click="syncSeaveSearchUnit" |
| | | >åæ¥è®¡éåä½ |
| | | </el-button> |
| | | <el-button |
| | | v-waves |
| | | icon="el-icon-refresh-right" |
| | | @click="syncInventoryFileSelect" |
| | | >忥åè´§æ¡£æ¡ |
| | | </el-button> |
| | | <el-button |
| | | v-waves |
| | | icon="el-icon-refresh-right" |
| | | @click="syncStockTypeSelect" |
| | | >忥åè´§ç±»å |
| | | </el-button> |
| | | </div> |
| | | <!-- <div style="display: flex">--> |
| | | <!-- <el-button--> |
| | | <!-- v-waves--> |
| | | <!-- icon="el-icon-refresh-right"--> |
| | | <!-- @click="syncSeaveSearchUnit"--> |
| | | <!-- >åæ¥è®¡éåä½--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button--> |
| | | <!-- v-waves--> |
| | | <!-- icon="el-icon-refresh-right"--> |
| | | <!-- @click="syncInventoryFileSelect"--> |
| | | <!-- >忥åè´§æ¡£æ¡--> |
| | | <!-- </el-button>--> |
| | | <!-- <el-button--> |
| | | <!-- v-waves--> |
| | | <!-- icon="el-icon-refresh-right"--> |
| | | <!-- @click="syncStockTypeSelect"--> |
| | | <!-- >忥åè´§ç±»å--> |
| | | <!-- </el-button>--> |
| | | <!-- </div>--> |
| | | <!-- <el-button v-waves type="primary" icon="el-icon-upload2" @click="upload">导å
¥</el-button>--> |
| | | </div> |
| | | |