diff --git a/public/config.js b/public/config.js index 3ac41dd..400c452 100644 --- a/public/config.js +++ b/public/config.js @@ -1,11 +1,8 @@ window.publicConfig = { // 请求地址 - // BASE_API:'http://10.97.121.2/api', - // BASE_API:'http://192.168.66.16/api', - BASE_API:'http://61.144.224.21:8442/api', + BASE_API:'http://61.144.224.21:8443/api', // socket url - // WS_URL_TY: 'ws://10.97.121.2/ty', - WS_URL_TY: 'ws://192.168.66.16/ty', - WS_URL_WH: 'ws://192.168.66.16/wh', - WS_URL_ZL: 'ws://192.168.66.16/zl' + WS_URL_TY: 'ws://61.144.224.21:8443/ty', + WS_URL_WH: 'ws://61.144.224.21:8443/wh', + WS_URL_ZL: 'ws://61.144.224.21:8443/zl' } \ No newline at end of file diff --git a/src/api/home.js b/src/api/home.js index 48ff4e2..3640539 100644 --- a/src/api/home.js +++ b/src/api/home.js @@ -83,4 +83,13 @@ export function libLeaseData(param){ method: 'post', param, }) +} + +// 文化板块今日人流量趋势 +export function whtdrs(param){ + return request({ + url:'/library.pass/getLibraryGroupHoursList', + method: 'post', + param, + }) } \ No newline at end of file diff --git a/src/api/home.js_bak b/src/api/home.js_bak new file mode 100644 index 0000000..8bbec22 --- /dev/null +++ b/src/api/home.js_bak @@ -0,0 +1,67 @@ +// 导入axios实例 +import request from '@/utils/request' + +// 定义接口的传参 +const api={ + // 日客流趋势 + daily_klqs:'/pass.passcc/allGroupTimeNum', + +} + +// 获取群组 +export function allGroupTimeNum(param) { + return request({ + url: api.daily_klqs, + method: 'get', + params:param, + }) +} + +export function homeBarData(param) { + return request({ + url: '/pass.passcc/allGroupTimeNum&granularity=daily', + method: 'post', + param, + }) +} +// ge +export function allGroupNum(param) { + return request({ + url: '/pass.passcc/allGroupNum', + method: 'post', + param, + }) +} +// 实时进馆人数 +export function allInfoDatas(param) { + return request({ + url: '/pass.passcc/realTimeData', + method: 'post', + param, + }) +} +// 今日各场馆的趋势 +export function tdGroupRealTimeEnter(param) { + return request({ + url: '/pass.passcc/toDayGroupsEnterNum', + method: 'get', + param, + }) +} +// 图书馆人流趋势 +export function tsgTrends(param) { + return request({ + url: '/library.pass/allFlowTrends', + method: 'get', + param, + }) +} + +// 借书信息 +export function tsgbr(param){ + return request({ + url: '/library.pass/allFlowTrends', + method: 'post', + param, + }) +} diff --git a/src/assets/img/pcg_bg2.png b/src/assets/img/pcg_bg2.png new file mode 100644 index 0000000..c9c5956 Binary files /dev/null and b/src/assets/img/pcg_bg2.png differ diff --git a/src/views/HomeView - 副本.vue b/src/views/HomeView - 副本.vue deleted file mode 100644 index 3daa81d..0000000 --- a/src/views/HomeView - 副本.vue +++ /dev/null @@ -1,1191 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/WhView - 副本.vue b/src/views/WhView - 副本.vue new file mode 100644 index 0000000..4158b31 --- /dev/null +++ b/src/views/WhView - 副本.vue @@ -0,0 +1,984 @@ + + + \ No newline at end of file diff --git a/src/views/WhView.vue b/src/views/WhView.vue index dd6487b..44c9e2b 100644 --- a/src/views/WhView.vue +++ b/src/views/WhView.vue @@ -155,20 +155,23 @@ animation: ani_sc 8s infinite forwards; } -.jgbox .jgcon .jgitem .jgimg img{ +.jgbox .jgcon .jgitem .jgimg img { width: 100%; height: 100%; } + /** 呼吸效果 */ @keyframes ani_sc { - 0%{ + 0% { transform: scale(0.8); transition: all; } - 50%{ + + 50% { transform: scale(1); } - 100%{ + + 100% { transform: scale(0.8); } } @@ -187,7 +190,8 @@ -webkit-animation: ani_sc 6s infinite; animation: ani_sc 6s infinite; } -.jgbox .jgcon .jgitem .jgival::after{ + +.jgbox .jgcon .jgitem .jgival::after { content: ""; } @@ -236,7 +240,7 @@ text-align: center; /* 动画效果 */ -webkit-animation: ani_sc 5s infinite forwards; - animation: ani_sc 5s infinite forwards; + animation: ani_sc 5s infinite forwards; } .dgins .dgins_con .dgitem span { @@ -250,7 +254,7 @@ font-size: 1.06rem; /* 动画效果 */ -webkit-animation: ani_sc 5s infinite forwards; - animation: ani_sc 5s infinite forwards; + animation: ani_sc 5s infinite forwards; } .dgins .dgins_con .dgitem .dgdesc { @@ -322,25 +326,35 @@ import * as echarts from 'echarts'; // 引入api import * as homeApi from '@/api/home' -import { ecMaxVal,numGrow } from '@/utils/comm'; +import { ecMaxVal, numGrow } from '@/utils/comm'; export default { name: 'TycView', data() { return { //三馆人数概况 - tdjg:0, - tmjg:0, - tyjg:0, + tdjg: 0, + tmjg: 0, + tyjg: 0, // - gkbwg:0, - gktsg:0, - gkwhg:0, + gkbwg: 0, + gktsg: 0, + gkwhg: 0, + + // 柱子图 + ecbardata: [], + // 24小时总服务人次趋势 - wh24xdata:[], - wh24ydata:[], + wh24xdata: [], + wh24ydata: [], + //折线区域的数据 + zxliddata: [], + // 折线名称 + zxlindata: [], // 图书馆借阅 - libleaData:[], + libleaData: [], + // ws + ws:null, } }, @@ -351,26 +365,29 @@ export default { // 24小时总服务人次趋势 this.getWh24hdata() // - this.gc_line() + this.whtdrs() + // this.gc_line() // this.libinfoData() - //this.tsg_line() - this.getTsgInfoDatas() + // websocket + this.ws = new WebSocket(publicConfig.WS_URL_WH); + // this.getsckdata() + }, methods: { // 三馆人数概况 - sgrsStat(){ - homeApi.allGroupNum({type:2}).then(res=>{ + sgrsStat() { + homeApi.allGroupNum({ type: 2 }).then(res => { const tdata = res.data.returnData; this.tdjg = tdata.day.noRepeatInNum this.tmjg = tdata.month.noRepeatInNum this.tyjg = tdata.year.noRepeatInNum }); - homeApi.tsgTrends().then(res=>{ + homeApi.tsgTrends().then(res => { const tdata = res.data.data; - // //24小时的情况 + // //24小时的情况 const sgdata = tdata.hour24 this.gktsg = sgdata[0].incount this.gkbwg = sgdata[1].incount @@ -378,33 +395,60 @@ export default { }); }, // 24 小时总服务人次趋势 - getWh24hdata(){ - homeApi.wh24ServiceTrends().then(res=>{ - const whtdata = res.data.data - this.wh24xdata=whtdata.dkeys - this.wh24ydata=whtdata.dvalue - // console.log("dvv",whtdata.dvalue) - //this.wh24hdata = res.data.data + getWh24hdata() { + homeApi.wh24ServiceTrends().then(res => { + // const whtdata = res.data.data + // this.wh24xdata = whtdata.dkeys + // this.wh24ydata = whtdata.dvalue + const temcgData = res.data.data + // 24 小时 + const vkdata = new Array; + const vvdata = new Array; + // + const dkeys = temcgData.dkeys + dkeys.forEach(function(item,idx){ + vvdata.push( item) + }); + + vkdata.push({ + xname: dkeys, + xval: vvdata + }) + + this.ecbardata = vkdata // do line this.cgsf_line() }) }, // 山峰图---24小时总服务人次趋势 + // 24H 服务人次绘制柱形图 cgsf_line() { var chartDom = document.getElementById('gcins_charts'); var myChart = echarts.init(chartDom); var option; option = { + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + }, + formatter: function (params) { + return params[0].name + "
" + params[0].value + } + }, grid: { - left: '-8%', - right: '4%', + left: '3%', + right: '3%', bottom: '3%', top: '10%', containLabel: true }, xAxis: [{ - data:this.wh24xdata, + data: this.ecbardata[0].xname, + // data: [ + // '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', + // ], axisLine: { lineStyle: { color: '#0095FF', @@ -443,9 +487,7 @@ export default { }, axisLabel: { color: '#0095FF', - align: 'left', - margin: 40 - }, + } }], series: [{ type: 'bar', @@ -453,6 +495,10 @@ export default { barWidth: '10%', barCategoryGap: '60%', stack: 1, + // animation + animationDurationUpdate: 3000, + animationEasingUpdate: 'quintcInOut', + itemStyle: { normal: { barBorderRadius: [30, 30, 0, 0], @@ -469,7 +515,7 @@ export default { ) } }, - data: this.wh24ydata, + data: this.ecbardata[0].xval, zlevel: 11 }, { @@ -477,24 +523,23 @@ export default { stack: 1, xAxisIndex: 0, symbolOffset: [0, 0], //相对于原本位置的偏移量 - data: this.wh24ydata, - // data: [0, 0, 0, 0, 0, 0, 0, 0, 0], + data: [0, 0, 0, 0, 0, 0, 0, 0, 0], itemStyle: { normal: { - color: '#f0f0f0' + color: '#fff' } }, symbolSize: 13, zlevel: 10, z: 2, }, - // 背景柱 { + name: '背景', type: 'bar', barWidth: '10%', barGap: '-100%', - data: ecMaxVal(this.wh24ydata), - // data: [15000, 15000, 15000, 15000, 15000, 15000, 15000, 15000, 15000], + data: ecMaxVal(this.ecbardata[0].xval), + //data: [15000, 15000, 15000, 15000, 15000, 15000, 15000, 15000, 15000], itemStyle: { normal: { color: '#004298', @@ -506,23 +551,65 @@ export default { ] } + // option && myChart.setOption(option); + //消停几秒后开始,动画 + + // setInterval(()=>{ + myChart.clear() option && myChart.setOption(option); + // },4000); }, + // 今日人流 + whtdrs() { + homeApi.whtdrs().then(res => { + console.log("whtd", res) + // const tmpdata = res.data.data + // this.xData.push(res.data.data[0].list.dkeys) + + // // X 轴的名称字段 + // const darr =new Array; + // tmpdata.forEach(function(item,idx){ + // // 读取list + // const list = item.list + // darr.push(list.dvalue) + // }) + // this.whfwdata = darr + + // get allTimeData + const tmpdata = res.data.data + // X 轴的名称字段 + const xarr = new Array + const darr = new Array; + tmpdata.forEach(function (item, idx) { + // 读取list + const list = item.list + xarr.push(list.dkeys) + darr.push(list.dvalue) + }) + + // console.log(darr) + + this.zxlindata = xarr + this.zxliddata = darr + + // + this.gc_line() + }); + }, // 各场馆人数趋势 gc_line() { var chartDom = document.getElementById("gc_charts"); var myChart = echarts.init(chartDom); var option - var xData = ['09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00',]; + var xData = this.xData + //var xData = ['09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00',]; var color = ['#FF99CC', '#6666FF', '#FF6600', '#7049f0', '#fa704d', '#01babc',] var name = ['图书馆', '文化馆', '博物馆'] - var data = [ - [137, 34, 135, 161, 74, 152, 110, 100, 150], - [174, 137, 135, 34, 152, 135, 140, 160, 100], - [134, 74, 137, 135, 161, 137, 300, 220, 250], - ] + var xData = this.zxlindata + var data = this.zxliddata + var series = []; for (var i = 0; i < 3; i++) { @@ -677,8 +764,8 @@ export default { option && myChart.setOption(option); }, // 图书馆借阅查询 - libinfoData(){ - homeApi.libLeaseData().then(res=>{ + libinfoData() { + homeApi.libLeaseData().then(res => { this.libleaData = res.data.data // this.tsg_line() @@ -705,9 +792,9 @@ export default { ]; // 值颜色 let valueColor = [ - { color1: '#15224C', color2: '#FF0042', unit: ' 人 '}, - { color1: '#15224C', color2: '#FED700', unit: ' 册 '}, - { color1: '#15224C', color2: '#00FEC5', unit: ' 册 '} + { color1: '#15224C', color2: '#FF0042', unit: ' 人 ' }, + { color1: '#15224C', color2: '#FED700', unit: ' 册 ' }, + { color1: '#15224C', color2: '#00FEC5', unit: ' 册 ' } ] // 前缀图标 var libraryIcons = { @@ -857,89 +944,313 @@ export default { } }], series: [ - // 光圈 - { - 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], - symbolOffset: [20, 0], - z: 12, - itemStyle: { - normal: { - color: '#14b1eb' - } - }, - animationDelay:function(idx){ - return idx*10 + // 光圈 + { + 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], + symbolOffset: [20, 0], + z: 12, + itemStyle: { + normal: { + color: '#14b1eb' + } + }, + animationDelay: function (idx) { + return idx * 10 + }, + data: getSymbolData(data) }, - data: getSymbolData(data) - }, - { - type: 'bar', - showBackground: true, - barBorderRadius: 30, - yAxisIndex: 0, - data: data, - barWidth: 10, - barGap:20, - itemStyle: { - normal: { - color: (params) => { - var index = params.dataIndex; - if (params.dataIndex >= valueColor.length) { - index = params.dataIndex - valueColor.length; - } - return new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ - offset: 0, - color: valueColor[index].color1 + { + type: 'bar', + showBackground: true, + barBorderRadius: 30, + yAxisIndex: 0, + data: data, + barWidth: 10, + barGap: 20, + itemStyle: { + normal: { + color: (params) => { + var index = params.dataIndex; + if (params.dataIndex >= valueColor.length) { + index = params.dataIndex - valueColor.length; + } + return new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ + offset: 0, + color: valueColor[index].color1 + }, + { + offset: 0.8, + color: valueColor[index].color2 + }, { + offset: 1, + color: valueColor[index].color2 + }]); }, - { - offset: 0.8, - color: valueColor[index].color2 - },{ - offset: 1, - color: valueColor[index].color2 - }]); + barBorderRadius: 0 }, - barBorderRadius: 0 + // color: '#A71A2B', + barBorderRadius: 4, }, - // color: '#A71A2B', - barBorderRadius: 4, + // 标签 + label: { + normal: { + color: '#fff', + show: true, + position: [0, '-20px'], + textStyle: { + fontSize: 16 + }, + formatter: function (a) { + return a.name + } + } + } + }], + animationEasing: 'elasticOut', + animationDelayUpdate: function (idx) { + return idx * 5 + } + }; + + option && myChart.setOption(option); + }, + // 场馆人流趋势绘制线图 + // 场馆人流趋势绘制线图 + cg_line() { + let that = this; + var chartDom = document.getElementById("gc_charts"); + var myChart = echarts.init(chartDom); + + var option + var xData = ['09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00',]; + var color = ['#FF99CC', '#6666FF', '#FF6600', '#7049f0', '#fa704d', '#01babc',] + var name = this.zxlindata.slice(-10, this.zxlindata.length) + var data = this.zxliddata.slice(-10, this.zxliddata.length) + + var series = []; + for (var i = 0; i < data.length; i++) { + series.push({ + name: name[i], + type: "line", + symbolSize: 3,//标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为20,高为10[ default: 4 ] + symbol: 'circle',//标记的图形。ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow' + smooth: true, //是否平滑曲线显示 + showSymbol: false, //是否显示 symbol, 如果 false 则只有在 tooltip hover 的时候显示 + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ + offset: 0, + color: color[i] + }, { + offset: 0.8, + color: 'rgba(255,255,255,0)' + }], false), + // shadowColor: 'rgba(255,255,255, 0.1)', + shadowBlur: 10, + opacity: 0.3, + } }, - // 标签 - label: { + itemStyle: { normal: { - color: '#fff', - show: true, - position: [0, '-20px'], - textStyle: { - fontSize: 16 + color: color[i], + lineStyle: { + width: 1, + type: 'solid' //'dotted'虚线 'solid'实线 }, - formatter: function (a) { - return a.name - } + borderColor: color[i], //图形的描边颜色。支持的格式同 color + borderWidth: 8,//描边线宽。为 0 时无描边。[ default: 0 ] + barBorderRadius: 0, + label: { + show: false, + }, + opacity: 0.5, } + }, + data: data[i], + + }) + } + option = { + // backgroundColor: "#141f56", + legend: { + bottom: 0, + right: 20, + itemGap: 20, + itemWidth: 20, + itemHeight: 20, + textStyle: { + color: '#fff', + fontSize: '14' + }, + data: [ + { icon: 'image://img/tyc_icon.png', name: '体育场' }, + { icon: 'image://img/tyg_icon.png', name: '体育馆' }, + { icon: 'image://img/yyg_icon.png', name: '游泳场馆' }, + ] + }, + title: { + // text: "负面言论分领域趋势", + textStyle: { + color: '#fff', + fontSize: '22', + fontWeight: 'normal', + }, + subtextStyle: { + color: '#90979c', + fontSize: '16', + + }, + }, + tooltip: { + trigger: "axis", + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'line', // 默认为直线,可选为:'line' | 'shadow' + lineStyle: { + color: '#57617B' + } + }, + formatter: '{b}
{a0}: {c0}
{a1}: {c1}
{a2}: {c2}', + backgroundColor: 'rgba(0,0,0,0.7)', // 背景 + padding: [8, 10], //内边距 + extraCssText: 'box-shadow: 0 0 3px rgba(255, 255, 255, 0.4);', //添加阴影 + }, + grid: { + borderWidth: 0, + top: 240, + bottom: 240, + right: 20, + textStyle: { + color: "#fff" } + }, + xAxis: [{ + type: "category", + axisLine: { + show: false, + }, + splitLine: { + show: false, + }, + boundaryGap: false, //坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样 + axisTick: { + show: false + }, + splitArea: { + show: false + }, + axisLabel: { + inside: false, + interval: 0, + textStyle: { + color: '#FFFFFF', + fontWeight: 'normal', + fontSize: '12', + }, + }, + data: name, }], - animationEasing:'elasticOut', - animationDelayUpdate:function(idx){ - return idx*5 - } - }; + yAxis: { + type: 'value', + axisTick: { + show: false + }, + axisLine: { + show: false, + }, + splitLine: { + show: true, + lineStyle: { + color: '#32346c ', + } + }, + axisLabel: { + textStyle: { + color: '#0095FF', + fontWeight: 'normal', + fontSize: '12', + }, + formatter: '{value}', + }, + }, + series: series, + } + myChart.clear() option && myChart.setOption(option); }, - getTsgInfoDatas() { - let that = this - console.log(that); - homeApi.tsgTrends().then(res => { - // get allTimeData - const tmpdata = res.data - console.log(tmpdata) + // 从ws 中实时获取数据 + getsckdata() { + let that = this; + + this.ws.onopen = function () { + // console.log("ws connected success!") + }; + this.ws.onclose = function (event) { + // console.log('WebSocket连接已关闭'); + }; + this.ws.onmessage = (e) => { + var jstr = JSON.parse(e.data); + if (!jstr) { + return; + } + + // 总计进馆人数 + const allFlowTrends = jstr.allFlowTrends.data + that.tdjg = allFlowTrends.today.incount + that.tmjg = allFlowTrends.month.incount + that.tyjg = allFlowTrends.year.incount + // 今日进馆 + const hour24 = allFlowTrends.hour24 + that.gktsg = hour24[0].incount + that.gkbwg = hour24[1].incount + that.gkwhg = hour24[2].incount + + // 图书借阅信息 + const libleas = jstr.getLibraryLeaseData.data + that.libleaData = libleas + + // 24 小时柱形图数据 + const vkdata = new Array; + vkdata.push({ + xname: jstr.getLibraryHours24List.data.dkeys.slice(-8, jstr.getLibraryHours24List.data.dkeys.length), + xval: jstr.getLibraryHours24List.data.dvalue.slice(-8, jstr.getLibraryHours24List.data.dvalue.length) + }) + that.ecbardata = vkdata; + that.cgsf_line(); + + // 线图数据 + function linedata() { + that.zxliddata = []; + that.rsqsDataName = [], that.rsqsDatas = []; + const tmpdata = jstr.getLibraryGroupHoursList.data; + tmpdata.forEach((item) => { + that.rsqsDataName.push(item.groupName); + that.rsqsDatas.push(item.list) + }) + + that.zxlindata = jstr.toDayGroupsEnterNum.data[0].list.dkeys; + that.rsqsDatas.forEach((item) => { + let rsqsData = [] + Object.getOwnPropertyNames(item).forEach((value) => { + if (value == 'dvalue') { + rsqsData = item[value]; + } + }); + that.zxliddata.push(rsqsData) + }) + that.cg_line() + } + linedata(); + + } + }, - }); - } }, + beforeUnmount() { + this.ws.close(); + } } \ No newline at end of file