| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538 |
- //安全防范设施改造情况数据
- let aqsecurity = (
- chartData = [
- {
- value: 800,
- name: '主料'
- },
- {
- value: 200,
- name: '辅料'
- },
- {
- value: 300,
- name: '包装材料'
- }
- ]
- ) => {
- var color = ['#92cd76', '#5370c7', '#ee6666']
- const sum = chartData.reduce((per, cur) => per + cur.value, 0)
- let option = {
- background: '#fff',
- title: {
- show: true,
- text: ' ',
- subtext: sum + '家',
- x: '29%',
- y: '33%',
- textStyle: {
- color: '#778CA2',
- fontSize: 20,
- fontWeight: '400'
- },
- subtextStyle: {
- color: 'rgba(0,0,0,0.85)',
- fontSize: 20,
- fontWeight: '400'
- },
- textAlign: 'center'
- },
- legend: {
- orient: 'vertical',
- // icon: "diamond",
- left: '55%',
- icon: 'circle',
- textStyle: {
- color: '#373737',
- rich: {
- name: {
- color: 'rgba(0,0,0,0.65)'
- },
- symbol: {
- color: 'rgba(0,0,0,0.45)'
- },
- percent: {
- color: 'rgba(0,0,0,0.45)'
- },
- value: {
- color: 'rgba(0,0,0,0.65)'
- }
- }
- },
- top: 'center',
- right: '5%',
- itemGap: 14,
- itemHeight: 24,
- itemWidth: 24,
- data: chartData.name,
- formatter: function (name) {
- let obj = {}
- if (name) {
- obj = chartData.find(item => item.name === name)
- }
- return `{name|${name}}{symbol| }{value|${obj.value || 0}家}{percent|${
- obj.value && ((obj.value / sum) * 100).toFixed(0)
- }%}`
- }
- },
- series: [
- {
- name: '',
- type: 'pie',
- roundCap: true,
- radius: ['40%', '70%'],
- center: ['30%', '50%'],
- startAngle: 180, //起始角度
- data: chartData,
- itemStyle: {
- borderColor: '#fff',
- borderWidth: 1,
- color: function (params) {
- return color[params.dataIndex]
- }
- },
- labelLine: {
- length: 8,
- length2: 16,
- lineStyle: {
- width: 1
- }
- },
- label: {
- show: false,
- fontFamily: 'ysbth',
- position: 'outside',
- padding: [0, -4, 0, -4],
- formatter(params) {
- if (params.name === '') {
- return ''
- }
- return `${params.percent.toFixed(0)}%`
- },
- color: '#fff',
- fontSize: '14px',
- lineHeight: 10
- }
- }
- ]
- }
- return option
- }
- //柱状图堆叠
- let ddsecurity = (
- data = {
- bankingGa38: [1, 2, 3],
- offlineGa38: [1, 2, 3],
- onlineGa38: [1, 2, 3]
- }
- ) => {
- let option = {
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'shadow' // 'shadow' as default; can also be 'line' or 'shadow'
- }
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true
- },
- xAxis: {
- type: 'value',
- axisLine: {
- lineStyle: {
- color: '#51688a'
- }
- }
- },
- yAxis: {
- type: 'category',
- data: ['在行式自助银行', '离行式自助银行', '营业网点']
- },
- series: [
- {
- name: '在行式自助银行',
- type: 'bar',
- color: '#5370c7',
- stack: 'total',
- label: {
- show: true
- },
- emphasis: {
- focus: 'series'
- },
- data: data.onlineGa38
- },
- {
- name: '离行式自助银行',
- type: 'bar',
- stack: 'total',
- color: '#92cd76',
- label: {
- show: true
- },
- emphasis: {
- focus: 'series'
- },
- data: data.offlineGa38
- },
- {
- name: '营业网点',
- type: 'bar',
- stack: 'total',
- color: '#ee6666',
- label: {
- show: true
- },
- emphasis: {
- focus: 'series'
- },
- data: data.bankingGa38
- }
- ]
- }
- return option
- }
- let securityPrecautions = (data = []) => {
- var colors = ['#ee6666', '#5370c7']
- let option = {
- title: {
- text: '',
- left: 'left'
- },
- tooltip: {
- trigger: 'item'
- },
- legend: {
- orient: 'vertical',
- top: 'center',
- left: '58%',
- data: data,
- formatter: function (name) {
- var data = option.series[0].data
- var total = 0
- var tarValue
- for (var i = 0; i < data.length; i++) {
- total += data[i].value
- if (data[i].name == name) {
- tarValue = data[i].value
- }
- }
- var v = tarValue
- var p = Math.round((tarValue / total) * 100)
- return `${name} ${v}家 ${p}%`
- }
- },
- series: [
- {
- center: ['30%', '50%'],
- type: 'pie',
- radius: '70%',
- data: data,
- itemStyle: {
- normal: {
- shadowBlur: 1,
- color: function (param) {
- // console.log(param.dataIndex)
- return colors[param.dataIndex]
- }
- }
- },
- label: {
- position: 'inner',
- textStyle: {
- fontSize: 14,
- color: '#181818'
- },
- formatter: params => {
- return `${params.value}`
- }
- },
- labelLine: {
- show: false
- },
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0
- }
- }
- }
- ]
- }
- return option
- }
- //网点业务总览
- // [
- // { value: 666, name: '巡查上报' },
- // { value: 193, name: '自行处置' },
- // { value: 300, name: '微信市民举报' },
- // { value: 200, name: '微治理上报' },
- // { value: 100, name: '视频抓拍' }
- // ]
- //保安情况
- let dotData = (
- title = '',
- data = [],
- num = 0,
- listNames= ['一类库', '二类库', '三类库', '四类库']
- ) => {
- var colors = ['#146de0', '#27ef5e', '#ffc140', '#d151d8', 'red']
- let option = {
- xAxis: {
- type: 'category',
- data: listNames
- },
- yAxis: {
- type: 'value'
- },
- series: [
- {
- show: true,
- data: data,
- type: 'bar',
-
-
- label: {
- show:true,
- //数值展示的位置
- textStyle: {
- color: 'black',
- fontSize: 12
- },
- position: 'top', // 顶部显示
- formatter: function(params) {
- return data[params.dataIndex] + '(' + ((data[params
- .dataIndex] /num*100)).toFixed(0) + '%)'
- }
- },
- barWidth: 40,
- color: '#5370c7',
- backgroundStyle: {
- color: 'rgba(220, 220, 220, 0.8)'
- }
- }
- ]
- }
- return option
- }
- var get = function (e) {
- var newStr = ' '
- var start, end
- var name_len = e.name.length //每个内容名称的长度
- var max_name = 5 //每行最多显示的字数
- var new_row = Math.ceil(name_len / max_name) // 最多能显示几行,向上取整比如2.1就是3行
- if (name_len > max_name) {
- //如果长度大于每行最多显示的字数
- for (var i = 0; i < new_row; i++) {
- //循环次数就是行数
- var old = '' //每次截取的字符
- start = i * max_name //截取的起点
- end = start + max_name //截取的终点
- if (i == new_row - 1) {
- //最后一行就不换行了
- old = e.name.substring(start)
- } else {
- old = e.name.substring(start, end) + '\n'
- }
- newStr += old //拼接字符串
- }
- } else {
- //如果小于每行最多显示的字数就返回原来的字符串
- newStr = e.name
- }
- return newStr + `(${e.value})`
- }
- //在行式自助银行
- let ZHSData = (
- title = '在行式自助银行',
- data = [
- // { value: 666, name: '穿墙式设备' },
- // { value: 193, name: '大堂式设备' }
- ]
- ) => {
- let option = {
- series: [
- {
- color: ['#5470c6', '#91cc75', '#ee6666', '#73c0de'],
- name: '',
- type: 'pie',
- radius: '50%',
- center: ['50%', '50%'],
- data: data,
- label: {
- normal: {
- formatter: get,
- rich: {
- b: {
- width: 20,
- fontSize: 12
- }
- },
- textStyle: {
- color: '#656565' // 改变标示文字的颜色
- }
- }
- },
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: 'rgba(0, 0, 0, 0.5)'
- }
- }
- }
- ]
- }
- return option
- }
- //日常履职完成率
- let resumption = (data, type = 0) => {
- var getzszy = [] //数据点名称
- var getzswcl = [] //招生完成率
- var getzswcl2 = [] //招生完成率
- var getzswclzd = [] //招生完成率100%
- if (type == 0) {
- if (data && data.length > 0) {
- getzszy = data.map(item => item.orgName)
- getzswcl = data.map(item => parseInt(item.rate * 100))
- getzswcl2 = data.map(item => parseInt(item.rate * 100) + '%')
- }
- } else {
- if (data && data.length > 0) {
- getzszy = data.map(item => item.orgName)
- getzswcl = data.map(item => {
- if (item.isNo) {
- return parseInt(item.rate * 100)
- } else {
- return parseInt(item.rate)
- }
- })
- getzswcl2 = data.map(item => {
- if (item.isNo) {
- return parseInt(item.rate * 100) + '%'
- } else {
- return item.rate + '项'
- }
- })
- }
- }
- for (let i = 0; i < getzswcl.length; i++) {
- if (getzswcl[i] > 100) {
- getzswcl[i] = 100
- }
- getzswclzd.push(100)
- }
- var num = type == 0 ? '18%' : '25%'
- var numleft = type == 0 ? '35%' : '25%'
- let option = {
- grid: {
- right: num,
- bottom: '3%',
- left: numleft,
- top: '3%'
- },
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'none'
- },
- formatter: function (params) {
- return getzszy[params[0].dataIndex] + '<br>完成率: ' + getzswcl2[params[0].dataIndex]
- }
- },
- xAxis: {
- show: false,
- type: 'value'
- },
- yAxis: [
- {
- type: 'category',
- inverse: true,
- axisLabel: {
- show: true,
- textStyle: {
- color: '#666666',
- fontSize: '13'
- }
- },
- splitLine: {
- show: false
- },
- axisTick: {
- show: false
- },
- axisLine: {
- show: false
- },
- data: getzszy
- },
- {
- type: 'category',
- inverse: true,
- axisTick: 'none',
- axisLine: 'none',
- show: true,
- axisLabel: {
- textStyle: {
- color: '#333333',
- fontSize: '13'
- },
- // formatter: '{value}%'
- formatter: function (value, index) {
- return value
- }
- },
- data: getzswcl2
- }
- ],
- series: [
- {
- name: '值',
- type: 'bar',
- zlevel: 1,
- itemStyle: {
- normal: {
- barBorderRadius: 5,
- color: '#4E7BFE'
- }
- },
- barWidth: 10,
- data: getzswcl
- },
- {
- name: '背景',
- type: 'bar',
- barWidth: 10,
- barGap: '-100%',
- data: getzswclzd,
- itemStyle: {
- normal: {
- color: 'rgba(103,150,253,0.3)',
- barBorderRadius: 5
- }
- }
- }
- ]
- }
- return option
- }
- export { securityPrecautions, resumption, dotData, ZHSData, aqsecurity, ddsecurity }
|