From 902607f8cde01b82f5eff503d16deba9ada48172 Mon Sep 17 00:00:00 2001 From: zx <604444282@qq.com> Date: Mon, 8 Aug 2022 14:22:03 +0800 Subject: [PATCH] zx --- src/api/SaleRankMarket/index.js | 172 +++++++++++++ src/views/Index/spreadTheSound/index.vue | 2 + src/views/SaleRank/MarketComp/index.vue | 8 +- .../MarketSaleChina/mscCompChart/index.vue | 235 +++++++++++++++++- .../MarketSaleChina/mscCompChart/opt.js | 69 +++++ .../MarketSaleChina/mscEnergyType/index.vue | 76 +++++- .../MarketSaleChina/mscEnergyType/opt.js | 146 +++++++++++ .../MarketSaleChina/mscTotal/index.vue | 14 +- .../mscTotal/totalPassengerVehicle/index.vue | 74 ++++++ .../mscTotal/totalPassengerVehicle/opt.js | 156 ++++++++++++ .../mscTotal/totalTop20/index.vue | 109 ++++++++ .../mscTotal/totalTop20/opt.js | 138 ++++++++++ .../mscTotal/totalTraditionCar/index.vue | 75 ++++++ .../mscTotal/totalTraditionCar/opt.js | 156 ++++++++++++ .../mstCountryPercent/index.vue | 96 ++++++- .../mstCountryPercent/opt.js | 146 +++++++++++ .../mstPrecisionType/index.vue | 19 +- .../precAutoPercent/index.vue | 106 ++++++++ .../mstPrecisionType/precAutoPercent/opt.js | 147 +++++++++++ .../mstPrecisionType/precMpvPercent/index.vue | 106 ++++++++ .../mstPrecisionType/precMpvPercent/opt.js | 147 +++++++++++ .../mstPrecisionType/precPercent/index.vue | 105 ++++++++ .../mstPrecisionType/precPercent/opt.js | 147 +++++++++++ .../mstPrecisionType/precSuvPercent/index.vue | 106 ++++++++ .../mstPrecisionType/precSuvPercent/opt.js | 147 +++++++++++ .../mstSeriesType/index.vue | 19 +- .../mstSeriesType/seriesAuto/index.vue | 74 ++++++ .../mstSeriesType/seriesAuto/opt.js | 156 ++++++++++++ .../mstSeriesType/seriesMpv/index.vue | 74 ++++++ .../mstSeriesType/seriesMpv/opt.js | 156 ++++++++++++ .../mstSeriesType/seriesSuv/index.vue | 74 ++++++ .../mstSeriesType/seriesSuv/opt.js | 156 ++++++++++++ .../mstSeriesType/seriesTotal/index.vue | 108 ++++++++ .../mstSeriesType/seriesTotal/opt.js | 149 +++++++++++ 34 files changed, 3649 insertions(+), 19 deletions(-) create mode 100644 src/views/SaleRank/MarketSaleChina/mscCompChart/opt.js create mode 100644 src/views/SaleRank/MarketSaleChina/mscEnergyType/opt.js create mode 100644 src/views/SaleRank/MarketSaleChina/mscTotal/totalPassengerVehicle/index.vue create mode 100644 src/views/SaleRank/MarketSaleChina/mscTotal/totalPassengerVehicle/opt.js create mode 100644 src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/index.vue create mode 100644 src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/opt.js create mode 100644 src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/index.vue create mode 100644 src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precAutoPercent/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precAutoPercent/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesAuto/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesAuto/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/opt.js create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/index.vue create mode 100644 src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/opt.js diff --git a/src/api/SaleRankMarket/index.js b/src/api/SaleRankMarket/index.js index 1280a1a..f42f44e 100644 --- a/src/api/SaleRankMarket/index.js +++ b/src/api/SaleRankMarket/index.js @@ -35,4 +35,176 @@ export function getSalesCompetitionAnalysis(params) { 'content-type': 'application/x-www-form-urlencoded' } }) +} + +// 品牌总销量TOP20 +export function getSalesBrandTop20(params) { + let obj = Object.assign({action: 'getSalesBrandTop20', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 车型总销量TOP20 +export function getSalesCarseriesTop20(params) { + let obj = Object.assign({action: 'getSalesCarseriesTop20', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 乘用车 - 总销量 - 狭义乘用车 +export function getSalesGrowthRatio(params) { + let obj = Object.assign({action: 'getSalesGrowthRatio', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 乘用车 - 总销量 - 新能源市场 +export function getSalesGrowthRatioByFuel(params) { + let obj = Object.assign({action: 'getSalesGrowthRatioByFuel', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 乘用车 - 能源类型 +export function getSalesEnergyTypes(params) { + let obj = Object.assign({action: 'getSalesEnergyTypes', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 传统燃油 - 国别占比 +export function getSalesCountrysTypes(params) { + let obj = Object.assign({action: 'getSalesCountrysTypes', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 传统燃油 - 车型类别 - 轿车同比 +export function getSalesSpecName1TypesBySedan(params) { + let obj = Object.assign({action: 'getSalesSpecName1TypesBySedan', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 传统燃油 - 车型类别 - suv同比 +export function getSalesSpecName1TypesBySuv(params) { + let obj = Object.assign({action: 'getSalesSpecName1TypesBySuv', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 传统燃油 - 车型类别 - mpv同比 +export function getSalesSpecName1TypesByMpv(params) { + let obj = Object.assign({action: 'getSalesSpecName1TypesByMpv', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 传统燃油 - 车型类别 - mpv suv 轿车对比 +export function getSalesSpecName1Types(params) { + let obj = Object.assign({action: 'getSalesSpecName1Types', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} + +// 传统燃油 - 车型类别 - 细分车型total +export function getSalesSpecNameTypes(params) { + let obj = Object.assign({action: 'getSalesSpecNameTypes', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 传统燃油 - 车型类别 - 细分车型SUV +export function getSalesSpecNameTypesBySuv(params) { + let obj = Object.assign({action: 'getSalesSpecNameTypesBySuv', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 传统燃油 - 车型类别 - 细分车型轿车 +export function getSalesSpecNameTypesBySedan(params) { + let obj = Object.assign({action: 'getSalesSpecNameTypesBySedan', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) +} +// 传统燃油 - 车型类别 - 细分车型MPV +export function getSalesSpecNameTypesByMpv(params) { + let obj = Object.assign({action: 'getSalesSpecNameTypesByMpv', sType: 'Marketing'}, params) + return httpService({ + url: `/api/v6.ashx`, + method: 'post', + data: obj, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }) } \ No newline at end of file diff --git a/src/views/Index/spreadTheSound/index.vue b/src/views/Index/spreadTheSound/index.vue index b49b6df..4928902 100644 --- a/src/views/Index/spreadTheSound/index.vue +++ b/src/views/Index/spreadTheSound/index.vue @@ -61,7 +61,9 @@ export default { this.load = true; let obj = Object.assign({}, this.getCommTime, this.form); getHomeBrandSourceType0528(obj).then((res) => { + let data = res.data; + console.log(data) this.pdata = data; this.handlerData(data); this.load = false; diff --git a/src/views/SaleRank/MarketComp/index.vue b/src/views/SaleRank/MarketComp/index.vue index 6368521..253636f 100644 --- a/src/views/SaleRank/MarketComp/index.vue +++ b/src/views/SaleRank/MarketComp/index.vue @@ -65,6 +65,7 @@ import {getCountryS,getPriceRangeS,getSpecName1,getSeatS,getDisplacementS,getEnergyS} from "@/api/SaleRankMarketCommon"; import {getSalesCompetitionALLList,getSalesCompetitionList,getSalesCompetitionAnalysis} from "@/api/SaleRankMarket"; import createOpt from "./opt" +import {getCheZhuLatestTime} from "@/api/SaleRank" export default { name: 'CitySale', data() { @@ -89,7 +90,7 @@ export default { specs2: [], displacements: [], seats: [], - selTime: ['2022-06','2022-06'], + selTime: ['',''], seriesList: [], //选项数据 countryList: [], @@ -111,7 +112,6 @@ export default { created() { this.form.token = this.getToken; this.getApi(); - this.getData() }, methods: { getApi() { @@ -133,6 +133,10 @@ export default { getSeatS({token: this.getToken}).then(res => { this.seatList = res.data }); + getCheZhuLatestTime({token: this.form.token}).then(res => { + this.selTime = [res.data, res.data]; + this.getData() + }) }, getData() { let obj = { diff --git a/src/views/SaleRank/MarketSaleChina/mscCompChart/index.vue b/src/views/SaleRank/MarketSaleChina/mscCompChart/index.vue index f6db63e..8e47e67 100644 --- a/src/views/SaleRank/MarketSaleChina/mscCompChart/index.vue +++ b/src/views/SaleRank/MarketSaleChina/mscCompChart/index.vue @@ -1,18 +1,245 @@ \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscCompChart/opt.js b/src/views/SaleRank/MarketSaleChina/mscCompChart/opt.js new file mode 100644 index 0000000..61d84ab --- /dev/null +++ b/src/views/SaleRank/MarketSaleChina/mscCompChart/opt.js @@ -0,0 +1,69 @@ +import * as echarts from "echarts"; +import { bigNumberTransform } from "@/utils/gol/dataTool" +export default function createOpt(data = [],extraData = []) { + return { + grid: { + left: '6%', + // top: '10%' + }, + xAxis: { + splitLine: false, + scale: true, + axisLabel: { + color: '#FFF' + } + }, + yAxis: { + splitLine: false, + scale: true, + axisLabel: { + formatter: function(value) { + return value / 10000 + '万元' + }, + color: '#FFF' + } + }, + series: [ + { + name: 'total', + data: data, + type: 'scatter', + symbolSize: function (data) { + return data[2] / 600; + }, + label: { + show: true, + formatter: function (param) { + return param.data[3]; + }, + color: '#FFF', + fontSize: 12, + fontWeight: 550, + position: 'inside' + }, + itemStyle: { + color: '#3373CC', + } + }, + { + name: 'extra', + data: extraData, + type: 'scatter', + symbolSize: function (data) { + return data[2] / 200; + }, + label: { + show: true, + formatter: function (param) { + return param.data[3]; + }, + color: '##FFF', + position: 'inside' + }, + itemStyle: { + color: '#CC9D12', + } + }, + ] + } +} diff --git a/src/views/SaleRank/MarketSaleChina/mscEnergyType/index.vue b/src/views/SaleRank/MarketSaleChina/mscEnergyType/index.vue index d790d01..91a1f61 100644 --- a/src/views/SaleRank/MarketSaleChina/mscEnergyType/index.vue +++ b/src/views/SaleRank/MarketSaleChina/mscEnergyType/index.vue @@ -1,18 +1,86 @@ \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscEnergyType/opt.js b/src/views/SaleRank/MarketSaleChina/mscEnergyType/opt.js new file mode 100644 index 0000000..d5a1240 --- /dev/null +++ b/src/views/SaleRank/MarketSaleChina/mscEnergyType/opt.js @@ -0,0 +1,146 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +let colors = ['#5B8FF9','#7DAAFF','#9AC5FF','#B9E2FF','#3A9EC0','#5BB9DB','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA' +,'#5B8FF9','#7DAAFF','#9AC5FF','#B9E2FF','#3A9EC0','#5BB9DB','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 48, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + label: { + show: true, + position: 'inside', + color: '#FFF', + fontWeight: 600, + formatter: (res) => { + return res.data + '%' + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors[j] + } + ], false); + } + } + + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + max: 100, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + return value + '%' + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscTotal/index.vue b/src/views/SaleRank/MarketSaleChina/mscTotal/index.vue index e65ec2c..621a4aa 100644 --- a/src/views/SaleRank/MarketSaleChina/mscTotal/index.vue +++ b/src/views/SaleRank/MarketSaleChina/mscTotal/index.vue @@ -1,9 +1,21 @@ + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscTotal/totalPassengerVehicle/opt.js b/src/views/SaleRank/MarketSaleChina/mscTotal/totalPassengerVehicle/opt.js new file mode 100644 index 0000000..fd7721b --- /dev/null +++ b/src/views/SaleRank/MarketSaleChina/mscTotal/totalPassengerVehicle/opt.js @@ -0,0 +1,156 @@ + +import { bigNumberTransform } from "@/utils/gol/dataTool" +import * as echarts from "echarts"; +export default function createOpt(firstData = [], secondData = [], percent = []) { + return { + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + }, + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: [ + { + type: 'category', + data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',], + axisPointer: { + type: 'shadow' + }, + axisLabel: { + color: '#FFF' + } + } + ], + yAxis: [ + { + type: 'value', + axisLabel: { + formatter: (value) => { + return bigNumberTransform(value); + }, + color: '#FFF' + }, + splitLine:{ + show:false + }, + }, + { + type: 'value', + axisLabel: { + formatter: '{value}%', + color: '#FFF' + }, + splitLine:{ + show:false + }, + } + ], + series: [ + { + name: '2021', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#3373CC' + }, + { + offset: 1, + color: '#3E8CF940' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: firstData + }, + { + name: '2022', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#54BF93' + }, + { + offset: 1, + color: '#61DDAA30' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: secondData + }, + { + name: '同比', + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value+'%'; + } + }, + data: percent + } + ] + } +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/index.vue b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/index.vue new file mode 100644 index 0000000..7e92849 --- /dev/null +++ b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/index.vue @@ -0,0 +1,109 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/opt.js b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/opt.js new file mode 100644 index 0000000..244f78e --- /dev/null +++ b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTop20/opt.js @@ -0,0 +1,138 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +// let colors = ['rgba(84,111,197,1)', 'rgba(145,203,116,1)', 'rgba(90,203,156,1)', 'rgba(248,200,87,1)', 'rgba(237,101,101,1)', "rgba(114,191,222,1)", 'rgba(58,162,114,1)', 'rgba(251,131,81,1)'] +// let colors2 = ['rgba(84,111,197,0.6)', 'rgba(145,203,116,0.6)', 'rgba(90,203,156,0.6)', 'rgba(248,200,87,0.6)', 'rgba(237,101,101,0.6)', "rgba(114,191,222,0.6)", 'rgba(58,162,114,0.6)', 'rgba(251,131,81,0.6)'] +let colors = ['#5B8FF9','#7DAAFF','#9AC5FF','#B9E2FF','#3A9EC0','#5BB9DB','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 18, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors[j] + } + ], false); + } + } + + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + let str = bigNumberTransform(value); + return str; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/index.vue b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/index.vue new file mode 100644 index 0000000..096cf0f --- /dev/null +++ b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/index.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/opt.js b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/opt.js new file mode 100644 index 0000000..fd7721b --- /dev/null +++ b/src/views/SaleRank/MarketSaleChina/mscTotal/totalTraditionCar/opt.js @@ -0,0 +1,156 @@ + +import { bigNumberTransform } from "@/utils/gol/dataTool" +import * as echarts from "echarts"; +export default function createOpt(firstData = [], secondData = [], percent = []) { + return { + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + }, + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: [ + { + type: 'category', + data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',], + axisPointer: { + type: 'shadow' + }, + axisLabel: { + color: '#FFF' + } + } + ], + yAxis: [ + { + type: 'value', + axisLabel: { + formatter: (value) => { + return bigNumberTransform(value); + }, + color: '#FFF' + }, + splitLine:{ + show:false + }, + }, + { + type: 'value', + axisLabel: { + formatter: '{value}%', + color: '#FFF' + }, + splitLine:{ + show:false + }, + } + ], + series: [ + { + name: '2021', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#3373CC' + }, + { + offset: 1, + color: '#3E8CF940' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: firstData + }, + { + name: '2022', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#54BF93' + }, + { + offset: 1, + color: '#61DDAA30' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: secondData + }, + { + name: '同比', + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value+'%'; + } + }, + data: percent + } + ] + } +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/index.vue index 49d7bbf..9a96c8e 100644 --- a/src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/index.vue +++ b/src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/index.vue @@ -1,18 +1,106 @@ \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/opt.js new file mode 100644 index 0000000..d5a1240 --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstCountryPercent/opt.js @@ -0,0 +1,146 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +let colors = ['#5B8FF9','#7DAAFF','#9AC5FF','#B9E2FF','#3A9EC0','#5BB9DB','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA' +,'#5B8FF9','#7DAAFF','#9AC5FF','#B9E2FF','#3A9EC0','#5BB9DB','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 48, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + label: { + show: true, + position: 'inside', + color: '#FFF', + fontWeight: 600, + formatter: (res) => { + return res.data + '%' + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors[j] + } + ], false); + } + } + + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + max: 100, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + return value + '%' + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/index.vue index 951e67c..ca07bfc 100644 --- a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/index.vue +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/index.vue @@ -1,10 +1,25 @@ + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precAutoPercent/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precAutoPercent/opt.js new file mode 100644 index 0000000..5ad1a5f --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precAutoPercent/opt.js @@ -0,0 +1,147 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +let colors2 = ['#3373CC60', '#63AECC60', '#54BF9360', '#CC9D1260', '#FFDE9560', '#78D4F860', 'rgba(58,162,114,0.6)', 'rgba(251,131,81,0.6)'] +let colors = ['#3373CC','#63AECC','#54BF93','#CC9D12','#FFDE95','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 30, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + label: { + show: true, + position: 'inside', + color: '#FFF', + fontWeight: 600, + fontSize: 10, + formatter: (res) => { + return res.data + '%' + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors2[j] + } + ], false); + } + } + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + min: 0, + max: 100, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + return value + '%'; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/index.vue new file mode 100644 index 0000000..fb71a6a --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/index.vue @@ -0,0 +1,106 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/opt.js new file mode 100644 index 0000000..5ad1a5f --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precMpvPercent/opt.js @@ -0,0 +1,147 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +let colors2 = ['#3373CC60', '#63AECC60', '#54BF9360', '#CC9D1260', '#FFDE9560', '#78D4F860', 'rgba(58,162,114,0.6)', 'rgba(251,131,81,0.6)'] +let colors = ['#3373CC','#63AECC','#54BF93','#CC9D12','#FFDE95','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 30, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + label: { + show: true, + position: 'inside', + color: '#FFF', + fontWeight: 600, + fontSize: 10, + formatter: (res) => { + return res.data + '%' + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors2[j] + } + ], false); + } + } + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + min: 0, + max: 100, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + return value + '%'; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/index.vue new file mode 100644 index 0000000..d9305f8 --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/index.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/opt.js new file mode 100644 index 0000000..42d4327 --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precPercent/opt.js @@ -0,0 +1,147 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +let colors = ['#5B8FF9','#7DAAFF','#9AC5FF','#B9E2FF','#3A9EC0','#5BB9DB','#78D4F8','#63AECC','#19A576','#43C090', +'#62DDAA','#9DF5CA','#9DF5CA','#FFD470','#FFDE95','#FFEBBF','#E19D62','#F7B075','#FDC388','#FDD69B'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 36, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + label: { + show: true, + position: 'inside', + color: '#FFF', + fontWeight: 600, + fontSize: 12, + formatter: (res) => { + return res.data + '%' + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors[j] + } + ], false); + } + } + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + min: 0, + max: 100, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + return value + '%'; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/index.vue new file mode 100644 index 0000000..453abbc --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/index.vue @@ -0,0 +1,106 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/opt.js new file mode 100644 index 0000000..b62661a --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstPrecisionType/precSuvPercent/opt.js @@ -0,0 +1,147 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +let colors2 = ['#3373CC60', '#63AECC60', '#54BF9360', '#CC9D1260', '#FFDE9560', "rgba(114,191,222,0.6)", 'rgba(58,162,114,0.6)', 'rgba(251,131,81,0.6)'] +let colors = ['#3373CC','#63AECC','#54BF93','#CC9D12','#FFDE95','#FFDE95','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 30, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + label: { + show: true, + position: 'inside', + color: '#FFF', + fontWeight: 600, + fontSize: 10, + formatter: (res) => { + return res.data + '%' + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors2[j] + } + ], false); + } + } + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + min: 0, + max: 100, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + return value + '%'; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/index.vue index 35d4bf8..bfc1408 100644 --- a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/index.vue +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/index.vue @@ -1,10 +1,25 @@ + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesAuto/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesAuto/opt.js new file mode 100644 index 0000000..fd7721b --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesAuto/opt.js @@ -0,0 +1,156 @@ + +import { bigNumberTransform } from "@/utils/gol/dataTool" +import * as echarts from "echarts"; +export default function createOpt(firstData = [], secondData = [], percent = []) { + return { + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + }, + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: [ + { + type: 'category', + data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',], + axisPointer: { + type: 'shadow' + }, + axisLabel: { + color: '#FFF' + } + } + ], + yAxis: [ + { + type: 'value', + axisLabel: { + formatter: (value) => { + return bigNumberTransform(value); + }, + color: '#FFF' + }, + splitLine:{ + show:false + }, + }, + { + type: 'value', + axisLabel: { + formatter: '{value}%', + color: '#FFF' + }, + splitLine:{ + show:false + }, + } + ], + series: [ + { + name: '2021', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#3373CC' + }, + { + offset: 1, + color: '#3E8CF940' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: firstData + }, + { + name: '2022', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#54BF93' + }, + { + offset: 1, + color: '#61DDAA30' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: secondData + }, + { + name: '同比', + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value+'%'; + } + }, + data: percent + } + ] + } +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/index.vue new file mode 100644 index 0000000..9e6448f --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/index.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/opt.js new file mode 100644 index 0000000..fd7721b --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesMpv/opt.js @@ -0,0 +1,156 @@ + +import { bigNumberTransform } from "@/utils/gol/dataTool" +import * as echarts from "echarts"; +export default function createOpt(firstData = [], secondData = [], percent = []) { + return { + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + }, + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: [ + { + type: 'category', + data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',], + axisPointer: { + type: 'shadow' + }, + axisLabel: { + color: '#FFF' + } + } + ], + yAxis: [ + { + type: 'value', + axisLabel: { + formatter: (value) => { + return bigNumberTransform(value); + }, + color: '#FFF' + }, + splitLine:{ + show:false + }, + }, + { + type: 'value', + axisLabel: { + formatter: '{value}%', + color: '#FFF' + }, + splitLine:{ + show:false + }, + } + ], + series: [ + { + name: '2021', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#3373CC' + }, + { + offset: 1, + color: '#3E8CF940' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: firstData + }, + { + name: '2022', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#54BF93' + }, + { + offset: 1, + color: '#61DDAA30' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: secondData + }, + { + name: '同比', + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value+'%'; + } + }, + data: percent + } + ] + } +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/index.vue new file mode 100644 index 0000000..a1c7a94 --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/index.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/opt.js new file mode 100644 index 0000000..fd7721b --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesSuv/opt.js @@ -0,0 +1,156 @@ + +import { bigNumberTransform } from "@/utils/gol/dataTool" +import * as echarts from "echarts"; +export default function createOpt(firstData = [], secondData = [], percent = []) { + return { + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + }, + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: [ + { + type: 'category', + data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月',], + axisPointer: { + type: 'shadow' + }, + axisLabel: { + color: '#FFF' + } + } + ], + yAxis: [ + { + type: 'value', + axisLabel: { + formatter: (value) => { + return bigNumberTransform(value); + }, + color: '#FFF' + }, + splitLine:{ + show:false + }, + }, + { + type: 'value', + axisLabel: { + formatter: '{value}%', + color: '#FFF' + }, + splitLine:{ + show:false + }, + } + ], + series: [ + { + name: '2021', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#3373CC' + }, + { + offset: 1, + color: '#3E8CF940' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: firstData + }, + { + name: '2022', + type: 'bar', + barWidth: 20, + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: '#54BF93' + }, + { + offset: 1, + color: '#61DDAA30' + } + ], false); + } + } + }, + label: { + show: true, + position: 'top', + color: '#FFF' + }, + data: secondData + }, + { + name: '同比', + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value+'%'; + } + }, + data: percent + } + ] + } +} \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/index.vue b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/index.vue new file mode 100644 index 0000000..ecf073b --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/index.vue @@ -0,0 +1,108 @@ + + + + + \ No newline at end of file diff --git a/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/opt.js b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/opt.js new file mode 100644 index 0000000..dec374b --- /dev/null +++ b/src/views/SaleRank/MarketSaleTraditional/mstSeriesType/seriesTotal/opt.js @@ -0,0 +1,149 @@ +/* + * @Author: your name + * @Date: 2021-10-09 11:01:19 + * @LastEditTime: 2021-12-23 16:37:35 + * @LastEditors: Please set LastEditors + * @Description: In User Settings Edit + * @FilePath: /data-show/src/views/Index/spreadTheSound/opt.js + */ +import * as echarts from "echarts"; +import {doStr} from "@/utils/gol/dataTool" +import { bigNumberTransform } from "@/utils/gol/dataTool" +// let colors = ['rgba(84,111,197,1)', 'rgba(145,203,116,1)', 'rgba(90,203,156,1)', 'rgba(248,200,87,1)', 'rgba(237,101,101,1)', "rgba(114,191,222,1)", 'rgba(58,162,114,1)', 'rgba(251,131,81,1)'] +let colors2 = ['#3373CC60', '#63AECC60', '#54BF9360', 'rgba(248,200,87,0.6)', 'rgba(237,101,101,0.6)', "rgba(114,191,222,0.6)", 'rgba(58,162,114,0.6)', 'rgba(251,131,81,0.6)'] +let colors = ['#3373CC','#63AECC','#54BF93','#B9E2FF','#3A9EC0','#5BB9DB','#78D4F8','#63AECC','#19A576','#43C090','#43C090','#9DF5CA'] +function createData(ds = []) { + let arr = []; + for (let i = 0; i < ds.length; i++) { + let arr1 = ds[i]; + for (let j = 0; j < arr1.length; j++) { + let n = arr.findIndex(ele => { + return ele.name === arr1[j].Key; + }) + if (n === -1) { + let obj = + { + name: arr1[j].Key, + type: 'bar', + stack: 'total', + barWidth: 36, + barGap: "-100%", + emphasis: { + focus: 'series' + }, + label: { + show: true, + position: 'inside', + color: '#FFF', + fontWeight: 600, + fontSize: 10, + formatter: (res) => { + return res.data + '%' + } + }, + itemStyle: { + normal: { + //柱体的颜色 + //右,下,左,上(1,0,0,0)表示从正右开始向左渐变 + color: function () { + return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { + offset: 0, + color: colors[j] + }, + { + offset: 1, + color: colors2[j] + } + ], false); + } + } + + }, + data: [arr1[j].Value] + } + arr.push(obj) + } else { + arr[n].data.push(arr1[j].Value) + } + } + } + return arr; +} +export default function createOpt(dx = [], ds = []) { + const data = createData(ds); + return { + grid: { + left: 10, + right: 10, + bottom: 10, + containLabel: true + }, + tooltip: { + trigger: "axis", + backgroundColor: "#08182F", + color: "#fff", + borderColor: "#3373CC", + textStyle: { + color: "#fff", //设置文字颜色 + }, + extraCssText: "box-shadow: 0px 0px 10px 0px #3373CC;" + }, + color: colors, + legend: { + textStyle: { //图例文字的样式 + color: '#fff', + fontSize: 10 + }, + y: 10, + x: 10, + itemWidth: 12, + itemHeight: 12, + borderRadius: 1, //圆角半径 + }, + xAxis: { + type: 'category', + axisLabel :{ + interval:0, + formatter: (value) => { + let res = doStr(value, 8); + return res + } + }, + axisTick: { + show: false, + }, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + data: dx + }, + yAxis: { + type: 'value', + min: 0, + max: 100, + axisLine: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLabel: { + formatter: (value) => { + return value + '%'; + } + }, + splitLine: { + lineStyle: { + type: "dashed", // y轴分割线类型 + color: "#012b4b", + }, + }, + }, + series: data + } + +} \ No newline at end of file