diff --git a/src/views/statistics/Statistics/statistics/index.vue b/src/views/statistics/Statistics/statistics/index.vue index af89a82..0c060bb 100644 --- a/src/views/statistics/Statistics/statistics/index.vue +++ b/src/views/statistics/Statistics/statistics/index.vue @@ -26,6 +26,7 @@ placeholder="select..." show-arrow allowClear + :filterOption="filterOption" :options="stationOptions" @change="stationChange" > @@ -42,6 +43,7 @@ placeholder="select..." show-arrow allowClear + :filterOption="filterOption" :options="nuclideOptions" > @@ -94,35 +96,18 @@
-
- - - -
@@ -137,7 +122,10 @@ import { getAction, getFileAction } from '../../../../api/manage' import { saveAs } from 'file-saver' import moment from 'moment' let xDataLength = 0 +const symbolList = ['circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'] +const colorList = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'] const commonOptions = { + color: colorList, grid: { top: 30, left: 20, @@ -149,6 +137,8 @@ const commonOptions = { trigger: 'axis', }, legend: { + type: 'scroll', + width: '90%', inactiveColor: 'rgba(153, 177, 189,.5)', lineStyle: { inactiveColor: '#333', @@ -156,10 +146,14 @@ const commonOptions = { textStyle: { color: '#9ab1bc', }, + pageIconColor: '#9ab1bc', + pageIconInactiveColor: 'rgba(153, 177, 189,.5)', + pageTextStyle: { + color: '#9ab1bc', + }, // data: [], }, toolbox: { - // showTitle: false, feature: { saveAsImage: { title: 'Save The Image', @@ -197,21 +191,24 @@ const commonOptions = { axisLabel: { color: '#ade6ee', formatter: (value, index) => { - let val = value.split(' ').join('\n') + // let val = value.split(' ').join('\n') + let val = value.split(' ')[0] if (index === 0) { let arr = value.split(' ') arr[0] = ' ' + arr[0] - arr[1] = ' ' + arr[1] - let str = arr.join('\n') - return str - } - if (index === xDataLength - 1) { - let arr = value.split(' ') - arr[0] = arr[0] + ' ' - arr[1] = arr[1] + ' ' - let str = arr.join('\n') + // arr[1] = ' ' + arr[1] + // let str = arr.join('\n') + let str = arr[0] return str } + // if (index === xDataLength - 1) { + // let arr = value.split(' ') + // arr[0] = arr[0] + ' ' + // // arr[1] = arr[1] + ' ' + // // let str = arr.join('\n') + // let str = arr[0] + // return str + // } return val }, }, @@ -244,9 +241,8 @@ export default { BoxTitle, }, data() { - // this.chartOneOption = cloneDeep(commonOptions) - // this.chartLeftOption = cloneDeep(commonOptions) - // this.chartRightOption = cloneDeep(commonOptions) + this.symbolList = symbolList + this.colorList = colorList return { typeOptions: [ { @@ -269,7 +265,7 @@ export default { }, { label: 'Interactive DB', - value: 'interactive', + value: 'man', }, ], stationOptions: [], @@ -284,37 +280,39 @@ export default { endDate: moment().format('YYYY-MM-DD'), }, menuName: '', - // titleOne: 'Nuclide History', - // titleLeft: 'Nuclide History', - // titleRight: 'Nuclide History', - // chartOne: null, - // chartLeft: null, - // chartRight: null, spinning: false, isDefault: true, chartInitList: [], itemTitle: {}, + chartLayout: [], } }, - computed: { - isCharts() { - return Array.isArray(this.stationIds) && this.stationIds.length == 2 ? true : false + watch: { + chartLayout: { + handler(newVal) { + this.$nextTick(() => { + this.chartInitList.forEach((item) => { + item.resize() + }) + }) + }, }, }, methods: { moment, typeChange(val) { this.isDefault = true - // this.disposeCharts() this.stationIds = [] - // this.queryParams.dbName = undefined + this.chartLayout = [] this.queryParams.nuclideNames = [] this.queryParams.systemType = val if (val == 'Particulate') this.menuName = 'Particulate' if (val == 'gamma') this.menuName = 'Noble Gas HPGe' if (val == 'beta') this.menuName = 'Noble Gas Beta-Gamma' - this.getStations() - this.getNuclide() + if (val.length > 0) { + this.getStations() + this.getNuclide() + } }, getStations() { getAction('/webStatistics/findStationList', { menuName: this.menuName }).then((res) => { @@ -348,12 +346,7 @@ export default { }, stationChange(val) { if (val.length != 0) { - this.isDefault = false - this.$nextTick(() => { - this.chartInitList.forEach((item) => { - item.resize() - }) - }) + // this.isDefault = false if (val.length == 2) { this.stationOptions.forEach((item) => { if (!val.includes(item.value)) { @@ -368,22 +361,6 @@ export default { } else { this.isDefault = true } - - // if (this.chartOne) this.chartOne.dispose() - // if (this.chartLeft) this.chartLeft.dispose() - // if (this.chartRight) this.chartRight.dispose() - // this.stationIds = val - // if (val.length == 2) { - // this.stationOptions.forEach((item) => { - // if (!val.includes(item.value)) { - // item.disabled = true - // } else { - // item.disabled = false - // } - // }) - // } else { - // this.stationOptions.forEach((item) => (item.disabled = false)) - // } }, startDateChange(date, dateString) { this.queryParams.startDate = dateString @@ -392,59 +369,26 @@ export default { this.queryParams.endDate = dateString }, handleSearch() { + this.isDefault = false this.chartInitList = [] + this.chartLayout = [] this.stationIds.forEach((id, index) => { - // this.queryParams.stationId = id - let currChartInit = echarts.init(document.getElementById(`chart_${id}`)) - this.chartInitList.push(currChartInit) - let params = { - ...this.queryParams, - stationId: id, - } - let options = cloneDeep(commonOptions) - this.getChartDate(params, currChartInit, options, id) - /** - if (index == 0) { - this.chartLeftOption.series = [] - this.chartLeft = echarts.init(document.getElementById('chartLeft')) - this.getChartDate(params, this.chartLeft, this.chartLeftOption, 'left') - } else { - this.chartRightOption.series = [] - this.chartRight = echarts.init(document.getElementById('chartRight')) - this.getChartDate(params, this.chartRight, this.chartRightOption, 'right') - }*/ - }) - /** - if (this.chartOne) this.chartOne.clear() - if (this.chartLeft) this.chartLeft.clear() - if (this.chartRight) this.chartRight.clear() - if (this.stationIds.length == 1) { - this.chartOne = echarts.init(document.getElementById('chartOne')) - // this.queryParams.stationId = this.stationIds[0] - let params = { - ...this.queryParams, - stationId: this.stationIds[0], - } - this.chartOneOption.series = [] - this.getChartDate(params, this.chartOne, this.chartOneOption, 'one') - } else { - this.stationIds.forEach((id, index) => { - // this.queryParams.stationId = id + this.chartLayout.push(id) + this.$nextTick(() => { + let currChartInit = echarts.init(document.getElementById(`chart_${id}`)) + this.chartInitList.push(currChartInit) let params = { ...this.queryParams, stationId: id, } - if (index == 0) { - this.chartLeftOption.series = [] - this.chartLeft = echarts.init(document.getElementById('chartLeft')) - this.getChartDate(params, this.chartLeft, this.chartLeftOption, 'left') + let options = cloneDeep(commonOptions) + if (this.queryParams.nuclideNames.length > 0) { + this.getChartDate(params, currChartInit, options, id) } else { - this.chartRightOption.series = [] - this.chartRight = echarts.init(document.getElementById('chartRight')) - this.getChartDate(params, this.chartRight, this.chartRightOption, 'right') + this.$message.warning(`Please select nuclide!`) } }) - }*/ + }) }, async getChartDate(params, chart, option, id) { this.spinning = true @@ -456,24 +400,32 @@ export default { this.spinning = false this.$set(this.itemTitle, id, result.STATION_NAME) if (result.CollectStart.length < 1) { - this.$message.warning('No Data!') + this.$message.warning(`${result.STATION_NAME} No Data!`) } - // if (type === 'one') this.titleOne = `${result.STATION_NAME}:Nuclide History` - // if (type === 'left') this.titleLeft = `${result.STATION_NAME}:Nuclide History` - // if (type === 'right') this.titleRight = `${result.STATION_NAME}:Nuclide History` - legend.data = Object.keys(result).filter((item) => item !== 'CollectStart') + // legend.data = Object.keys(result).filter((item) => item !== 'CollectStart') xAxis.data = result.CollectStart xDataLength = result.CollectStart.length toolbox.feature.saveAsImage.name = `${result.STATION_NAME}:Nuclide History` + let objKeys = Object.keys(result).filter( + (item) => item !== 'CollectStart' && item !== 'STATION_NAME' && key !== 'AllDayTime' + ) for (const key in result) { + let idx = objKeys.findIndex((item) => item == key) + let num_symbol = idx % 7 + // let num_symbol = idx%7 let param = null - if (Object.hasOwnProperty.call(result, key) && key !== 'CollectStart' && key !== 'STATION_NAME') { + if ( + Object.hasOwnProperty.call(result, key) && + key !== 'CollectStart' && + key !== 'STATION_NAME' && + key !== 'AllDayTime' + ) { const element = result[key] param = { type: 'line', name: key, smooth: true, - showSymbol: false, + symbol: this.symbolList[num_symbol], animation: false, lineStyle: { normal: { @@ -509,15 +461,6 @@ export default { this.$message.warning('No downloadable data') } }, - /** - // 清除图表 - disposeCharts() { - if (this.chartOne) this.chartOne.dispose() - if (this.chartLeft) this.chartLeft.dispose() - if (this.chartRight) this.chartRight.dispose() - this.titleOne = this.titleLeft = this.titleRight = 'Nuclide History' - }, - */ filterOption(input, option) { return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0