12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934 |
- <template>
- <div class="report_box">
- <div class="pdf_box" ref="pdfContent">
- <!-- 报告封面 -->
- <div class="report_banner">
- <h1>场景评价报告</h1>
- <div class="report_table">
- <div class="table_item">
- <p>场景测试包:</p>
- <span>{{ info.projectName }}</span>
- </div>
- <div class="table_item">
- <p>场景数量:</p>
- <span>{{ info.sceneNum }}</span>
- </div>
- <div class="table_item">
- <p>算法名称:</p>
- <span>{{ info.algorithmName }}</span>
- </div>
- <div class="table_item tiem-last">
- <p>报告时间:</p>
- <span>{{ info.finishTime }}</span>
- </div>
- </div>
- <h4>国汽(北京)智能网联汽车研究院有限公司</h4>
- </div>
- <!-- 评价报告 -->
- <div class="report_content">
- <h3>评价报告</h3>
- <p class="subtitle">一、测试得分说明</p>
- <p class="text">
- 针对<span style="border-bottom: 2px solid red">{{
- info.algorithmName
- }}</span
- >,进行场景的算法验证,共有{{
- Number(info.scenePassNum)
- }}例场景通过,通过率{{ Number(info.passRate) * 100 }}%。其中<span
- style="border-bottom: 2px solid red"
- >{{ info.packageName }}</span
- >的场景复杂度、危险度分布结果如下图所示。
- </p>
- <!-- 复杂度图表 -->
- <div class="echart-box" ref="myChart_complex"></div>
- <p class="echart_desc">图1-1 复杂度分布图</p>
- <!-- 危险度图表 -->
- <div class="echart-box" ref="myChart_risk"></div>
- <p class="echart_desc">图1-2 危险度分布图</p>
- <p class="text">
- 复杂度/危险度分数与复杂度/危险度等级的对应关系见附录。算法在不同复杂度/危险度等级的结果分布图如下。正常情况下评价等级越高则算法通过的数量越少,该图可判断场景评价和算法评价的合理性。
- </p>
- <!-- 算法不同复杂度等级分布图表 -->
- <div class="echart-box" ref="myChart_complex_scale"></div>
- <p class="echart_desc">图1-3 算法在不同复杂度等级的结果分布图</p>
- <!-- 算法不同危险度等级分布图表 -->
- <div class="echart-box" ref="myChart_risk_scale"></div>
- <p class="echart_desc">图1-4 算法在不同危险度等级的结果分布图</p>
- <p class="subtitle">二、场景分布情况</p>
- <p class="text">
- 本次场景评价涉及场景{{ Number(info.sceneNum) }}例,共{{
- Number(info.sceneNum)
- }}类基准场景类别。具体参数分布情况如下:
- </p>
- <p class="text">1)他车动作</p>
- <p class="text">他车动作共涵盖直行、汇入等,分布图如下:</p>
- <!-- 他车动作分布图表 -->
- <div class="echart-box" ref="myChart_othcar_scale"></div>
- <p class="echart_desc">图2-1 他车动作类别分布图</p>
- <p class="text">
- 危险度或复杂度在不同他车动作类别的结果分布如下图所示,根据分布图可对场景生成算法进行调整。例如对于全部是复杂度高或者复杂度低的场景,需要对参数或类别有所调整,使生成的场景更加合理,更好的服务于算法迭代。
- </p>
- <!-- 危险度他车分布图表 -->
- <div class="echart-box" ref="myChart_risk_othcar_scale"></div>
- <p class="echart_desc">图2-2 危险度在不同他车动作类别的结果分布图</p>
- <!-- 复杂度他车分布图表 -->
- <div class="echart-box" ref="myChart_complex_othcar_scale"></div>
- <p class="echart_desc">图2-3 复杂度在不同他车动作类别的结果分布图</p>
- <p class="text">2)天气条件</p>
- <p class="text">
- 天气包含晴天、雨天共{{
- Object.keys(info.weatherTypeForNum || {}).length || ''
- }}类,分布图如下:
- </p>
- <!-- 天气分布 -->
- <div class="echart-box" ref="myChart_weather_scale"></div>
- <p class="echart_desc">图2-4 天气分布图</p>
- <p class="text">
- 危险度或复杂度在不同他车动作类别的结果分布如下图所示,根据分布图可对场景生成算法进行调整。例如对于全部是复杂度高或者复杂度低的场景,可对参数或类别有所调整,使生成的场景更加合理,更好的服务于算法迭代。
- </p>
- <!-- 危险度天气分布图表 -->
- <div class="echart-box" ref="myChart_risk_weather_scale"></div>
- <p class="echart_desc">图2-5 危险度在不同天气类别下的结果分布图</p>
- <!-- 复杂度天气分布图表 -->
- <div class="echart-box" ref="myChart_complex_weather_scale"></div>
- <p class="echart_desc">图2-6 复杂度在不同天气下的结果分布图</p>
- <p class="text">3)道路条件</p>
- <p class="text">
- 覆盖道路类型为城市普通道路、高速道路,运行区域主要为主路…,道路类型、运行区域、平面几何和纵断面几何的场景分布情况如下:
- </p>
- <!-- 道路类型分布 -->
- <div class="echart-box" ref="myChart_roadtype_scale"></div>
- <p class="echart_desc">图2-7 道路类型分布图</p>
- <!-- 运行区域分布图 -->
- <div class="echart-box" ref="myChart_region_scale"></div>
- <p class="echart_desc">图2-8 运行区域分布图</p>
- <!-- 道路几何-平面分布图 -->
- <div class="echart-box" ref="myChart_roadplane_scale"></div>
- <p class="echart_desc">图2-9 道路几何-平面分布图</p>
- <!-- 道路几何-纵断面分布图 -->
- <div class="echart-box" ref="myChart_roadportrait_scale"></div>
- <p class="echart_desc">图2-10 道路几何-纵断面分布图</p>
- <p class="text">
- 危险度或复杂度在不同他车动作类别的结果分布如下图所示,根据分布图可对场景生成算法进行调整。例如对于全部是复杂度高或者复杂度低的场景,可对参数或类别有所调整,使生成的场景更加合理,更好的服务于算法迭代。
- </p>
- <!-- 危险度不同运行区域分布图 -->
- <div class="echart-box" ref="myChart_risk_region_scale"></div>
- <p class="echart_desc">图2-11危险度在不同运行区域下的结果分布图</p>
- <!-- 复杂度不同运行区域分布图 -->
- <div class="echart-box" ref="myChart_complex_region_scale"></div>
- <p class="echart_desc">图2-12 复杂度在不同运行区域下的结果分布图</p>
- <!-- 危险度不同运行区域分布图 -->
- <div class="echart-box" ref="myChart_risk_road_scale"></div>
- <p class="echart_desc">图2-13 危险度在不同道路平面下的结果分布图</p>
- <!-- 复杂度不同运行区域分布图 -->
- <div class="echart-box" ref="myChart_complex_road_scale"></div>
- <p class="echart_desc">图2-14复杂度在不同道路平面下的结果分布图</p>
- <!-- 危险度不同纵断面分布图 -->
- <div class="echart-box" ref="myChart_risk_roadportrait_scale"></div>
- <p class="echart_desc">图2-15 危险度在不同道路纵断面下的结果分布图</p>
- <!-- 复杂度不同纵断面分布图 -->
- <div class="echart-box" ref="myChart_complex_roadportrait_scale"></div>
- <p class="echart_desc">图2-16 复杂度在不同道路纵断面下的结果分布图</p>
- <p class="subtitle">三、算法表现分析</p>
- <p class="text">
- 算法在不同他车动作类别的结果分布,主要是看在不同类别下算法的表现是否会不同,通过性场景的多少对于算法以后选择场景类型有指导性意义。
- </p>
- <!-- 算法在不同他车动作结果分布图 -->
- <div class="echart-box" ref="myChart_algorithm_othcar_scale"></div>
- <p class="echart_desc">
- 图3-1 算法在不同他车动作类别与运行区域的结果分布
- </p>
- <!-- 算法在不同天气类型结果分布图 -->
- <div class="echart-box" ref="myChart_algorithm_weather_scale"></div>
- <p class="echart_desc">图3-2 算法在不同天气类别与运行区域的结果分布</p>
- <!-- 算法在不同道路结果分布图 -->
- <div class="echart-box" ref="myChart_algorithm_road_scale"></div>
- <p class="echart_desc">图3-3 算法在不同道路平面与纵断面的结果分布</p>
- <p class="subtitle">四、详细评分情况</p>
- <p class="text">
- {{ info.algorithmName }}算法在{{
- Number(info.sceneNum)
- }}类场景的详细得分情况见表4-1
- </p>
- <p class="echart_desc">表4-1 评价结果表</p>
- <el-table :data="tableDataA" border style="width: 100%">
- <el-table-column
- v-for="item in tableColumnA"
- :prop="item.key"
- :label="item.label"
- >
- </el-table-column>
- </el-table>
- <p class="subtitle">附录</p>
- <p class="echart_desc">表5-1 评价结果表</p>
- <el-table :data="tableDataB" border style="width: 100%">
- <el-table-column
- v-for="item in tableColumnB"
- :prop="item.key"
- :label="item.label"
- >
- </el-table-column>
- </el-table>
- <el-table
- :data="tableDataC"
- border
- style="width: 100%; margin-top: 50px"
- >
- <el-table-column
- v-for="item in tableColumnC"
- :prop="item.key"
- :label="item.label"
- >
- </el-table-column>
- </el-table>
- </div>
- </div>
- <el-button @click="down" type="primary">下载</el-button>
- </div>
- </template>
- <script>
- import html2canvas from 'html2canvas'
- import jsPDF from 'jspdf'
- import * as echarts from 'echarts'
- export default {
- name:'sceneReport',
- data() {
- return {
- tableColumnA: [
- {
- label: '场景名称',
- key: 'sceneName',
- },
- {
- label: '复杂度分值',
- key: 'complexity',
- },
- {
- label: '复杂度等级',
- key: 'complexityLevel',
- },
- {
- label: '危险度分值',
- key: 'risk',
- },
- {
- label: '危险度等级',
- key: 'riskLevel',
- },
- {
- label: '算法得分',
- key: 'scoreResult',
- },
- ],
- tableColumnB: [
- {
- label: '复杂度分值',
- key: 'a',
- },
- {
- label: '复杂度等级',
- key: 'b',
- },
- ],
- tableColumnC: [
- {
- label: '危险度分值',
- key: 'a',
- },
- {
- label: '危险度等级',
- key: 'b',
- },
- ],
- tableDataA: [],
- tableDataB: [
- { a: '(75,inf]', b: 'A' },
- { a: '(50,75]', b: 'B' },
- { a: '(25,50]', b: 'C' },
- { a: '[0,25]', b: 'D' },
- ],
- tableDataC: [
- { a: '(75,inf]', b: 'A' },
- { a: '(50,75]', b: 'B' },
- { a: '(25,50]', b: 'C' },
- { a: '[0,25]', b: 'D' },
- ],
- info: {}, // 报告数据
- }
- },
- mounted() {
- const { id, projectType } = this.$route.query
- this.getReportDetail(id, projectType)
- },
- methods: {
- // 获取报告
- getReportDetail(id, projectType) {
- this.$axios({
- method: 'post',
- url: this.$api.workManagement.getStandardTestReport,
- data: { id, projectType },
- }).then((res) => {
- if (res.code == 200) {
- this.info = res.info
- this.tableDataA = res.info.manualProjectTaskVos
- this.echartInit(res.info)
- } else {
- this.$message.error('获取失败', res.message)
- }
- })
- },
- // 图表初始化
- echartInit(info) {
- const chart_complex = echarts.init(this.$refs.myChart_complex) // 复杂度分布图
- const chart_risk = echarts.init(this.$refs.myChart_risk) // 危险度分布图
- const chart_complex_scale = echarts.init(this.$refs.myChart_complex_scale) // 算法复杂度分布
- const chart_risk_scale = echarts.init(this.$refs.myChart_risk_scale) // 算法危险度分布
- const chart_othcar_scale = echarts.init(this.$refs.myChart_othcar_scale) // 他车动作类别分布图
- const chart_risk_othcar_scale = echarts.init(
- this.$refs.myChart_risk_othcar_scale
- ) // 危险度他车动作分布
- const chart_complex_othcar_scale = echarts.init(
- this.$refs.myChart_complex_othcar_scale
- ) // 复杂度他车动作分布
- const chart_weather_scale = echarts.init(this.$refs.myChart_weather_scale) // 天气分布
- const chart_complex_weather_scale = echarts.init(
- this.$refs.myChart_complex_weather_scale
- ) // 复杂度天气分布
- const chart_risk_weather_scale = echarts.init(
- this.$refs.myChart_risk_weather_scale
- ) // 危险度天气分布
- const chart_roadtype_scale = echarts.init(
- this.$refs.myChart_roadtype_scale
- ) // 道路类型分布
- const chart_region_scale = echarts.init(this.$refs.myChart_region_scale) // 运行区域分布图
- const chart_roadplane_scale = echarts.init(
- this.$refs.myChart_roadplane_scale
- ) // 道路平面分布
- const chart_roadportrait_scale = echarts.init(
- this.$refs.myChart_roadportrait_scale
- ) // 道路纵断分布
- const chart_risk_region_scale = echarts.init(
- this.$refs.myChart_risk_region_scale
- ) // 危险度不同运行区域分布
- const chart_complex_region_scale = echarts.init(
- this.$refs.myChart_complex_region_scale
- ) // 复杂度不同运行区域分布
- const chart_risk_road_scale = echarts.init(
- this.$refs.myChart_risk_road_scale
- ) // 危险度不同道路分布
- const chart_complex_road_scale = echarts.init(
- this.$refs.myChart_complex_road_scale
- ) // 复杂度不同道路分布
- const chart_risk_roadportrait_scale = echarts.init(
- this.$refs.myChart_risk_roadportrait_scale
- ) // 危险度不同道路分布
- const chart_complex_roadportrait_scale = echarts.init(
- this.$refs.myChart_complex_roadportrait_scale
- ) // 复杂度不同道路分布
- const chart_algorithm_othcar_scale = echarts.init(
- this.$refs.myChart_algorithm_othcar_scale
- ) // 算法在不同他车动作类别分布
- const chart_algorithm_weather_scale = echarts.init(
- this.$refs.myChart_algorithm_weather_scale
- ) // 算法在不同天气类别分布
- const chart_algorithm_road_scale = echarts.init(
- this.$refs.myChart_algorithm_road_scale
- ) // 算法在不同道路类别分布
- /*************************************/
- chart_complex.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- xAxis: {
- type: 'category',
- data: [
- '0-10',
- '10-20',
- '20-30',
- '30-40',
- '40-50',
- '50-60',
- '60-70',
- '70-80',
- '80-90',
- '90-100',
- ],
- },
- yAxis: {
- type: 'value',
- },
- series: [
- {
- data: [
- info.compRange['[0,10]'] || null,
- info.compRange['(10,20]'] || null,
- info.compRange['(20,30]'] || null,
- info.compRange['(30,40]'] || null,
- info.compRange['(40,50]'] || null,
- info.compRange['(50,60]'] || null,
- info.compRange['(60,70]'] || null,
- info.compRange['(70,80]'] || null,
- info.compRange['(80,90]'] || null,
- info.compRange['(90,100]'] || null,
- ],
- type: 'bar',
- label: {
- show: true, // 显示数值
- position: 'top', // 数值显示的位置
- },
- },
- ],
- })
- chart_risk.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- xAxis: {
- type: 'category',
- data: [
- '0-10',
- '10-20',
- '20-30',
- '30-40',
- '40-50',
- '50-60',
- '60-70',
- '70-80',
- '80-90',
- '90-100',
- '100-inf',
- ],
- },
- yAxis: {
- type: 'value',
- },
- series: [
- {
- data: [
- info.riskRange['[0,10]'] || null,
- info.riskRange['(10,20]'] || null,
- info.riskRange['(20,30]'] || null,
- info.riskRange['(30,40]'] || null,
- info.riskRange['(40,50]'] || null,
- info.riskRange['(50,60]'] || null,
- info.riskRange['(60,70]'] || null,
- info.riskRange['(70,80]'] || null,
- info.riskRange['(80,90]'] || null,
- info.riskRange['(90,100]'] || null,
- info.riskRange['(100,+∞)'] || null,
- ],
- type: 'bar',
- label: {
- show: true, // 显示数值
- position: 'top', // 数值显示的位置
- },
- },
- ],
- })
- /** */
- chart_complex_scale.setOption({
- legend: {},
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- yAxis: {
- type: 'value',
- },
- xAxis: {
- type: 'category',
- data: ['A', 'B', 'C', 'D'],
- },
- series: [
- {
- name: '不通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: [
- info.compLevelForPassNum['A']
- ? info.compLevelForPassNum['A'].unPassNum
- : null,
- info.compLevelForPassNum['B']
- ? info.compLevelForPassNum['B'].unPassNum
- : null,
- info.compLevelForPassNum['C']
- ? info.compLevelForPassNum['C'].unPassNum
- : null,
- info.compLevelForPassNum['D']
- ? info.compLevelForPassNum['D'].unPassNum
- : null,
- ],
- },
- {
- name: '通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: [
- info.compLevelForPassNum['A']
- ? info.compLevelForPassNum['A'].passNum
- : null,
- info.compLevelForPassNum['B']
- ? info.compLevelForPassNum['B'].passNum
- : null,
- info.compLevelForPassNum['C']
- ? info.compLevelForPassNum['C'].passNum
- : null,
- info.compLevelForPassNum['D']
- ? info.compLevelForPassNum['D'].passNum
- : null,
- ],
- },
- ],
- })
- chart_risk_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- yAxis: {
- type: 'value',
- },
- xAxis: {
- type: 'category',
- data: ['A', 'B', 'C', 'D'],
- },
- series: [
- {
- name: '不通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: [
- info.riskLevelForPassNum['A']
- ? info.riskLevelForPassNum['A'].unPassNum
- : null,
- info.riskLevelForPassNum['B']
- ? info.riskLevelForPassNum['B'].unPassNum
- : null,
- info.riskLevelForPassNum['C']
- ? info.riskLevelForPassNum['C'].unPassNum
- : null,
- info.riskLevelForPassNum['D']
- ? info.riskLevelForPassNum['D'].unPassNum
- : null,
- ],
- },
- {
- name: '通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: [
- info.riskLevelForPassNum['A']
- ? info.riskLevelForPassNum['A'].passNum
- : null,
- info.riskLevelForPassNum['B']
- ? info.riskLevelForPassNum['B'].passNum
- : null,
- info.riskLevelForPassNum['C']
- ? info.riskLevelForPassNum['C'].passNum
- : null,
- info.riskLevelForPassNum['D']
- ? info.riskLevelForPassNum['D'].passNum
- : null,
- ],
- },
- ],
- })
- /** */
- chart_othcar_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- xAxis: {
- type: 'value',
- boundaryGap: [0, 0.01],
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.otherBehaviorTypeForNum),
- },
- series: {
- type: 'bar',
- data: Object.values(info.otherBehaviorTypeForNum),
- },
- })
- chart_risk_othcar_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.otherBehaviorForCompLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForCompLevelNum).map(
- (item) => info.otherBehaviorForCompLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForCompLevelNum).map(
- (item) => info.otherBehaviorForCompLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForCompLevelNum).map(
- (item) => info.otherBehaviorForCompLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForCompLevelNum).map(
- (item) => info.otherBehaviorForCompLevelNum[item].D
- ),
- },
- ],
- })
- chart_complex_othcar_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.otherBehaviorForRiskLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForRiskLevelNum).map(
- (item) => info.otherBehaviorForRiskLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForRiskLevelNum).map(
- (item) => info.otherBehaviorForRiskLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForRiskLevelNum).map(
- (item) => info.otherBehaviorForRiskLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorForRiskLevelNum).map(
- (item) => info.otherBehaviorForRiskLevelNum[item].D
- ),
- },
- ],
- })
- chart_weather_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {
- top: '5%',
- left: 'center',
- },
- series: [
- {
- name: '天气类型',
- type: 'pie',
- radius: ['40%', '70%'],
- avoidLabelOverlap: false,
- label: {
- show: false,
- position: 'center',
- },
- emphasis: {
- label: {
- show: true,
- fontSize: 20,
- fontWeight: 'bold',
- },
- },
- labelLine: {
- show: false,
- },
- data: Object.keys(info.weatherTypeForNum).map((item) => {
- return {
- value: info.weatherTypeForNum[item],
- name: item,
- }
- }),
- },
- ],
- })
- chart_complex_weather_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.weatherForCompLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForCompLevelNum).map(
- (item) => info.weatherForCompLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForCompLevelNum).map(
- (item) => info.weatherForCompLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForCompLevelNum).map(
- (item) => info.weatherForCompLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForCompLevelNum).map(
- (item) => info.weatherForCompLevelNum[item].D
- ),
- },
- ],
- })
- chart_risk_weather_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.weatherForRiskLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForRiskLevelNum).map(
- (item) => info.weatherForRiskLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForRiskLevelNum).map(
- (item) => info.weatherForRiskLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForRiskLevelNum).map(
- (item) => info.weatherForRiskLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherForRiskLevelNum).map(
- (item) => info.weatherForRiskLevelNum[item].D
- ),
- },
- ],
- })
- chart_roadtype_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {
- top: '5%',
- left: 'center',
- },
- series: [
- {
- name: '道路类型',
- type: 'pie',
- radius: ['40%', '70%'],
- avoidLabelOverlap: false,
- label: {
- show: false,
- position: 'center',
- },
- emphasis: {
- label: {
- show: true,
- fontSize: 20,
- fontWeight: 'bold',
- },
- },
- labelLine: {
- show: false,
- },
- data: Object.keys(info.roadTypeForNum).map((item) => {
- return {
- value: info.roadTypeForNum[item],
- name: item,
- }
- }),
- },
- ],
- })
- chart_region_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- xAxis: {
- type: 'value',
- boundaryGap: [0, 0.01],
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.operationAreaTypeForNum),
- },
- series: {
- type: 'bar',
- data: Object.values(info.operationAreaTypeForNum),
- },
- })
- chart_roadplane_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- xAxis: {
- type: 'category',
- data: Object.keys(info.roadGeometryPlaneTypeForNum),
- },
- yAxis: {
- type: 'value',
- },
- series: [
- {
- data: Object.values(info.roadGeometryPlaneTypeForNum),
- type: 'bar',
- },
- ],
- })
- chart_roadportrait_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- xAxis: {
- type: 'category',
- data: Object.keys(info.roadGeometryVerticalTypeForNum),
- },
- yAxis: {
- type: 'value',
- },
- series: [
- {
- data: Object.values(info.roadGeometryVerticalTypeForNum),
- type: 'bar',
- },
- ],
- })
- chart_risk_region_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.operationAreaForRiskLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForRiskLevelNum).map(
- (item) => info.operationAreaForRiskLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForRiskLevelNum).map(
- (item) => info.operationAreaForRiskLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForRiskLevelNum).map(
- (item) => info.operationAreaForRiskLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForRiskLevelNum).map(
- (item) => info.operationAreaForRiskLevelNum[item].D
- ),
- },
- ],
- })
- chart_complex_region_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.operationAreaForCompLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForCompLevelNum).map(
- (item) => info.operationAreaForCompLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForCompLevelNum).map(
- (item) => info.operationAreaForCompLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForCompLevelNum).map(
- (item) => info.operationAreaForCompLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.operationAreaForCompLevelNum).map(
- (item) => info.operationAreaForCompLevelNum[item].D
- ),
- },
- ],
- })
- chart_risk_road_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.roadGeometryPlaneForRiskLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForRiskLevelNum).map(
- (item) => info.roadGeometryPlaneForRiskLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForRiskLevelNum).map(
- (item) => info.roadGeometryPlaneForRiskLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForRiskLevelNum).map(
- (item) => info.roadGeometryPlaneForRiskLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForRiskLevelNum).map(
- (item) => info.roadGeometryPlaneForRiskLevelNum[item].D
- ),
- },
- ],
- })
- chart_complex_road_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.roadGeometryPlaneForCompLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForCompLevelNum).map(
- (item) => info.roadGeometryPlaneForCompLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForCompLevelNum).map(
- (item) => info.roadGeometryPlaneForCompLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForCompLevelNum).map(
- (item) => info.roadGeometryPlaneForCompLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryPlaneForCompLevelNum).map(
- (item) => info.roadGeometryPlaneForCompLevelNum[item].D
- ),
- },
- ],
- })
- chart_risk_roadportrait_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.roadGeometryVerticalForRiskLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForRiskLevelNum).map(
- (item) => info.roadGeometryVerticalForRiskLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForRiskLevelNum).map(
- (item) => info.roadGeometryVerticalForRiskLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForRiskLevelNum).map(
- (item) => info.roadGeometryVerticalForRiskLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForRiskLevelNum).map(
- (item) => info.roadGeometryVerticalForRiskLevelNum[item].D
- ),
- },
- ],
- })
- chart_complex_roadportrait_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.roadGeometryVerticalForCompLevelNum),
- },
- series: [
- {
- name: 'A',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForCompLevelNum).map(
- (item) => info.roadGeometryVerticalForCompLevelNum[item].A
- ),
- },
- {
- name: 'B',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForCompLevelNum).map(
- (item) => info.roadGeometryVerticalForCompLevelNum[item].B
- ),
- },
- {
- name: 'C',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForCompLevelNum).map(
- (item) => info.roadGeometryVerticalForCompLevelNum[item].C
- ),
- },
- {
- name: 'D',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadGeometryVerticalForCompLevelNum).map(
- (item) => info.roadGeometryVerticalForCompLevelNum[item].D
- ),
- },
- ],
- })
- chart_algorithm_othcar_scale.setOption(
- {
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.otherBehaviorAndAreaPassNum),
- },
- series: [
- {
- name: '通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorAndAreaPassNum).map(
- (item) => info.otherBehaviorAndAreaPassNum[item].passNum
- ),
- },
- {
- name: '不通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.otherBehaviorAndAreaPassNum).map(
- (item) => info.otherBehaviorAndAreaPassNum[item].unPassNum
- ),
- },
- ],
- }
- // {
- // legend: {},
- // tooltip: {
- // trigger: 'axis',
- // axisPointer: {
- // type: 'shadow',
- // },
- // },
- // grid: {
- // left: '3%',
- // right: '4%',
- // bottom: '3%',
- // containLabel: true,
- // },
- // yAxis: {
- // type: 'value',
- // },
- // xAxis: {
- // type: 'category',
- // data: Object.keys(info.otherBehaviorAndAreaPassNum),
- // },
- // series: [
- // {
- // name: '不通过',
- // type: 'bar',
- // stack: 'total',
- // label: {
- // show: true,
- // },
- // emphasis: {
- // focus: 'series',
- // },
- // data: Object.keys(info.otherBehaviorAndAreaPassNum).map(item=>{
- // return info.otherBehaviorAndAreaPassNum[item]?info.otherBehaviorAndAreaPassNum[item]['unPassNum'] :null
- // }),
- // },
- // {
- // name: '通过',
- // type: 'bar',
- // stack: 'total',
- // label: {
- // show: true,
- // },
- // emphasis: {
- // focus: 'series',
- // },
- // data: Object.keys(info.otherBehaviorAndAreaPassNum).map(item=>{
- // return info.otherBehaviorAndAreaPassNum[item]?info.otherBehaviorAndAreaPassNum[item]['passNum'] : null
- // }),
- // },
- // ],
- // }
- )
- chart_algorithm_weather_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.weatherAndAreaPassNum),
- },
- series: [
- {
- name: '通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherAndAreaPassNum).map(
- (item) => info.weatherAndAreaPassNum[item].passNum
- ),
- },
- {
- name: '不通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.weatherAndAreaPassNum).map(
- (item) => info.weatherAndAreaPassNum[item].unPassNum
- ),
- },
- ],
- })
- chart_algorithm_road_scale.setOption({
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow',
- },
- },
- legend: {},
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true,
- },
- legend: {},
- xAxis: {
- type: 'value',
- },
- yAxis: {
- type: 'category',
- data: Object.keys(info.roadPlanePassNum),
- },
- series: [
- {
- name: '通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadPlanePassNum).map(
- (item) => info.roadPlanePassNum[item].passNum
- ),
- },
- {
- name: '不通过',
- type: 'bar',
- stack: 'total',
- label: {
- show: true,
- },
- emphasis: {
- focus: 'series',
- },
- data: Object.keys(info.roadPlanePassNum).map(
- (item) => info.roadPlanePassNum[item].unPassNum
- ),
- },
- ],
- })
- },
- // 下载报告
- down() {
- const content = this.$refs.pdfContent
- html2canvas(content).then((canvas) => {
- var contentWidth = canvas.width
- var contentHeight = canvas.height
- //一页pdf显示html页面生成的canvas高度;
- var pageHeight = (contentWidth / 592.28) * 841.89
- //未生成pdf的html页面高度
- var leftHeight = contentHeight
- //页面偏移
- var position = 0
- //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
- var imgWidth = 595.28
- var imgHeight = (592.28 / contentWidth) * contentHeight
- var pageData = canvas.toDataURL('image/jpeg', 1.0)
- var pdf = new jsPDF('', 'pt', 'a4')
- //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
- //当内容未超过pdf一页显示的范围,无需分页
- if (leftHeight < pageHeight) {
- pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
- } else {
- while (leftHeight > 0) {
- pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
- leftHeight -= pageHeight
- position -= 841.89
- //避免添加空白页
- if (leftHeight > 0) {
- pdf.addPage()
- }
- }
- }
- pdf.save('报告.pdf')
- })
- },
- },
- }
- </script>
- <style lang="less" scoped>
- .report_box {
- width: 100% !important;
- height: 100% !important;
- display: flex !important;
- flex-direction: column !important;
- align-items: center !important;
- .pdf_box {
- box-sizing: border-box;
- width: 80%;
- height: 100%;
- padding: 20px;
- display: flex;
- flex-direction: column;
- align-content: center;
- .report_banner {
- width: 100%;
- height: 2000px;
- background-image: url('../../assets/common/image/report_banner.png');
- background-repeat: no-repeat;
- background-position: center;
- display: flex;
- flex-direction: column;
- align-items: center;
- h1 {
- margin-top: 350px;
- font-size: 82px;
- font-weight: bold;
- color: #000;
- }
- .report_table {
- margin-top: 250px;
- width: 500px;
- height: auto;
- .table_item {
- width: 100%;
- height: 40px;
- border-bottom: none;
- display: flex;
- align-items: center;
- p {
- width: 200px;
- text-align: center;
- font-size: 18px;
- }
- span {
- width: 100%;
- text-align: left;
- padding-left: 50px;
- font-size: 18px;
- }
- }
- }
- h4 {
- margin-top: 100px;
- font-size: 18px;
- }
- }
- .report_content {
- box-sizing: border-box;
- padding: 0 30px;
- width: 100%;
- min-height: 500px;
- h3 {
- margin-top: 50px;
- text-align: center;
- font-size: 26px;
- color: #3397ff;
- }
- }
- }
- .subtitle {
- font-size: 18px;
- font-weight: bold;
- color: #000;
- margin: 30px 0 30px;
- }
- .text {
- font-size: 16px;
- text-indent: 36px;
- margin-bottom: 10px;
- }
- .echart-box {
- width: 100%;
- min-height: 300px;
- display: flex;
- flex-direction: column;
- align-items: center;
- margin-top: 30px;
- }
- .echart_desc {
- font-size: 12px;
- text-align: center;
- margin-bottom: 30px;
- }
- }
- </style>
|