30 changed files with 2063 additions and 1107 deletions
After Width: | Height: | Size: 804 B |
After Width: | Height: | Size: 1018 KiB |
@ -0,0 +1,94 @@ |
|||
<template> |
|||
<div class='HomeFrame'> |
|||
<ElPopover trigger="manual" :value="activeIcon === 'Frame'" :visibleArrow="false" placement="left" |
|||
popper-class="global-input-search-popover"> |
|||
<Button :class="['btn', { 'btn-active': activeIcon }]" slot="reference" @click.native="handleClick('Frame')"> |
|||
<img src="@screen/images/home-Frame/Frame.svg"> |
|||
</Button> |
|||
|
|||
<div class="body"> |
|||
<div class="title"> |
|||
图标含义 |
|||
</div> |
|||
<!-- <Form labelWidth="90px" column="1" class="form" ref="FormConfigRef" :formList="formList" /> --> |
|||
<img class="image" src="@screen/images/home-Frame/logoMean.jpg"> |
|||
<div class="footer"> |
|||
</div> |
|||
</div> |
|||
</ElPopover> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import Button from '@screen/components/Buttons/Button.vue'; |
|||
import Form from '@screen/components/FormConfig'; |
|||
import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js"; |
|||
import { merge, cloneDeep } from "lodash" |
|||
|
|||
export default { |
|||
name: 'HomeFrame', |
|||
components: { |
|||
Button, |
|||
Form |
|||
}, |
|||
data() { |
|||
return { |
|||
activeIcon: null |
|||
} |
|||
}, |
|||
methods: { |
|||
handleClick(type) { |
|||
this.activeIcon = this.activeIcon === type ? null : type; |
|||
}, |
|||
filterEnd(data) { |
|||
this.activeIcon = null; |
|||
// this.filterData = data; |
|||
this.$parent.$refs.RoadAndEventsRef?.setFilterData?.(data); |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang='scss'> |
|||
div.el-popper.global-input-search-popover { |
|||
background: rgba(6, 66, 88, 0.8); |
|||
border: 1px solid rgba(42, 217, 253, 0.6); |
|||
position: relative; |
|||
padding-top: 36px; |
|||
transform: translateY(24px); |
|||
|
|||
.body { |
|||
.title { |
|||
background: linear-gradient(90deg, #237E9B 0%, rgba(23, 145, 184, 0) 100%); |
|||
padding: 3px 9px; |
|||
position: absolute; |
|||
top: 0; |
|||
left: 0; |
|||
width: 100%; |
|||
|
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
<style lang='scss' scoped> |
|||
.image { |
|||
width: 1440px; |
|||
height: 900px; |
|||
} |
|||
|
|||
.HomeFrame { |
|||
|
|||
.btn { |
|||
padding: 9px; |
|||
background: linear-gradient(180deg, #152E3C 0%, #163A45 100%); |
|||
border-radius: 4px; |
|||
overflow: hidden; |
|||
height: unset; |
|||
border: 1px solid rgba(40, 144, 167, 1); |
|||
} |
|||
|
|||
.btn-active { |
|||
background: linear-gradient(180deg, #005C79 0%, #009BCC 100%); |
|||
} |
|||
} |
|||
</style> |
@ -1,393 +1,552 @@ |
|||
<template> |
|||
<Dialog v-model="modelVisible" title="收费站管制统计" style="width: 100%;"> |
|||
<div class="search"> |
|||
<InputSearch :formList="searchFormList" @handleSearch="handleSearch" style="width: 502px;" /> |
|||
</div> |
|||
|
|||
<div class="StatsDetail"> |
|||
<el-table key="table1" v-if="searchType == 2" :data="tableData" style="width: 100%" |
|||
:span-method="arraySpanMethod"> |
|||
<el-table-column prop="controlCauseName" label="封闭原因" width="150" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="causeTypeName" label="" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="封闭站次" align="center"> |
|||
<el-table-column label="目标时段" width="120" align="center"> |
|||
<el-table-column prop="num" label="站次" width="120" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="numRatio" label="占比(%)" width="120" align="center"> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="去年同期时间段" align="center"> |
|||
<el-table-column prop="lastYearNum" label="站次" width="120" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="lastYearNumRatio" label="占比(%)" width="120" align="center"> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column prop="yearNumRatio" label="同比(%)" align="center"></el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="封闭时长" align="center"> |
|||
<el-table-column label="目标时段" width="120" align="center"> |
|||
<el-table-column prop="minuteTime" label="时长(分钟)" width="120" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="timeRatio" label="占比(%)" width="120" align="center"> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="去年同期时间段" align="center"> |
|||
<el-table-column prop="lastYearTime" label="时长(分钟)" width="120" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="lastYearTimeRatio" label="占比(%)" width="120" align="center"> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column prop="yearTimeRatio" label="同比(%)" align="center"></el-table-column> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-table key="table2" v-else :data="facilityTableData" style="width: 100%"> |
|||
<el-table-column prop="facilityName" label="" width="150" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="facilityClose" label="封闭" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="facilityRestriction" label="限行" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="facilityInterval" label="间隔放行" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="total" label="合计" align="center"> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
</div> |
|||
</Dialog> |
|||
<Dialog v-model="modelVisible" title="收费站管制统计" style="width: 100%"> |
|||
<div class="search"> |
|||
<InputSearch |
|||
:formList="searchFormList" |
|||
@handleSearch="handleSearch" |
|||
style="width: 502px" |
|||
/> |
|||
</div> |
|||
|
|||
<div class="StatsDetail"> |
|||
<el-table |
|||
key="table1" |
|||
v-if="searchType == 2 && controlType == 1" |
|||
:data="tableData" |
|||
style="width: 100%" |
|||
:span-method="arraySpanMethod" |
|||
> |
|||
<el-table-column |
|||
prop="controlCauseName" |
|||
label="封闭原因" |
|||
width="150" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column prop="causeTypeName" label="" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="封闭站次" align="center"> |
|||
<el-table-column label="目标时段" width="120" align="center"> |
|||
<el-table-column prop="num" label="站次" width="120" align="center"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="numRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="去年同期时间段" align="center"> |
|||
<el-table-column |
|||
prop="lastYearNum" |
|||
label="站次" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="lastYearNumRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="yearNumRatio" |
|||
label="同比(%)" |
|||
align="center" |
|||
></el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="封闭时长" align="center"> |
|||
<el-table-column label="目标时段" width="120" align="center"> |
|||
<el-table-column |
|||
prop="minuteTime" |
|||
label="时长(分钟)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="timeRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="去年同期时间段" align="center"> |
|||
<el-table-column |
|||
prop="lastYearTime" |
|||
label="时长(分钟)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="lastYearTimeRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="yearTimeRatio" |
|||
label="同比(%)" |
|||
align="center" |
|||
></el-table-column> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-table |
|||
key="table2" |
|||
v-else-if="searchType == 2 && controlType == 2" |
|||
:data="tableData" |
|||
style="width: 100%" |
|||
:span-method="arraySpanMethod" |
|||
> |
|||
<el-table-column |
|||
prop="controlCauseName" |
|||
label="限行原因" |
|||
width="150" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column prop="causeTypeName" label="" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="限行站次" align="center"> |
|||
<el-table-column label="目标时段" width="120" align="center"> |
|||
<el-table-column prop="num" label="站次" width="120" align="center"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="numRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="去年同期时间段" align="center"> |
|||
<el-table-column |
|||
prop="lastYearNum" |
|||
label="站次" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="lastYearNumRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="yearNumRatio" |
|||
label="同比(%)" |
|||
align="center" |
|||
></el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="限行时长" align="center"> |
|||
<el-table-column label="目标时段" width="120" align="center"> |
|||
<el-table-column |
|||
prop="minuteTime" |
|||
label="时长(分钟)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="timeRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column label="去年同期时间段" align="center"> |
|||
<el-table-column |
|||
prop="lastYearTime" |
|||
label="时长(分钟)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="lastYearTimeRatio" |
|||
label="占比(%)" |
|||
width="120" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="yearTimeRatio" |
|||
label="同比(%)" |
|||
align="center" |
|||
></el-table-column> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-table |
|||
key="table3" |
|||
v-else |
|||
show-summary |
|||
:data="facilityTableData" |
|||
style="width: 100%" |
|||
> |
|||
<el-table-column |
|||
prop="facilityName" |
|||
label="" |
|||
width="150" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column prop="facilityClose" label="封闭" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="facilityRestriction" label="限行" align="center"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="facilityInterval" |
|||
label="间隔放行" |
|||
align="center" |
|||
> |
|||
</el-table-column> |
|||
<el-table-column prop="total" label="合计" align="center"> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</Dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import Dialog from "@screen/components/Dialog/index"; |
|||
import InputSearch from '@screen/components/InputSearch/index.vue'; |
|||
import InputSearch from "@screen/components/InputSearch/index.vue"; |
|||
import Table from "@screen/components/Table.vue"; |
|||
import { selectTollStation } from "@/api/event/governanceAnalysis" |
|||
import { selectTollStation } from "@/api/event/governanceAnalysis"; |
|||
import options from "../assets/charts"; |
|||
import request from "@/utils/request"; |
|||
export default { |
|||
name: 'StatsDetail', |
|||
components: { |
|||
Dialog, |
|||
InputSearch, |
|||
Table |
|||
}, |
|||
model: { |
|||
prop: 'visible', |
|||
event: 'update:value' |
|||
}, |
|||
props: { |
|||
visible: Boolean |
|||
}, |
|||
data() { |
|||
return { |
|||
num: 0, |
|||
tableData: [], |
|||
weatherNum: [], |
|||
startTime: "", |
|||
endTime: "", |
|||
name: "StatsDetail", |
|||
components: { |
|||
Dialog, |
|||
InputSearch, |
|||
Table, |
|||
}, |
|||
model: { |
|||
prop: "visible", |
|||
event: "update:value", |
|||
}, |
|||
props: { |
|||
visible: Boolean, |
|||
}, |
|||
data() { |
|||
return { |
|||
num: 0, |
|||
tableData: [], |
|||
weatherNum: [], |
|||
startTime: "", |
|||
endTime: "", |
|||
pickerOptions: { |
|||
disabledDate(time) { |
|||
return time.getTime() > Date.now(); |
|||
}, |
|||
}, |
|||
searchType: 1, |
|||
controlType: 1, |
|||
facilityIds: [], |
|||
facilityTableData: [], |
|||
searchFormList: [ |
|||
{ |
|||
label: "查询条件:", |
|||
key: "searchType", |
|||
required: true, |
|||
isAlone: true, |
|||
type: "RadioGroup", |
|||
default: 1, |
|||
options: { |
|||
type: "circle", |
|||
options: [ |
|||
{ |
|||
key: 1, |
|||
label: "站点", |
|||
}, |
|||
{ |
|||
key: 2, |
|||
label: "原因", |
|||
}, |
|||
], |
|||
}, |
|||
}, |
|||
{ |
|||
label: "事件类型:", |
|||
key: "controlType", |
|||
required: true, |
|||
isAlone: true, |
|||
type: "RadioGroup", |
|||
visible: (data) => { |
|||
if (data.searchType == 2) { |
|||
return true; |
|||
} |
|||
}, |
|||
default: 1, |
|||
options: { |
|||
type: "circle", |
|||
options: [ |
|||
{ |
|||
key: 1, |
|||
label: "收费站封闭", |
|||
}, |
|||
{ |
|||
key: 2, |
|||
label: "收费站限行", |
|||
}, |
|||
], |
|||
}, |
|||
}, |
|||
{ |
|||
label: "选择站点:", |
|||
key: "facilityId", |
|||
required: true, |
|||
type: "Select", |
|||
options: { |
|||
multiple: true, |
|||
options: [], |
|||
}, |
|||
visible: (data) => { |
|||
if (data.searchType == 1) { |
|||
return true; |
|||
} |
|||
}, |
|||
}, |
|||
{ |
|||
label: "日期:", |
|||
key: "date", |
|||
required: true, |
|||
type: "datePicker", |
|||
options: { |
|||
pickerOptions: { |
|||
disabledDate(time) { |
|||
return time.getTime() > Date.now(); |
|||
}, |
|||
disabledDate(time) { |
|||
return time.getTime() > Date.now(); |
|||
}, |
|||
}, |
|||
valueFormat: "yyyy-MM-dd", |
|||
type: "daterange", |
|||
}, |
|||
}, |
|||
], |
|||
}; |
|||
}, |
|||
computed: { |
|||
modelVisible: { |
|||
get() { |
|||
return this.visible; |
|||
}, |
|||
set(val) { |
|||
this.$emit("update:value", val); |
|||
}, |
|||
}, |
|||
}, |
|||
|
|||
methods: { |
|||
getFacilityList() { |
|||
Promise.allSettled([ |
|||
// 查询收费站 |
|||
request({ |
|||
url: `/business/facility/query`, |
|||
method: "get", |
|||
}), |
|||
]).then((res) => { |
|||
if (res[0].status === "fulfilled" && res[0].value.code == 200) { |
|||
this.searchFormList[2].options.options = res[0].value.data.map( |
|||
(item) => ({ |
|||
key: item.id, |
|||
label: item.facilityName, |
|||
}) |
|||
); |
|||
this.facilityIds = res[0].value.data.map((item) => item.id); |
|||
// this.searchFormList[2].default = res[0].value.data.map(item => item.id) |
|||
let currentMonth = moment().format("YYYY-MM"); |
|||
let currentDate = moment().format("YYYY-MM-DD"); |
|||
let data = { |
|||
searchType: 1, |
|||
facilityIds: [], |
|||
facilityTableData: [], |
|||
searchFormList: [ |
|||
{ |
|||
label: "查询条件:", |
|||
key: "searchType", |
|||
required: true, |
|||
isAlone: true, |
|||
type: "RadioGroup", |
|||
default: 1, |
|||
options: { |
|||
type: 'circle', |
|||
options: [ |
|||
{ |
|||
key: 1, |
|||
label: "站点", |
|||
}, |
|||
{ |
|||
key: 2, |
|||
label: "原因", |
|||
} |
|||
] |
|||
} |
|||
}, |
|||
{ |
|||
label: "事件类型:", |
|||
key: "controlType", |
|||
required: true, |
|||
isAlone: true, |
|||
type: "RadioGroup", |
|||
visible: data => { |
|||
if (data.searchType == 2) { |
|||
return true |
|||
} |
|||
}, |
|||
default: 1, |
|||
options: { |
|||
type: 'circle', |
|||
options: [{ |
|||
key: 1, |
|||
label: "收费站封闭", |
|||
}, |
|||
{ |
|||
key: 2, |
|||
label: "收费站限行", |
|||
}] |
|||
} |
|||
}, |
|||
{ |
|||
label: "选择站点:", |
|||
key: "facilityId", |
|||
required: true, |
|||
type: "Select", |
|||
options: { |
|||
multiple: true, |
|||
options: [] |
|||
}, |
|||
visible: data => { |
|||
if (data.searchType == 1) { |
|||
return true |
|||
} |
|||
}, |
|||
}, |
|||
{ |
|||
label: "日期:", |
|||
key: "date", |
|||
required: true, |
|||
type: "datePicker", |
|||
options: { |
|||
pickerOptions: { |
|||
disabledDate(time) { |
|||
return time.getTime() > Date.now(); |
|||
}, |
|||
}, |
|||
valueFormat: "yyyy-MM-dd", |
|||
type: "daterange" |
|||
} |
|||
}, |
|||
], |
|||
facilityId: this.facilityIds, |
|||
date: [currentMonth + "-01", currentDate], |
|||
}; |
|||
this.getSelectTollStation(data); |
|||
} |
|||
|
|||
}); |
|||
}, |
|||
computed: { |
|||
modelVisible: { |
|||
get() { |
|||
return this.visible; |
|||
}, |
|||
set(val) { |
|||
this.$emit('update:value', val) |
|||
handleSearch(data) { |
|||
this.getSelectTollStation(data); |
|||
}, |
|||
arraySpanMethod({ row, column, rowIndex, columnIndex }) { |
|||
if (this.searchType == 2) { |
|||
if (!row.causeTypeName) { |
|||
if (columnIndex === 0) { |
|||
return [1, 2]; |
|||
} else if (columnIndex === 1) { |
|||
return [0, 0]; |
|||
} |
|||
} |
|||
if (row.controlCauseName === "恶劣天气") { |
|||
if (columnIndex === 0) { |
|||
console.log(this.weatherNum.length); |
|||
if (rowIndex === 0) { |
|||
return [this.weatherNum.length, 1]; |
|||
} else if (rowIndex <= this.weatherNum.length) { |
|||
return [0, 0]; |
|||
} |
|||
// if (rowIndex === 2) { |
|||
// return [7, 1]; |
|||
// } |
|||
// else if (rowIndex === 3) { |
|||
// return [0, 0]; |
|||
// } else if (rowIndex === 4) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 5) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 6) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 7) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 8) { |
|||
// return [0, 0]; |
|||
// } |
|||
} |
|||
// this.weatherNum = 0 |
|||
} |
|||
} |
|||
}, |
|||
|
|||
methods: { |
|||
getFacilityList() { |
|||
Promise.allSettled([ |
|||
// 查询收费站 |
|||
request({ |
|||
url: `/business/facility/query`, |
|||
method: "get", |
|||
}), |
|||
]) |
|||
.then((res) => { |
|||
if (res[0].status === 'fulfilled' && res[0].value.code == 200) { |
|||
this.searchFormList[2].options.options = res[0].value.data.map(item => ({ |
|||
key: item.id, |
|||
label: item.facilityName, |
|||
})) |
|||
this.facilityIds = res[0].value.data.map(item => item.id) |
|||
// this.searchFormList[2].default = res[0].value.data.map(item => item.id) |
|||
|
|||
let date = moment().format('YYYY-MM-DD') |
|||
let data = { |
|||
searchType: 1, |
|||
facilityId: this.facilityIds, |
|||
date: [date + " 00:00:00", date + " 23:59:59"] |
|||
} |
|||
this.getSelectTollStation(data) |
|||
} |
|||
}) |
|||
|
|||
}, |
|||
handleSearch(data) { |
|||
this.getSelectTollStation(data) |
|||
}, |
|||
arraySpanMethod({ row, column, rowIndex, columnIndex }) { |
|||
|
|||
if (this.searchType == 2) { |
|||
|
|||
if (!row.causeTypeName) { |
|||
if (columnIndex === 0) { |
|||
return [1, 2]; |
|||
} |
|||
else if (columnIndex === 1) { |
|||
return [0, 0]; |
|||
} |
|||
}; |
|||
if (row.controlCauseName === '恶劣天气') { |
|||
if (columnIndex === 0) { |
|||
console.log(this.weatherNum.length) |
|||
if (rowIndex === 0) { |
|||
return [this.weatherNum.length, 1]; |
|||
} else if (rowIndex <= this.weatherNum.length) { |
|||
return [0, 0]; |
|||
} |
|||
// if (rowIndex === 2) { |
|||
// return [7, 1]; |
|||
// } |
|||
// else if (rowIndex === 3) { |
|||
// return [0, 0]; |
|||
// } else if (rowIndex === 4) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 5) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 6) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 7) { |
|||
// return [0, 0]; |
|||
// } |
|||
// else if (rowIndex === 8) { |
|||
// return [0, 0]; |
|||
// } |
|||
|
|||
} |
|||
// this.weatherNum = 0 |
|||
} |
|||
} |
|||
|
|||
|
|||
}, |
|||
getSelectTollStation(data) { |
|||
let startTime = "" |
|||
let endTime = "" |
|||
if (data) { |
|||
startTime = data.date[0] + ' 00:00:00' |
|||
endTime = data.date[1] + ' 23:59:59' |
|||
getSelectTollStation(data) { |
|||
let startTime = ""; |
|||
let endTime = ""; |
|||
if (data) { |
|||
startTime = data.date[0] + " 00:00:00"; |
|||
endTime = data.date[1] + " 23:59:59"; |
|||
} else { |
|||
startTime = new Date("2024-01-01 11:12:21"); |
|||
startTime = new Date("2024-01-26 11:12:36"); |
|||
} |
|||
|
|||
var formData = new FormData(); |
|||
this.searchType = data.searchType; |
|||
this.controlType = data.controlType; |
|||
if (data.searchType == 1) { |
|||
formData.append("facilityId", data.facilityId); |
|||
} else { |
|||
formData.append("controlType", data.controlType); |
|||
} |
|||
formData.append("searchType", data.searchType); |
|||
formData.append("startTime", startTime); |
|||
formData.append("endTime", endTime); |
|||
let weatherData = []; |
|||
let otherData = []; |
|||
selectTollStation(formData).then((res) => { |
|||
if (data.searchType == 2) { |
|||
this.weatherNum = []; |
|||
res.data.forEach((item) => { |
|||
if (item.causeTypeName) { |
|||
this.weatherNum.push(item.causeTypeName); |
|||
weatherData.push(item); |
|||
} else { |
|||
startTime = new Date("2024-01-01 11:12:21") |
|||
startTime = new Date("2024-01-26 11:12:36") |
|||
otherData.push(item); |
|||
} |
|||
|
|||
var formData = new FormData(); |
|||
this.searchType = data.searchType |
|||
if (data.searchType == 1) { |
|||
formData.append("facilityId", data.facilityId); |
|||
} else { |
|||
formData.append("controlType", data.controlType); |
|||
} |
|||
formData.append("searchType", data.searchType); |
|||
formData.append("startTime", startTime); |
|||
formData.append("endTime", endTime); |
|||
let weatherData = [] |
|||
let otherData = [] |
|||
selectTollStation(formData).then((res) => { |
|||
if (data.searchType == 2) { |
|||
this.weatherNum = [] |
|||
res.data.forEach(item => { |
|||
if (item.causeTypeName) { |
|||
this.weatherNum.push(item.causeTypeName) |
|||
weatherData.push(item) |
|||
} else { |
|||
otherData.push(item) |
|||
} |
|||
}); |
|||
this.tableData = weatherData.concat(otherData) |
|||
} else { |
|||
res.data.forEach((item) => { |
|||
item.total = item.facilityClose + item.facilityRestriction + item.facilityInterval |
|||
}) |
|||
this.facilityTableData = res.data |
|||
|
|||
} |
|||
|
|||
}) |
|||
|
|||
}); |
|||
this.tableData = weatherData.concat(otherData); |
|||
} else { |
|||
res.data.forEach((item) => { |
|||
item.total = |
|||
item.facilityClose + |
|||
item.facilityRestriction + |
|||
item.facilityInterval; |
|||
}); |
|||
this.facilityTableData = res.data; |
|||
} |
|||
}); |
|||
}, |
|||
mounted() { |
|||
this.getFacilityList() |
|||
|
|||
|
|||
} |
|||
} |
|||
}, |
|||
mounted() { |
|||
this.getFacilityList(); |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.dialog { |
|||
min-height: 800px; |
|||
min-height: 800px; |
|||
} |
|||
|
|||
.search { |
|||
display: flex; |
|||
flex-direction: row-reverse; |
|||
display: flex; |
|||
flex-direction: row-reverse; |
|||
} |
|||
|
|||
::v-deep .is-scrolling-none { |
|||
background: #0B6581; |
|||
|
|||
background: #0b6581; |
|||
} |
|||
|
|||
::v-deep .el-table__empty-text { |
|||
color: #3AE0F8; |
|||
color: #3ae0f8; |
|||
} |
|||
|
|||
.StatsDetail { |
|||
// height: 770px; |
|||
margin: 20px 0; |
|||
width: 100%; |
|||
display: flex; |
|||
gap: 5px; |
|||
// height: 770px; |
|||
margin: 20px 0; |
|||
width: 100%; |
|||
display: flex; |
|||
gap: 5px; |
|||
} |
|||
|
|||
.el-table { |
|||
border: 1px solid #07AEC6; |
|||
background: #0B6581; |
|||
border: 1px solid #07aec6; |
|||
background: #0b6581; |
|||
} |
|||
|
|||
::v-deep .el-table .el-table__header-wrapper th, |
|||
.el-table .el-table__fixed-header-wrapper th { |
|||
background: #0B6581; |
|||
border: 1px solid #07AEC6; |
|||
background: #0b6581; |
|||
border: 1px solid #07aec6; |
|||
} |
|||
|
|||
::v-deep .el-table th.el-table__cell>.cell { |
|||
color: #3DE8FF; |
|||
::v-deep .el-table th.el-table__cell > .cell { |
|||
color: #3de8ff; |
|||
} |
|||
|
|||
::v-deep .el-table thead.is-group th.el-table__cell { |
|||
background: #0B6581; |
|||
border: 1px solid #07AEC6; |
|||
background: #0b6581; |
|||
border: 1px solid #07aec6; |
|||
} |
|||
|
|||
// ::v-deep .el-table th.el-table__cell.is-leaf, |
|||
::v-deep .el-table td.el-table__cell { |
|||
border: 1px solid #07AEC6; |
|||
background: #1B586D; |
|||
color: #fff; |
|||
border: 1px solid #07aec6; |
|||
background: #1b586d; |
|||
color: #fff; |
|||
} |
|||
|
|||
::v-deep .el-table tr { |
|||
border: 1px solid #07AEC6; |
|||
background-color: #0B6581; |
|||
border: 1px solid #07aec6; |
|||
background-color: #0b6581; |
|||
} |
|||
|
|||
::v-deep .el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell { |
|||
background: #1B586D; |
|||
border: 1px solid #07AEC6; |
|||
::v-deep |
|||
.el-table--enable-row-hover |
|||
.el-table__body |
|||
tr:hover |
|||
> td.el-table__cell { |
|||
background: #1b586d; |
|||
border: 1px solid #07aec6; |
|||
} |
|||
|
|||
::v-deep .el-table::before, |
|||
.el-table--group::after, |
|||
.el-table--border::after { |
|||
background: none; |
|||
background: none; |
|||
} |
|||
</style> |
|||
</style> |
|||
|
@ -1,130 +1,155 @@ |
|||
|
|||
/* 数据 */ |
|||
let nameList = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]; // 类别
|
|||
let valueList = [800, 520, 650, 950, 420, 600, 450, 720, 303, 503, 203, 703, 903]; // 人数
|
|||
let nameList = [ |
|||
"1月", |
|||
"2月", |
|||
"3月", |
|||
"4月", |
|||
"5月", |
|||
"6月", |
|||
"7月", |
|||
"8月", |
|||
"9月", |
|||
"10月", |
|||
"11月", |
|||
"12月", |
|||
]; // 类别
|
|||
let valueList = [ |
|||
800, 520, 650, 950, 420, 600, 450, 720, 303, 503, 203, 703, 903, |
|||
]; // 人数
|
|||
// var yList = ["1000", "800", "轻度拥堵", "基本畅通", "畅通"]
|
|||
/* 数据整合 */ |
|||
let dataList = []; |
|||
nameList.map((item, index) => { |
|||
if (index === 4) { |
|||
dataList.push({ |
|||
name: item, |
|||
value: valueList[index], |
|||
itemStyle: { |
|||
color: { |
|||
type: 'linear', |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [{ |
|||
offset: 0, color: '#FFB904' // 0% 处的颜色
|
|||
}, { |
|||
offset: 1, color: '#FF6969' // 100% 处的颜色
|
|||
}], |
|||
global: false // 缺省为 false
|
|||
if (index === 4) { |
|||
dataList.push({ |
|||
name: item, |
|||
value: valueList[index], |
|||
itemStyle: { |
|||
color: { |
|||
type: "linear", |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [ |
|||
{ |
|||
offset: 0, |
|||
color: "#FFB904", // 0% 处的颜色
|
|||
}, |
|||
borderRadius: 6 |
|||
}, |
|||
label: { show: false } |
|||
}) |
|||
} else { |
|||
dataList.push({ |
|||
name: item, |
|||
value: valueList[index], |
|||
itemStyle: { |
|||
borderRadius: 6 |
|||
} |
|||
}) |
|||
} |
|||
}) |
|||
|
|||
var options = { |
|||
grid: { |
|||
top: '7%',//上边距
|
|||
right: '0',//右边距
|
|||
left: '0',//左边距
|
|||
bottom: "2%",//下边距
|
|||
containLabel: true, |
|||
}, |
|||
tooltip: { |
|||
|
|||
}, |
|||
xAxis: { |
|||
type: 'category', |
|||
data: nameList, |
|||
axisTick: { |
|||
show: false //隐藏X轴刻度
|
|||
{ |
|||
offset: 1, |
|||
color: "#FF6969", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
global: false, // 缺省为 false
|
|||
}, |
|||
borderRadius: 6, |
|||
}, |
|||
axisLine: { |
|||
lineStyle: { |
|||
color: "rgba(49, 217, 255, 0.8)" |
|||
} |
|||
label: { show: false }, |
|||
}); |
|||
} else { |
|||
dataList.push({ |
|||
name: item, |
|||
value: valueList[index], |
|||
itemStyle: { |
|||
borderRadius: 6, |
|||
}, |
|||
axisLabel: { |
|||
show: true, |
|||
color: '#B6E6FF', |
|||
fontSize: 8, |
|||
fontFamily: 'Source Han Sans CN-Regular', |
|||
}); |
|||
} |
|||
}); |
|||
|
|||
var options = { |
|||
grid: { |
|||
top: "7%", //上边距
|
|||
right: "0", //右边距
|
|||
left: "0", //左边距
|
|||
bottom: "2%", //下边距
|
|||
containLabel: true, |
|||
}, |
|||
tooltip: {}, |
|||
xAxis: { |
|||
type: "category", |
|||
data: [], |
|||
axisTick: { |
|||
show: false, //隐藏X轴刻度
|
|||
}, |
|||
axisLine: { |
|||
lineStyle: { |
|||
color: "rgba(49, 217, 255, 0.8)", |
|||
}, |
|||
}, |
|||
yAxis: [{ |
|||
type: 'value', |
|||
}, |
|||
axisLabel: { |
|||
show: true, |
|||
color: "#fff", |
|||
fontSize: "10px", |
|||
fontFamily: "Source Han Sans CN-Regular", |
|||
}, |
|||
}, |
|||
yAxis: [ |
|||
{ |
|||
type: "value", |
|||
name: "", |
|||
splitNumber: 5, |
|||
nameTextStyle: { |
|||
color: '#B6E6FF', |
|||
fontSize: 13, |
|||
fontFamily: 'Source Han Sans CN-Regular', |
|||
align: "left", |
|||
verticalAlign: "center", |
|||
color: "#B6E6FF", |
|||
fontSize: 10, |
|||
fontFamily: "Source Han Sans CN-Regular", |
|||
align: "left", |
|||
verticalAlign: "center", |
|||
}, |
|||
axisLabel: { |
|||
fontSize: 13, |
|||
color: '#B6E6FF', |
|||
fontFamily: 'HarmonyOS Sans-Regular', |
|||
// formatter:function(value,index){
|
|||
// return yList[index]
|
|||
// }
|
|||
fontSize: "10px", |
|||
color: "#fff", |
|||
fontFamily: "HarmonyOS Sans-Regular", |
|||
// formatter:function(value,index){
|
|||
// return yList[index]
|
|||
// }
|
|||
}, |
|||
axisLine: { |
|||
show: false, |
|||
show: false, |
|||
}, |
|||
axisTick: { |
|||
show: false |
|||
show: false, |
|||
}, |
|||
splitLine: { |
|||
lineStyle: { |
|||
color: 'rgba(49, 217, 255, 0.5)', |
|||
} |
|||
lineStyle: { |
|||
color: "rgba(49, 217, 255, 0.5)", |
|||
}, |
|||
}, |
|||
}], |
|||
series: [{ |
|||
type: 'bar', |
|||
data: dataList, |
|||
}, |
|||
], |
|||
series: [ |
|||
{ |
|||
type: "bar", |
|||
data: [], |
|||
z: 4, |
|||
itemStyle: { |
|||
color: { |
|||
type: 'linear', |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [{ |
|||
offset: 0, color: '#06D7B1' // 0% 处的颜色
|
|||
}, { |
|||
offset: 1, color: '#80F1BB' // 100% 处的颜色
|
|||
}], |
|||
global: false // 缺省为 false
|
|||
}, |
|||
borderRadius: [4, 4, 0, 0] |
|||
color: { |
|||
type: "linear", |
|||
x: 0, |
|||
y: 0, |
|||
x2: 0, |
|||
y2: 1, |
|||
colorStops: [ |
|||
{ |
|||
offset: 0, |
|||
color: "#06D7B1", // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: "#80F1BB", // 100% 处的颜色
|
|||
}, |
|||
], |
|||
global: false, // 缺省为 false
|
|||
}, |
|||
borderRadius: [4, 4, 0, 0], |
|||
}, |
|||
barWidth: 10, |
|||
label: { |
|||
show: false, |
|||
} |
|||
}, |
|||
] |
|||
} |
|||
show: false, |
|||
}, |
|||
}, |
|||
], |
|||
}; |
|||
|
|||
export default options; |
|||
|
@ -1,203 +1,225 @@ |
|||
|
|||
import * as echarts from "echarts"; |
|||
let color = ['#4278F8F9', 'transparent','#5372C4F9', 'transparent', '#0046FFF9', 'transparent','#FB9434F9', 'transparent','#854101F9', 'transparent', '#05E599F9', 'transparent','#219F73F9', 'transparent','#7CEDD5F9', 'transparent',]; |
|||
let colorend = ['#4278F800', 'transparent', '#5372C400', 'transparent','#0046FF00', 'transparent', '#FB943400', 'transparent','#85410100', 'transparent','#05E59900', 'transparent','#219F7300', 'transparent','#7CEDD500', 'transparent',]; |
|||
let color = [ |
|||
"#4278F8F9", |
|||
"#5372C4F9", |
|||
"#0046FFF9", |
|||
"#FB9434F9", |
|||
"#854101F9", |
|||
"#05E599F9", |
|||
"#219F73F9", |
|||
"#7CEDD5F9", |
|||
]; |
|||
let colorend = [ |
|||
"#4278F800", |
|||
"#5372C400", |
|||
"#0046FF00", |
|||
"#FB943400", |
|||
"#85410100", |
|||
"#05E59900", |
|||
"#219F7300", |
|||
"#7CEDD500", |
|||
]; |
|||
const datas = [ |
|||
{ |
|||
name: '客1', |
|||
// num:''
|
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: '客2', |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: '客3', |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: '专1', |
|||
// num:''
|
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: '专2', |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: '专3', |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: '货1', |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: '货2', |
|||
value: 13456, |
|||
}, |
|||
]; |
|||
{ |
|||
name: "客1", |
|||
// num:''
|
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: "客2", |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: "客3", |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: "专1", |
|||
// num:''
|
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: "专2", |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: "专3", |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: "货1", |
|||
value: 13456, |
|||
}, |
|||
{ |
|||
name: "货2", |
|||
value: 13456, |
|||
}, |
|||
]; |
|||
|
|||
let sum = 0; |
|||
let sum = 0; |
|||
for (var i of datas) { |
|||
sum += i.value; |
|||
sum += i.value; |
|||
} |
|||
|
|||
var options = { |
|||
tooltip: { |
|||
show:true, |
|||
trigger: 'item', |
|||
formatter: '{a} <br/>{b}: {c} ({d}%)', |
|||
backgroundColor:"#ffffff", |
|||
textStyle:{ |
|||
color:"#666" |
|||
} |
|||
tooltip: { |
|||
show: true, |
|||
// trigger: "item",
|
|||
// formatter: "{a} <br/>{b}: {c} ({d}%)",
|
|||
// backgroundColor: "#ffffff",
|
|||
// textStyle: {
|
|||
// color: "#666",
|
|||
// },
|
|||
}, |
|||
legend: { |
|||
orient: "vertical", |
|||
right: 40, |
|||
top: 50, |
|||
formatter: (name) => { |
|||
let res = datas.filter((v) => v.name === name); |
|||
let str = ""; |
|||
str = |
|||
"{name1|" + |
|||
res[0].name + |
|||
"}{name2|" + |
|||
res[0].value + |
|||
"}辆" + |
|||
"{name2|" + |
|||
(res[0].value / sum) * 100 + |
|||
"}%"; |
|||
return str; |
|||
}, |
|||
legend: { |
|||
orient: 'vertical', |
|||
right: 40, |
|||
top:50, |
|||
formatter:(name)=>{ |
|||
let res = datas.filter(v => v.name === name); |
|||
let str = '' |
|||
str = '{name1|' + res[0].name + '}{name2|' + res[0].value + '}辆'+ '{name2|' + res[0].value/sum * 100 + '}%' |
|||
return str |
|||
icon: "circle", |
|||
itemWidth: 10, |
|||
itemHeight: 10, |
|||
itemGap: 20, |
|||
borderRadius: 50, |
|||
itemStyle: {}, |
|||
textStyle: { |
|||
rich: { |
|||
background: { |
|||
background: "#DEDEDE", |
|||
fontSize: 14, |
|||
align: "left", |
|||
padding: [0, 10, 20, 0], |
|||
}, |
|||
icon: 'circle', |
|||
itemWidth:10, |
|||
itemHeight:10, |
|||
itemGap: 20, |
|||
borderRadius:50, |
|||
itemStyle:{ |
|||
|
|||
name1: { |
|||
color: "#fff", |
|||
fontSize: 14, |
|||
Width: 12, |
|||
align: "left", |
|||
padding: [0, 0, 0, 10], |
|||
}, |
|||
textStyle:{ |
|||
rich:{ |
|||
background: { |
|||
background: '#DEDEDE', |
|||
fontSize: 14, |
|||
align: 'left', |
|||
padding: [0, 10, 20, 0], |
|||
}, |
|||
name1: { |
|||
color: '#fff', |
|||
fontSize: 14, |
|||
Width: 12, |
|||
align: 'left', |
|||
padding: [0, 0, 0, 10], |
|||
}, |
|||
name2: { |
|||
color: '#37E7FF', |
|||
fontSize: 14, |
|||
align: 'left', |
|||
padding: [0, 0, 0, 10], |
|||
}, |
|||
value: { |
|||
color: '#ccc', |
|||
fontSize: 14, |
|||
align: 'left', |
|||
}, |
|||
title: { |
|||
// color: '#fff',
|
|||
color: "#C60020", |
|||
fontWeight:'bold', |
|||
fontSize: 40, |
|||
} |
|||
}, |
|||
color:"#fff", |
|||
name2: { |
|||
color: "#37E7FF", |
|||
fontSize: 14, |
|||
align: "left", |
|||
padding: [0, 0, 0, 10], |
|||
}, |
|||
value: { |
|||
color: "#ccc", |
|||
fontSize: 14, |
|||
align: "left", |
|||
}, |
|||
title: { |
|||
// color: '#fff',
|
|||
color: "#C60020", |
|||
fontWeight: "bold", |
|||
fontSize: 40, |
|||
}, |
|||
data: [ |
|||
{ |
|||
name:'客1', |
|||
backgroundColor:'#5CC5FF', |
|||
}, '客2', '客3', '货1', |
|||
'货2', '专1', '专2', '专3'] |
|||
}, |
|||
color: "#fff", |
|||
}, |
|||
series: [ |
|||
{ |
|||
name: '', |
|||
type: 'pie', |
|||
selectedMode: 'single', |
|||
radius: [0, '50%'], |
|||
center:['25%','50%'], |
|||
label: { |
|||
normal: { |
|||
position: 'inner', |
|||
show: true, |
|||
color:'#fff', |
|||
fontSize:14, |
|||
formatter: '{b}\n{c}辆', |
|||
} |
|||
}, |
|||
data: [ |
|||
{value: 2290, name: '客车\n'}, |
|||
{value: 1020, name: '货车\n'}, |
|||
{value: 3000, name: '专项车\n'}, |
|||
], |
|||
color:['#708FFF','#FB9434','#219F73'] |
|||
data: [ |
|||
{ |
|||
name: "客1", |
|||
backgroundColor: "#5CC5FF", |
|||
}, |
|||
"客2", |
|||
"客3", |
|||
"货1", |
|||
"货2", |
|||
"专1", |
|||
"专2", |
|||
"专3", |
|||
], |
|||
}, |
|||
series: [ |
|||
{ |
|||
name: "", |
|||
type: "pie", |
|||
selectedMode: "single", |
|||
radius: [0, "50%"], |
|||
center: ["25%", "50%"], |
|||
label: { |
|||
normal: { |
|||
position: "inner", |
|||
show: true, |
|||
color: "#fff", |
|||
fontSize: 14, |
|||
formatter: "{b}\n{c}辆", |
|||
}, |
|||
{ |
|||
name: '', |
|||
type: 'pie', |
|||
radius: ['60%', '70%'], |
|||
center:['25%','50%'], |
|||
label: { |
|||
position: 'inner', |
|||
show: false |
|||
}, |
|||
data: [ |
|||
{value: 13456, name: '客1'}, |
|||
{value: 2000, name: ''}, |
|||
{value: 13456, name: '客2'}, |
|||
{value: 2000, name: ''}, |
|||
{value: 13456, name: '客3'}, |
|||
{value: 2000, name: ''}, |
|||
{value: 13456, name: '货1'}, |
|||
{value: 2000, name: ''}, |
|||
{value: 13456, name: '货2'}, |
|||
{value: 2000, name: ''}, |
|||
{value: 13456, name: '专1'}, |
|||
{value: 2000, name: ''}, |
|||
{value: 13456, name: '专2'}, |
|||
{value: 2000, name: ''}, |
|||
{value: 13456, name: '专3'}, |
|||
{value: 2000, name: ''}, |
|||
], |
|||
itemStyle: { |
|||
normal: { |
|||
borderRadius: "5", |
|||
borderWidth:0, |
|||
borderType:"solid", |
|||
borderCap:"round", |
|||
borderJoin:"round", |
|||
borderColor:"#064258", |
|||
borderMiterLimit:"20", |
|||
color: function(params) { |
|||
return { |
|||
type: 'linear', |
|||
x: 0, |
|||
y: 0, |
|||
x2: 1, |
|||
y2: 1, |
|||
colorStops: [{ |
|||
offset: 0, |
|||
color: color[params.dataIndex] // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: colorend[params.dataIndex] // 100% 处的颜色
|
|||
} |
|||
], |
|||
globalCoord: false // 缺省为 false
|
|||
} |
|||
} |
|||
}, |
|||
data: [ |
|||
{ value: 2290, name: "客车\n" }, |
|||
{ value: 1020, name: "货车\n" }, |
|||
{ value: 3000, name: "专项车\n" }, |
|||
], |
|||
color: ["#708FFF", "#FB9434", "#219F73"], |
|||
}, |
|||
{ |
|||
name: "", |
|||
type: "pie", |
|||
radius: ["60%", "70%"], |
|||
center: ["25%", "50%"], |
|||
label: { |
|||
position: "inner", |
|||
show: false, |
|||
}, |
|||
data: [ |
|||
{ value: 13456, name: "客1" }, |
|||
{ value: 13456, name: "客2" }, |
|||
{ value: 13456, name: "客3" }, |
|||
{ value: 13456, name: "货1" }, |
|||
{ value: 13456, name: "货2" }, |
|||
{ value: 13456, name: "专1" }, |
|||
{ value: 13456, name: "专2" }, |
|||
{ value: 13456, name: "专3" }, |
|||
], |
|||
itemStyle: { |
|||
normal: { |
|||
borderRadius: "5", |
|||
borderWidth: 2, |
|||
borderType: "solid", |
|||
borderCap: "round", |
|||
borderJoin: "round", |
|||
borderColor: "#064258", |
|||
borderMiterLimit: "20", |
|||
color: function (params) { |
|||
return { |
|||
type: "linear", |
|||
x: 0, |
|||
y: 0, |
|||
x2: 1, |
|||
y2: 1, |
|||
colorStops: [ |
|||
{ |
|||
offset: 0, |
|||
color: color[params.dataIndex], // 0% 处的颜色
|
|||
}, |
|||
}, |
|||
color:['#009688','#63BA79','#FFB800','#F7ED46','#666666'] |
|||
} |
|||
] |
|||
} |
|||
|
|||
{ |
|||
offset: 1, |
|||
color: colorend[params.dataIndex], // 100% 处的颜色
|
|||
}, |
|||
], |
|||
globalCoord: false, // 缺省为 false
|
|||
}; |
|||
}, |
|||
}, |
|||
}, |
|||
// color: ["#009688", "#63BA79", "#FFB800", "#F7ED46", "#666666"],
|
|||
}, |
|||
], |
|||
}; |
|||
|
|||
export default options; |
|||
|
@ -1,188 +1,256 @@ |
|||
<template> |
|||
<div class='heightway'> |
|||
<div class="heightway"> |
|||
<WgtTitle :title="'交通路段状态'"></WgtTitle> |
|||
<div class="board"> |
|||
<div class="searchPanel"> |
|||
<div >起始桩号:k</div> |
|||
<el-input class="inputZh" v-model="start"></el-input> |
|||
<el-input class="inputZh inputJl" v-model="start1"></el-input> |
|||
<div >结束桩号:k</div> |
|||
<el-input class="inputZh" v-model="start2"></el-input> |
|||
<el-input class="inputZh inputJl" v-model="start3"></el-input> |
|||
<div >路段方向:</div> |
|||
<el-select v-model="area" class="selectRoad" placeholder="请选择"> |
|||
<el-option |
|||
v-for="item in areaOptions" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
<el-button type="primary" class="btnSearch" @click="onSubmit">搜索</el-button> |
|||
<el-button class="btnReset">重置</el-button> |
|||
<div class="searchPanel"> |
|||
<div>起始桩号:k</div> |
|||
<el-input class="inputZh" v-model="start" placeholder="55"></el-input> |
|||
<span>+</span> |
|||
<el-input |
|||
class="inputZh inputJl" |
|||
v-model="start1" |
|||
placeholder="378" |
|||
></el-input> |
|||
<div>结束桩号:k</div> |
|||
<el-input class="inputZh" v-model="start2" placeholder="208"></el-input> |
|||
<span>+</span> |
|||
<el-input |
|||
class="inputZh inputJl" |
|||
v-model="start3" |
|||
placeholder="153" |
|||
></el-input> |
|||
<div>路段方向:</div> |
|||
<el-select v-model="area" class="selectRoad" placeholder="请选择"> |
|||
<el-option |
|||
v-for="item in areaOptions" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
> |
|||
</el-option> |
|||
</el-select> |
|||
<el-button type="primary" class="btnSearch" @click="onSubmit" |
|||
>搜索</el-button |
|||
> |
|||
<el-button class="btnReset">重置</el-button> |
|||
</div> |
|||
<div class="tblResult"> |
|||
<div class="tblTd"> |
|||
<div>路段名称</div> |
|||
<div>方向</div> |
|||
<div>状态</div> |
|||
<div>平均车速</div> |
|||
<div>总车流量</div> |
|||
</div> |
|||
<div class="tblResult"> |
|||
<div class="tblTd"> |
|||
<div>路段名称</div> |
|||
<div>方向</div> |
|||
<div>状态</div> |
|||
<div>平均车速</div> |
|||
<div>总车流量</div> |
|||
</div> |
|||
<div :class="'tblTd ' + (index%2===0?'tblTwo':'')" v-for="(item,index) of list"> |
|||
<div>{{ item.name }}</div> |
|||
<div>{{ item.direction }}</div> |
|||
<div style="color:#00EBC1">{{ item.state }}</div> |
|||
<div>{{ item.speed }}</div> |
|||
<div>{{ item.follow }}</div> |
|||
</div> |
|||
<div |
|||
:class="'tblTd ' + (index % 2 === 0 ? 'tblTwo' : '')" |
|||
v-for="(item, index) of list" |
|||
> |
|||
<div>{{ item.name }}</div> |
|||
<div>{{ item.direction }}</div> |
|||
<div style="color: #00ebc1">{{ item.state }}</div> |
|||
<div>{{ item.speed }}</div> |
|||
<div>{{ item.follow }}</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
|
|||
import WgtTitle from '../../../widgets/title' |
|||
import WgtTitle from "../../../widgets/title"; |
|||
export default { |
|||
name: 'Heightway', |
|||
name: "Heightway", |
|||
components: { |
|||
WgtTitle |
|||
WgtTitle, |
|||
}, |
|||
data() { |
|||
return { |
|||
start:'', |
|||
start1:'', |
|||
start2:'', |
|||
start3:'', |
|||
areaOptions: [{ |
|||
value: '济南', |
|||
label: '济南' |
|||
}, { |
|||
value: '菏泽', |
|||
label: '菏泽' |
|||
}], |
|||
area: '济南', |
|||
list:[ |
|||
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'}, |
|||
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'}, |
|||
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'}, |
|||
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'}, |
|||
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'}, |
|||
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'} |
|||
] |
|||
|
|||
} |
|||
start: "", |
|||
start1: "", |
|||
start2: "", |
|||
start3: "", |
|||
areaOptions: [ |
|||
{ |
|||
value: "济南", |
|||
label: "济南", |
|||
}, |
|||
{ |
|||
value: "菏泽", |
|||
label: "菏泽", |
|||
}, |
|||
], |
|||
area: "济南", |
|||
list: [ |
|||
{ |
|||
name: "大学城-长清", |
|||
direction: "济南方向", |
|||
state: "正常", |
|||
speed: "108.14km/h", |
|||
follow: "161", |
|||
}, |
|||
{ |
|||
name: "大学城-长清", |
|||
direction: "济南方向", |
|||
state: "正常", |
|||
speed: "108.14km/h", |
|||
follow: "161", |
|||
}, |
|||
{ |
|||
name: "大学城-长清", |
|||
direction: "济南方向", |
|||
state: "正常", |
|||
speed: "108.14km/h", |
|||
follow: "161", |
|||
}, |
|||
{ |
|||
name: "大学城-长清", |
|||
direction: "济南方向", |
|||
state: "正常", |
|||
speed: "108.14km/h", |
|||
follow: "161", |
|||
}, |
|||
{ |
|||
name: "大学城-长清", |
|||
direction: "济南方向", |
|||
state: "正常", |
|||
speed: "108.14km/h", |
|||
follow: "161", |
|||
}, |
|||
{ |
|||
name: "大学城-长清", |
|||
direction: "济南方向", |
|||
state: "正常", |
|||
speed: "108.14km/h", |
|||
follow: "161", |
|||
}, |
|||
], |
|||
}; |
|||
}, |
|||
|
|||
created() { |
|||
|
|||
}, |
|||
created() {}, |
|||
methods: { |
|||
onSubmit() { |
|||
console.log('submit!'); |
|||
} |
|||
} |
|||
} |
|||
console.log("submit!"); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style lang='scss' scoped> |
|||
|
|||
|
|||
<style lang="scss" scoped> |
|||
.el-input__inner { |
|||
background-color: transparent !important; |
|||
font-size: 12px; |
|||
} |
|||
::v-deep .el-input__inner { |
|||
padding: 0 10px; |
|||
} |
|||
::v-deep .el-input__inner::placeholder { |
|||
color: #9f9f9f; |
|||
font-size: 12px; |
|||
} |
|||
.heightway { |
|||
width: 100%; |
|||
.board{ |
|||
.board { |
|||
height: 400px; |
|||
width: 100%; |
|||
background: linear-gradient(180deg, rgba(6,66,88,0.2) 0%, #064258 100%); |
|||
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%); |
|||
border-radius: 5px 5px 5px 5px; |
|||
opacity: 1; |
|||
border: 1px solid; |
|||
border-image: linear-gradient(360deg, rgba(55, 231, 255,0.3), rgba(55, 231, 255, 0)) 1 1; |
|||
opacity: 1; |
|||
border: 1px solid; |
|||
border-image: linear-gradient( |
|||
360deg, |
|||
rgba(55, 231, 255, 0.3), |
|||
rgba(55, 231, 255, 0) |
|||
) |
|||
1 1; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
flex-direction: column; |
|||
padding:15px 10px; |
|||
.searchPanel{ |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
height: 40px; |
|||
width:100%; |
|||
font-size: 14px; |
|||
margin-bottom: 10px; |
|||
div{ |
|||
white-space: nowrap; |
|||
margin-right: 4px; |
|||
} |
|||
.inputZh{ |
|||
width: 47px; |
|||
::v-deep{ |
|||
.el-input__inner{ |
|||
background-color: #064258 !important; |
|||
border-width: 0px !important; |
|||
padding: 15px 10px; |
|||
.searchPanel { |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
height: 40px; |
|||
width: 100%; |
|||
font-size: 13px; |
|||
margin-bottom: 10px; |
|||
div { |
|||
white-space: nowrap; |
|||
margin-right: 4px; |
|||
} |
|||
.inputZh { |
|||
width: 60px; |
|||
::v-deep { |
|||
.el-input__inner { |
|||
background-color: #064258 !important; |
|||
border-width: 0px !important; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.inputJl{ |
|||
margin-left: 5px; |
|||
margin-right: 10px; |
|||
} |
|||
.selectRoad{ |
|||
width:87px; |
|||
::v-deep{ |
|||
.el-input__inner{ |
|||
background-color: #064258 !important; |
|||
border-width: 0px !important; |
|||
.inputJl { |
|||
// width: 60px; |
|||
margin-left: 5px; |
|||
margin-right: 10px; |
|||
} |
|||
.selectRoad { |
|||
width: 87px; |
|||
::v-deep { |
|||
.el-input__inner { |
|||
background-color: #064258 !important; |
|||
border-width: 0px !important; |
|||
font-size: 12px; |
|||
} |
|||
} |
|||
} |
|||
.btnSearch { |
|||
background-color: #00b3cc; |
|||
margin-left: 10px; |
|||
padding: 6px 15px; |
|||
font-size: 13px; |
|||
} |
|||
.btnReset { |
|||
background-color: transparent; |
|||
border-color: #00b3cc; |
|||
color: white; |
|||
padding: 6px 15px; |
|||
font-size: 13px; |
|||
} |
|||
} |
|||
.btnSearch{ |
|||
background-color: #00B3CC; |
|||
margin-left: 10px; |
|||
} |
|||
.btnReset{ |
|||
background-color: transparent; |
|||
border-color: #00B3CC; |
|||
color: white; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.tblResult{ |
|||
height: 300px; |
|||
.tblResult { |
|||
height: 300px; |
|||
width: 100%; |
|||
.tblTd { |
|||
width: 100%; |
|||
.tblTd{ |
|||
width:100%; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
background-color: #064258; |
|||
height: 42px; |
|||
line-height: 42px; |
|||
color: #fff; |
|||
div{ |
|||
text-align: left; |
|||
width: 25%; |
|||
} |
|||
} |
|||
.tblTd:first-child{ |
|||
background-color: #0d3646; |
|||
color: #00D1FF; |
|||
} |
|||
.tblTd>div:first-child{ |
|||
width: 35%; |
|||
margin-left: 20px; |
|||
} |
|||
.tblTd>div:last-child{ |
|||
text-align: center; |
|||
} |
|||
.tblTwo{ |
|||
background-color: transparent !important; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
background-color: #064258; |
|||
height: 42px; |
|||
line-height: 42px; |
|||
color: #fff; |
|||
div { |
|||
text-align: left; |
|||
width: 25%; |
|||
} |
|||
} |
|||
.tblTd:first-child { |
|||
background-color: #0d3646; |
|||
color: #00d1ff; |
|||
} |
|||
.tblTd > div:first-child { |
|||
width: 35%; |
|||
margin-left: 20px; |
|||
} |
|||
.tblTd > div:last-child { |
|||
text-align: center; |
|||
} |
|||
.tblTwo { |
|||
background-color: transparent !important; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
|
@ -1,125 +1,137 @@ |
|||
let chartIcon = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAC4jAAAuIwF4pT92AAAFw2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuMTcxYzI3ZmFiLCAyMDIyLzA4LzE2LTIyOjM1OjQxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjQuMCAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMTItMjlUMTA6MTM6MTQrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIzLTEyLTI5VDEwOjQ2OjE3KzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTEyLTI5VDEwOjQ2OjE3KzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplYzhkN2NkNS01ZjdjLTQ5Y2ItOTgyMy1lOTM4ODViNjRjMmIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ZjE1ZWVkNDgtNDA3ZS00MDU0LTliNTMtYTllZmQ1ODE5YjVmIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZjE1ZWVkNDgtNDA3ZS00MDU0LTliNTMtYTllZmQ1ODE5YjVmIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpmMTVlZWQ0OC00MDdlLTQwNTQtOWI1My1hOWVmZDU4MTliNWYiIHN0RXZ0OndoZW49IjIwMjMtMTItMjlUMTA6MTM6MTQrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNC4wIChNYWNpbnRvc2gpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplYzhkN2NkNS01ZjdjLTQ5Y2ItOTgyMy1lOTM4ODViNjRjMmIiIHN0RXZ0OndoZW49IjIwMjMtMTItMjlUMTA6NDY6MTcrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyNC4wIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PibZhN0AAAHBSURBVDiNfdTtThNREAbgZ5sCrRTaRaBqQDTR6AXaq9grJEaiKCJWaAv9ENDUH2fWLkU8yeTkZGbe885nNp/PVU9vIMMGNtHGo1BNMQoZF7k7jlkVqDewji72sI5VrIT6F64xwRecFbnJPaDeQBsv8RSdCpsS6BYzDENOcVTkLv8CBZPX2McOdrEVITYC6BpjnKOP7zjG+yI3yd5dzLNg8jbY7MW9g+2lHJUgpzgJOcRRPX7dj3C6eIaDAO+iGUCzYPERWSXU5+jXIxct5MFgN0AOsLaoi9Ul0HHkaoBOLZg0IoQNPMaTJZAqWDfytylVtol2LdishNFaKBv/AClPI3waISto1UKZoRZ39h8QFZus8laTqvEbNyEzqdQPnZ/hcyMl/BbTmpSsacg43v0wXD43+BE2V+FzjWFdmp1ZKAZheByUt91tyD4+S/00wGWAjerxOJYS2JSSngX4lrsNeREfnUg9dRG+o3JEWniDF1Lpd6U2KEdkHoyuwvkM36TmPCxy4+rQdvDKoss7FhugzM8kIjiPED8UuSH310jLYkRaUl9V18gswD7ha5Ebl77ZA4utLY1MOT4sRmKI0fJi+wM9v6Q1QC+Y6wAAAABJRU5ErkJggg==`; |
|||
let xdata = { |
|||
value: ['大学城-长清', '长清-孝里', '孝里-平阴北', '平阴北-平阴', '平阴-东平', '东平-梁山东', '梁山东-嘉祥'] |
|||
value: [ |
|||
"大学城-长清", |
|||
"长清-孝里", |
|||
"孝里-平阴北", |
|||
"平阴北-平阴", |
|||
"平阴-东平", |
|||
"东平-梁山东", |
|||
"梁山东-嘉祥", |
|||
"平阴2-东平", |
|||
"东平2-梁山东", |
|||
"梁山东2-嘉祥", |
|||
], |
|||
}; |
|||
let ind = -30; |
|||
let sdata = { |
|||
value: [32774, 30067, 28774, 30067, 30021, 30067, 32774] |
|||
} |
|||
value: [32774, 30067, 28774, 30067, 30021, 30067, 32774, 30021, 30067, 32774], |
|||
}; |
|||
|
|||
let dataZoomMove = { |
|||
start: 0, |
|||
end: 4 |
|||
} |
|||
start: 0, |
|||
end: 4, |
|||
}; |
|||
var options = { |
|||
|
|||
grid: { |
|||
containLabel: true, |
|||
// 边距自行修改
|
|||
bottom: '0%', |
|||
left: '0%', |
|||
top: '20%', |
|||
right: '10%', |
|||
grid: { |
|||
containLabel: true, |
|||
// 边距自行修改
|
|||
bottom: "0%", |
|||
left: "0%", |
|||
top: "8%", |
|||
right: "10%", |
|||
}, |
|||
xAxis: { |
|||
type: "value", |
|||
axisLabel: { |
|||
show: false, |
|||
}, |
|||
axisLine: { |
|||
show: false, |
|||
}, |
|||
axisTick: { |
|||
show: false, |
|||
}, |
|||
splitLine: { |
|||
show: false, |
|||
}, |
|||
}, |
|||
yAxis: [ |
|||
{ |
|||
type: "category", |
|||
data: xdata.value, |
|||
inverse: true, |
|||
axisLabel: { |
|||
fontSize: "14px", |
|||
inside: true, |
|||
verticalAlign: "bottom", |
|||
color: "#fff", |
|||
padding: 10, |
|||
margin: -5, |
|||
formatter: function (value) { |
|||
let index = xdata.value.indexOf(value); |
|||
return `{a|Top${(ind += 1)}} {b|${value}}`; |
|||
}, |
|||
rich: { |
|||
a: { |
|||
fontSize: "10px", |
|||
}, |
|||
|
|||
b: { |
|||
fontSize: "12px", |
|||
padding: [0, 0, 0, 70], |
|||
}, |
|||
}, |
|||
}, |
|||
axisLine: { |
|||
show: false, |
|||
}, |
|||
xAxis: { |
|||
type: 'value', |
|||
axisLabel: { |
|||
show: false |
|||
}, |
|||
axisLine: { |
|||
show: false, |
|||
}, |
|||
axisTick: { |
|||
show: false, |
|||
}, |
|||
splitLine: { |
|||
show: false, |
|||
}, |
|||
axisTick: { |
|||
show: false, |
|||
}, |
|||
yAxis: [ |
|||
{ |
|||
type: 'category', |
|||
data: xdata.value, |
|||
inverse: true, |
|||
axisLabel: { |
|||
fontSize: '14px', |
|||
inside: true, |
|||
verticalAlign: 'bottom', |
|||
color:'#fff', |
|||
padding:10, |
|||
margin:-5, |
|||
formatter: function (value) { |
|||
let index = xdata.value.indexOf(value); |
|||
return `{a|Top${index+1}} {b|${value}}` |
|||
}, |
|||
rich: { |
|||
a: { |
|||
fontSize: '14px', |
|||
}, |
|||
|
|||
b: { |
|||
fontSize: '14px', |
|||
padding: [0, 0, 0, 70], |
|||
} |
|||
}, |
|||
}, |
|||
], |
|||
series: [ |
|||
{ |
|||
realtimeSort: true, |
|||
data: sdata.value, |
|||
type: "bar", |
|||
barWidth: 8, |
|||
itemStyle: { |
|||
borderRadius: 40, |
|||
color: { |
|||
type: "linear", |
|||
x: 0, |
|||
y: 0, |
|||
x2: 1, |
|||
y2: 0, |
|||
colorStops: [ |
|||
{ |
|||
offset: 0, |
|||
color: "#1cd0f000", // 0% 处的颜色
|
|||
}, |
|||
axisLine: { |
|||
show: false, |
|||
{ |
|||
offset: 1, |
|||
color: "#1cd0f0", // 100% 处的颜色
|
|||
}, |
|||
axisTick: { |
|||
show: false, |
|||
} |
|||
} |
|||
], |
|||
series: [ |
|||
{ |
|||
data: sdata.value, |
|||
type: 'bar', |
|||
barWidth: 8, |
|||
itemStyle: { |
|||
borderRadius: 40, |
|||
color: { |
|||
type: 'linear', |
|||
x: 0, |
|||
y: 0, |
|||
x2: 1, |
|||
y2: 0, |
|||
colorStops: [ |
|||
{ |
|||
offset: 0, |
|||
color: '#1cd0f000', // 0% 处的颜色
|
|||
}, |
|||
{ |
|||
offset: 1, |
|||
color: '#1cd0f0', // 100% 处的颜色
|
|||
}, |
|||
], |
|||
global: false, // 缺省为 false
|
|||
} |
|||
], |
|||
global: false, // 缺省为 false
|
|||
}, |
|||
}, |
|||
label: { |
|||
show: true, |
|||
position: "right", |
|||
distance: -10, |
|||
data: sdata, |
|||
color: "#fff", |
|||
formatter: (c) => { |
|||
return `{a|}{b|${c.value}辆}`; |
|||
}, |
|||
rich: { |
|||
a: { |
|||
widht: 20, |
|||
height: 20, |
|||
backgroundColor: { |
|||
image: chartIcon, |
|||
}, |
|||
label: { |
|||
show: true, |
|||
position: 'right', |
|||
distance: -10, |
|||
data: sdata, |
|||
color:'#fff', |
|||
formatter: (c) => { |
|||
return `{a|}{b|${c.value}辆}` |
|||
}, |
|||
rich: { |
|||
a: { |
|||
widht: 20, |
|||
height: 20, |
|||
backgroundColor: { |
|||
image: chartIcon |
|||
}, |
|||
}, |
|||
b:{ |
|||
padding:[0,0,0,10] |
|||
} |
|||
} |
|||
} |
|||
} |
|||
] |
|||
} |
|||
}, |
|||
b: { |
|||
padding: [0, 0, 0, 10], |
|||
}, |
|||
}, |
|||
}, |
|||
}, |
|||
], |
|||
}; |
|||
|
|||
export default options; |
|||
|
Loading…
Reference in new issue