let app = new Vue({ el: '#app', data () { return { goUrl: '', env: 'prd', fling: false, //水球光泽 centerOriginalConfig6: '', rightAdd: {},// 左边新增筛选参数 projectNum: '', // 项目列表弹窗顶部类目筛选条件 centerType: true, // 中间3D饼图 boardType: '', // 哪边的项目看板 pullShow: false, // 选择年份弹窗 pollList: [], mockData: false,// 是否使用修改的数据 year: '', // 选择的年份 boardUrl: '', // 跳转路径 boardTipShow: false, // 项目看板弹窗专用 lineCommonCompany: [], //双柱状图弹窗上面的折线图x轴 commonCompanyAll: [], // 公司包括编码 changeLine: true, versions: true, // 是否使用接口数据数据 app_token: '', centerShow: false, // 中间内容显示 echartR4Chart: '',// 倒数第二个专用 echartR5Chart: '', // 倒是第一个专用 myChartTip1: '', // 弹窗单个柱状图专用 myChartTip2: '', // 弹窗两个柱状图专用 myChartTip3: '', // 弹窗两个柱状图专用 echartEnterpriseShow: false, // 企业额度分析控制 mapChart: '',//地图专用echarts chartCarousel: '',//做大屏轮播专用echarts mapTipShow: false, echartSingleTipShow: false, echartDoubleTipShow: false, projectListTipShow: false, //项目列表专属弹窗 titleUrl: '', titleName: '', yellowCount: 0, // 黄圈轮播参数 yellowPosition: 40,// 黄圈悬浮窗位置参数 yellowType: true, // 黄圈悬浮停止轮播 echartR1Fd: true, echartR2Fd: true, echartC2Fd: true, echartR3Fd: true, time: '', // 页面上绑定的时间 timer: '', // 页面上的时间一秒定时器 timer2: '', // 黄圈专用2秒定时器 pieTime1: '', // 饼图轮播专用 pieTime2: '', // 饼图轮播专用 pieTime3: '', // 饼图轮播专用 pieTime4: '', // 饼图轮播专用 pieTime5: '', // 饼图轮播专用 pieTime6: '', // 饼图轮播专用 pieTime7: '', // 饼图轮播专用 pieTime8: '', // 饼图轮播专用 center1: center1, showTip2: false, showTip3: false, list: [], count: 0, countType: 0, geoCoordMap: {}, storageRecordConfig2: center9, titleList: right1, centerLeftList: right3, storageRecordConfig: left11, config5: { rowNum: 9, waitTime: 2000, headerHeight: '40', header: ["项目名称", "所属组织", '实施主体', '建设性质(新建/续建)', '产业类别', '建设地点', '2022年投资完成额(万元)'], data: [ ["青银二广高速公路太原联络线建设PPP项目", "交控集团", "山西路桥建设集团有限公司", "新建", "交通运输业", "山西省太原市、晋中市", "148,086.00"], ["国道241、省道岚马线汾河水库段改线工程", "交控集团", "太原国省道汾河水库段建设管理有限公司", "续建", "交通运输业", "山西省 太原市、吕梁市", "165,314.33"], ["路桥科技中心", "交控集团", "山西路桥集团多经营有限公司", "续建", "建筑房地产", "山西省太原市", "8,098.26"], ["路桥科研基地", "交控集团", "山西路桥集团多经有限公司", "续建", "建筑房地产", "山西省太原市", "6,596.56"], ["武宿高速充电站建设", "交控集团", "山西交通运输投融资集团有限责任公司", "新建", "新能源", "山西省太原市", "100.00"], ["山西交通研创商务基地项目", "交控集团", "山西交通物流集团有限公司", "续建", "建筑房地产", "山西省太原市", "4,097.00"], ["山西省交通科学研究院产业化基地", "交控集团", "山西省交通科技研发有限公司", "续建", "建筑房地产", "山西省太原市武洛街27号", "3,242.00"], ["太长高速公路太原南收费站(二期工程暨龙城服务区)项目", "交控集团", "山西省交通开发投资集团有限公司龙城服务区发展分公司", "续建", "建筑房地产", "山西省太原市", "3,580.00"], ["山西转型综改示范区中小企业产业园项目", "交控集团", "山西交投综改园区开发有限公司", "续建", "建筑房地产", "山西省太原市", "14,432.00"] ], align: ["center", "center", "center", "center", "center", "center", "center"], headerBGC: "#153A62", oddRowBGC: "#061F42", evenRowBGC: "#0C284A", }, originalConfig6: [], config6: listPop } }, created () { this.time = formatDate() this.timer = setInterval(() => { this.time = formatDate() }, 1000) this.timer2 = setInterval(() => { this.yellowType && this.changeYellow() }, 2000) }, beforeDestroy () { if (this.timer) { clearInterval(this.timer); } if (this.timer2) { clearInterval(this.timer2); } }, mounted () { this.getUrlParams() this.countYear() }, methods: { // 解决乘法失去精度 numMulti (num1, num2) { var baseNum = 0; try { baseNum += num1.toString().split(".")[1].length; } catch (e) { } try { baseNum += num2.toString().split(".")[1].length; } catch (e) { } return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum); }, // 解决减法失去精度 numSub (num1, num2) { var baseNum, baseNum1, baseNum2; var precision;// 精度 try { baseNum1 = num1.toString().split(".")[1].length; } catch (e) { baseNum1 = 0; } try { baseNum2 = num2.toString().split(".")[1].length; } catch (e) { baseNum2 = 0; } baseNum = Math.pow(10, Math.max(baseNum1, baseNum2)); precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2; return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision); }, // 获取地址栏参数 getUrlParams (id) { let url = window.location.href // 通过 ? 分割获取后面的参数字符串 let urlStr = url.split('?')[1] if (!urlStr) { this.comeIn() return } // 创建空对象存储参数 let obj = {}; // 再通过 & 将每一个参数单独分割出来 let paramsArr = urlStr.split('&') for (let i = 0, len = paramsArr.length; i < len; i++) { // 再通过 = 将每一个参数分割为 key:value 的形式 let arr = paramsArr[i].split('=') obj[arr[0]] = arr[1]; } if (obj.model) { obj.model == 'A' || obj.model == 'a' ? this.mockData = false : this.mockData = true } obj.env && (this.env = obj.env) this.goUrl = (obj.env == 'SIT' || obj.env == 'sit') ? '172.21.3.68:8081' : (obj.env == 'UAT' || obj.env == 'uat') ? '172.21.3.149:8081' : '172.21.3.149:8081' this.comeIn() }, // 计算展示的年份 countYear () { this.year = new Date().getFullYear() for (i = 2022; true; i++) { if (i == this.year + 3) { this.pollList.push(i) return } else { this.pollList.push(i) } } }, comeIn () { if (this.versions) { // 接口版 this.getAppToken() setTimeout(() => { this.changeTopColor() // 大屏三 this.initChartR5() this.changeYellow() }) } else { // 假数据版 setTimeout(() => { this.initChartL1() this.initChartL2() this.initChartL3() this.initChartL4() this.initChartL5() this.initChartL6() this.initChartL7() this.initChartL8() this.initChartL10() this.initChartL11() this.changeTopColor() // 大屏二 this.initChinaChart() // 大屏三 this.initChartR1() this.initChartR2() this.initChartR3() this.changeYellow() }) } }, chooseTime (value) { let that = this this.backChina() this.year = value that.fling = false that.destroyCharts() that.closeTap() this.pullShow = false setTimeout(item => { that.comeIn() }) }, destroyCharts () { this.pieTime1 && clearInterval(this.pieTime1); this.pieTime2 && clearInterval(this.pieTime2); this.pieTime3 && clearInterval(this.pieTime3); this.pieTime4 && clearInterval(this.pieTime4); this.pieTime5 && clearInterval(this.pieTime5); this.pieTime6 && clearInterval(this.pieTime6); this.pieTime7 && clearInterval(this.pieTime7); this.pieTime8 && clearInterval(this.pieTime8); this.left10Chart ? this.left10Chart.dispose() : '' this.left1Chart ? (this.left1Chart.destroy(), this.left1Chart = '') : '' this.left2Chart ? (this.left2Chart.destroy(), this.left2Chart = '') : '' this.left3Chart ? (this.left3Chart.destroy(), this.left3Chart = '') : '' this.left4Chart ? (this.left4Chart.destroy(), this.left4Chart = '') : '' this.left5Chart ? (this.left5Chart.destroy(), this.left5Chart = '') : '' this.left6Chart ? (this.left6Chart.destroy(), this.left6Chart = '') : '' this.left7Chart ? this.left7Chart.dispose() : '' this.left8Chart ? this.left8Chart.dispose() : '' this.left9Chart ? this.left9Chart.dispose() : '' this.chartCarousel ? this.chartCarousel.dispose() : '' this.myChartTip1 ? this.myChartTip1.dispose() : '' this.myChartTip2 ? this.myChartTip2.dispose() : '' this.myChartTip3 ? this.myChartTip3.dispose() : '' this.left11Chart ? this.left11Chart.dispose() : '' this.right1Chart ? this.right1Chart.dispose() : '' this.right2Chart ? this.right2Chart.dispose() : '' this.right3Chart ? this.right3Chart.dispose() : '' this.echartR4Chart ? this.echartR4Chart.dispose() : '' this.echartR5Chart ? this.echartR5Chart.dispose() : '' this.center1Chart ? (this.center1Chart.destroy(), this.center1Chart = '') : '' // this.center1Chart ? this.center1Chart.dispose() : '' this.center2Chart ? this.center2Chart.dispose() : '' this.center3Chart ? this.center3Chart.dispose() : '' this.center4Chart ? (this.center4Chart.destroy(), this.center4Chart = '') : '' // this.center4Chart ? this.center4Chart.dispose() : '' this.mapChart ? this.mapChart.dispose() : '' }, // 获取token getAppToken () { let value = {} // dev环境 if (this.env == 'sit' || this.env == 'SIT') { // SIT环境 value = { "appId": "68dp", "appSecret": "9ErhY^O{n?@Pc#eb7HYX", "tenantid": "", // "accountId": "1635498801198269440", "accountId": "1686324824621711360", // 新 "language": "zh_CN" } } else if (this.env == 'uat' || this.env == 'UAT') { // UAT环境 value = { "appId": "68dp", "appSecret": "9ErhY^O{n?@Pc#eb7HYX", "tenantid": "", // "accountId": "1635498801198269440", "accountId": "1591303792463183872", // 新 "language": "zh_CN" } } else { // prd环境 value = { "appId": "68dp", "appSecret": "9ErhY^O{n?@Pc#eb7HYX", "tenantid": "", // "accountId": "1635498801198269440", "accountId": "1591303792463183872", // 新 "language": "zh_CN" } } post('/ierp/api/getAppToken.do', value).then(res => { this.app_token = res.data.app_token this.getAccessToken() }) }, // 获取AccessToken getAccessToken () { let value = {} if (this.env == 'sit' || this.env == 'SIT') { // SIT环境 value = { // "user": "19900000001", //登录用户手机号 "user": "15835113238", // 新 "apptoken": this.app_token, //应用令牌 "tenantid": "", //租户id // "accountId": "1635498801198269440",//数据中心id "accountId": "1686324824621711360",// 新 "usertype": "Mobile" } } else if (this.env == 'uat' || this.env == 'UAT') { // UAT环境 value = { // "user": "19900000001", //登录用户手机号 "user": "15835113238", // 新 "apptoken": this.app_token, //应用令牌 "tenantid": "", //租户id // "accountId": "1635498801198269440",//数据中心id "accountId": "1591303792463183872",// 新 "usertype": "Mobile" } } else { // PRD环境 value = { // "user": "19900000001", //登录用户手机号 "user": "15835113238", // 新 "apptoken": this.app_token, //应用令牌 "tenantid": "", //租户id // "accountId": "1635498801198269440",//数据中心id "accountId": "1591303792463183872",// 新 "usertype": "Mobile" } } post('/ierp/api/login.do', value).then(res => { this.access_token = res.data.access_token this.getOrg() }) }, // 获取组织架构列表 getOrg () { return new Promise((resolve, err) => { let value = { access_token: this.access_token, } get('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getOrgName', value).then(res => { this.commonCompanyAll = res.data commonCompany = res.data.map(item => item.simplename) // 左边 this.getDate1() this.getDate2() this.getDate3() this.getDate4() this.getDate5() this.getDate6() // 右边 this.getDate7() this.getDate8() this.getDate9() this.getDate10() // this.getDate11() // 右下A this.getDate12() // 右下B // 中间 this.getDate14() resolve(1); }) }); }, // 获取左边企业额度分析 getDate1 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { "mdnb_combofield": this.mockData ? 'B' : 'A', "mdnb_datefield": this.year + '-01-01', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/tqqyedfx', value).then(res => { if (res.data.rows.length > 0) { let dataList = res.data.rows[0].entryentity left3 = [[], [], []] dataList.forEach(item => { // 已用额度 left3[0].push(that.yuanChange(item.mdnb_amountfield26)) // 剩余额度 left3[1].push(that.yuanChange(item.mdnb_amountfield27)) // 总额度 left3[2].push(that.yuanChange(item.mdnb_amountfield25)) }) this.initChartL4(dataList) } resolve(1); }) }); }, // 获取左边投资计划分析 getDate2 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { "mdnb_combofield": this.mockData ? 'B' : 'A', "mdnb_datefield": this.year + '-01-01', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/tqtzjhfx', value).then(res => { if (res.data.rows.length > 0) { let dataList = res.data.rows[0] left4 = [] left4[0] = dataList.mdnb_amountfield7 left4[1] = dataList.mdnb_amountfield13 left4[2] = dataList.mdnb_amountfield23 left4[3] = dataList.mdnb_amountfield33 left4[4] = dataList.mdnb_integerfield left5[0].y = that.yuanChange(dataList.mdnb_amountfield9) left5[0].num = dataList.mdnb_integerfield15 left5[1].y = that.yuanChange(dataList.mdnb_amountfield43) left5[1].num = dataList.mdnb_integerfield14 left6[0].y = that.yuanChange(dataList.mdnb_amountfield15) left6[0].num = dataList.mdnb_integerfield16 left6[1].y = that.yuanChange(dataList.mdnb_amountfield16) left6[1].num = dataList.mdnb_integerfield17 that.initChartL2() that.initChartL3() } resolve(1); }) }); }, // 获取左边产业布局分析 getDate3 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { "mdnb_combofield": this.mockData ? 'B' : 'A', "mdnb_datefield": this.year + '-01-01', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/tqcebjfx', value).then(res => { if (res.data.rows.length > 0) { let dataList = this.classify(res.data.rows[0].mdnb_entryentity, 'mdnb_textfield1') // 传统产业分析 // if (dataList[0].data.length > left7.length || dataList[0].data.length == left7.length) { // for (let i = 0; i < left7.length; i++) { // left7[i].num = dataList[0].data[i].mdnb_integerfield13 // left7[i].y = dataList[0].data[i].mdnb_amountfield8 // } // this.initChartL5() // } dataList[0].data.forEach((item, i) => { left7[i] = {} left7[i].num = item.mdnb_integerfield13 left7[i].y = that.yuanChange(item.mdnb_amountfield8) left7[i].name = item.mdnb_textfield2 }) this.initChartL5() // 战略性新兴产业 // if (dataList[1].data.length > left8.length || dataList[1].data.length == left8.length) { // for (let i = 0; i < left8.length; i++) { // left8[i].num = dataList[1].data[i].mdnb_integerfield13 // left8[i].y = dataList[1].data[i].mdnb_amountfield8 // } // this.initChartL6() // } dataList[1].data.forEach((item, i) => { left8[i] = {} left8[i].num = item.mdnb_integerfield13 left8[i].y = that.yuanChange(item.mdnb_amountfield8) left8[i].name = item.mdnb_textfield2 }) this.initChartL6() // 特色优势产业 // if (dataList[2].data.length > left9.length || dataList[2].data.length == left9.length) { // for (let i = 0; i < left9.length; i++) { // left9[i].num = dataList[2].data[i].mdnb_integerfield13 // left9[i].y = dataList[2].data[i].mdnb_amountfield8 // } // this.initChartL7() // } dataList[2].data.forEach((item, i) => { left9[i] = {} left9[i].num = item.mdnb_integerfield13 left9[i].y = that.yuanChange(item.mdnb_amountfield8) left9[i].name = item.mdnb_textfield2 }) this.initChartL7() // 公共基础等产业 // if (dataList[3].data.length > left10.length || dataList[3].data.length == left10.length) { // for (let i = 0; i < left10.length; i++) { // left10[i].num = dataList[3].data[i].mdnb_integerfield13 // left10[i].y = dataList[3].data[i].mdnb_amountfield8 // } // this.initChartL8() // } dataList[3].data.forEach((item, i) => { left10[i] = {} left10[i].num = item.mdnb_integerfield13 left10[i].y = that.yuanChange(item.mdnb_amountfield8) left10[i].name = item.mdnb_textfield2 }) this.initChartL8() } resolve(1); }) }); }, // 获取左边项目阶段分析 getDate4 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { "mdnb_combofield": this.mockData ? 'B' : 'A', "mdnb_datefield": this.year + '-01-01', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/tqxmjdfx', value).then(res => { if (res.data.rows.length > 0) { let dataList = res.data.rows[0] // 固定资产进度分布 // 特别监管 left13[0][0][2] = dataList.mdnb_integerfield1 left13[0][0][3] = this.yuanChange(dataList.mdnb_amountfield241) left13[0][1][2] = dataList.mdnb_integerfield3 left13[0][1][3] = this.yuanChange(dataList.mdnb_amountfield5) left13[0][2][2] = dataList.mdnb_integerfield5 left13[0][2][3] = this.yuanChange(dataList.mdnb_amountfield21) left13[0][3][2] = dataList.mdnb_integerfield7 left13[0][3][3] = this.yuanChange(dataList.mdnb_amountfield29) // 备案 left13[1][0][2] = dataList.mdnb_integerfield2 left13[1][0][3] = this.yuanChange(dataList.mdnb_amountfield341) left13[1][1][2] = dataList.mdnb_integerfield4 left13[1][1][3] = this.yuanChange(dataList.mdnb_amountfield11) left13[1][2][2] = dataList.mdnb_integerfield6 left13[1][2][3] = this.yuanChange(dataList.mdnb_amountfield28) left13[1][3][2] = dataList.mdnb_integerfield8 left13[1][3][3] = this.yuanChange(dataList.mdnb_amountfield30) // 股权类进度分布 // 特别监管 left14[0][0][2] = dataList.mdnb_integerfield11 left14[0][0][3] = this.yuanChange(dataList.mdnb_amountfield2411) left14[0][1][2] = dataList.mdnb_integerfield31 left14[0][1][3] = this.yuanChange(dataList.mdnb_amountfield51) left14[0][2][2] = dataList.mdnb_integerfield51 left14[0][2][3] = this.yuanChange(dataList.mdnb_amountfield211) left14[0][3][2] = dataList.mdnb_integerfield71 left14[0][3][3] = this.yuanChange(dataList.mdnb_amountfield291) // 备案 left14[1][0][2] = dataList.mdnb_integerfield21 left14[1][0][3] = this.yuanChange(dataList.mdnb_amountfield3411) left14[1][1][2] = dataList.mdnb_integerfield41 left14[1][1][3] = this.yuanChange(dataList.mdnb_amountfield111) left14[1][2][2] = dataList.mdnb_integerfield61 left14[1][2][3] = this.yuanChange(dataList.mdnb_amountfield281) left14[1][3][2] = dataList.mdnb_integerfield81 left14[1][3][3] = this.yuanChange(dataList.mdnb_amountfield301) this.initChartL10() this.initChartL11() } resolve(1); }) }); }, // 获取左边投资额度分析 getDate5 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { "mdnb_combofield": this.mockData ? 'B' : 'A', "mdnb_datefield": this.year + '-01-01', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/tqtzedfx', value).then(res => { if (res.data.rows.length > 0) { let dataList = res.data.rows[0] that.fling = true left1[0] = dataList.mdnb_amountfield left1[1] = dataList.mdnb_amountfield1 left1[2] = dataList.mdnb_amountfield2 left2[0] = dataList.mdnb_decimalfield left2[1] = dataList.mdnb_amountfield3 this.initChartL1() } resolve(1); }) }); }, // 获取左边重点项目两线指标 getDate6 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { "mdnb_combofield": this.mockData ? 'B' : 'A', "mdnb_datefield": this.year + '-01-01', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/tqzdlxzb', value).then(res => { if (res.data.rows.length > 0) { let dataList2 = this.classify(res.data.rows[0].mdnb_entryentity1, 'mdnb_textfield3') // 左边的轮播 let dataList = [] dataList2.forEach((item, index) => { dataList[index] = [] dataList[index][0] = item.data[0].mdnb_textfield18 dataList[index][1] = item.data[0].mdnb_textfield3 dataList[index][2] = that.numFormat(that.yuanChange(item.data[0].mdnb_amountfield24)) + '亿' }) this.storageRecordConfig.data = dataList this.storageRecordConfig = { ...this.storageRecordConfig } // 右边的柱状图 left12 = [] dataList2.forEach((item, index) => { left12[index] = [[], [], []] for (let i = 0; i < item.data.length; i++) { left12[index][0].push(item.data[i].mdnb_integerfield10) left12[index][1].push(item.data[i].mdnb_integerfield12) left12[index][2].push(item.data[i].mdnb_integerfield9) } }) that.initChartL9() } resolve(1); }) }); }, // 获取右边顶部条数据 getDate7 () { return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getTabpageap', value).then(res => { right1[0].number = res.data.mdnb_one_step right1[2].number = res.data.mdnb_two_step right1[4].number = res.data.mdnb_three_step right1[6].number = res.data.mdnb_four_step right1[8].number = res.data.mdnb_five_step right1[10].number = res.data.mdnb_six_step right1[12].number = res.data.mdnb_seven_step right1[14].number = res.data.mdnb_eight_step resolve(1); }) }); }, // 获取右边中间左边的(正偏差/容差内/负偏差) getDate8 () { return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getInvestSunstraction', value).then(res => { right3[0].value = res.data.mdnb_projectnum_z right3[0].value2 = res.data.mdnb_amountall_z right3[1].value = res.data.mdnb_projectnum_r right3[1].value2 = res.data.mdnb_amountall_r right3[2].value = res.data.mdnb_projectnum_f right3[2].value2 = res.data.mdnb_amountall_f resolve(1); }) }); }, // 获取右边中间右边的(预算额/已签合同额。。。) getDate9 () { return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getUnitBudgetExecuteDate', value).then(res => { res.data.forEach((item, index) => { right4[index].value = this.yuanChange(item.mdnb_aheadmoney) right4[index].value2 = this.yuanChange(item.mdnb_edmoney) right4[index].value3 = this.yuanChange(item.mdnb_smoney) right4[index].value4 = this.yuanChange(item.mdnb_jmoney) right4[index].value5 = this.yuanChange(item.mdnb_fkmoney) }) this.initChartR1() resolve(1); }) }); }, // 进度成本偏差 getDate10 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getInvestSunstractionGas', value).then(res => { res.data.forEach((item, index) => { right5[0][index][1] = that.numMulti(item.mdnb_amount_zb, 100) right5[0][index][2] = that.yuanChange(item.mdnb_amount_z) right5[1][index][1] = that.numMulti(item.mdnb_amount_nb, 100) right5[1][index][2] = that.yuanChange(item.mdnb_amount_n) right5[2][index][1] = that.numMulti(item.mdnb_amount_fb, 100) right5[2][index][2] = that.yuanChange(item.mdnb_amount_f) }) this.initChartR2() resolve(1); }) }); }, // 项目风险分析A getDate11 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getUnitNoSolveDangerDate', value).then(res => { res.data.forEach((item, index) => { right6[index].value = that.numFormat(item.mdnb_height) right6[index].value2 = that.numFormat(item.mdnb_midle) right6[index].value3 = that.numFormat(item.mdnb_bottom) }) this.initChartR3() resolve(1); }) }); }, // 项目风险分析B(雷达图) getDate12 () { return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getUnitDangerPoraitDate', value).then(res => { res.data.forEach((item, index) => { right7[index][0] = item.mdnb_anquan right7[index][1] = item.mdnb_fukuan right7[index][2] = item.mdnb_hetong right7[index][3] = item.mdnb_jiesuan right7[index][4] = item.mdnb_jindu right7[index][5] = item.mdnb_securty }) this.getDate11() resolve(1); }) }); }, // 中间大屏数据 getDate14 () { let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, mock: this.mockData, presetYear: this.year - 1 } get('/ierp/kapi/v2/mdnb/mdnb_xmkb/presetdata/getKeyData', value).then(res => { // 头部指标 if (!res.data) { return } center4[0] = res.data.transformations.estateAmount center4[1] = res.data.transformations.estateNum center4[2] = res.data.transformations.figureAmount center4[3] = res.data.transformations.figureNum // 左投部指标 center1[0] = res.data.keyIndicators.totalSum center1[1] = res.data.keyIndicators.total center1[2] = res.data.keyIndicators.property center1[3] = res.data.keyIndicators.invest // 投资产业分布 if (res.data.distribution.length != 0) { // for (let i = 0; i < center2.length; i++) { // center2[i].y = that.yuanChange(res.data.distribution[i].amount) // center2[i].value = that.yuanChange(res.data.distribution[i].amount) // center2[i].num = res.data.distribution[i].count // center2[i].typeno = res.data.distribution[i].typeno // } center2 = [] res.data.distribution.forEach((item, i) => { center2[i] = {} center2[i].name = item.type center2[i].y = that.yuanChange(item.amount) center2[i].value = that.yuanChange(item.amount) center2[i].num = item.count center2[i].typeno = item.typeno }) } // 投资执行情况 res.data.implementationStatus.forEach((item, index) => { center3[index].value = that.yuanChange(item.plan) center3[index].value2 = that.yuanChange(item.reality) }) // 五个一体化 res.data.five.forEach((item, index) => { center6[index] = { name: item.type, value: that.yuanChange(item.amount), typeno: item.typeno } }) // 投资阶段分析 res.data.investmentStage.forEach((item, index) => { center7[index] = { name: item.type, value: Number(item.num), value2: that.yuanChange(item.amount), typeno: item.typeno, sliced: false, selected: false } }) // 重点项目监控 center8 = [] this.originalConfig6 = res.data.projectMonitoring this.centerOriginalConfig6 = res.data.projectMonitoring res.data.projectMonitoring.forEach((item, index) => { center8.push({ value: item.amount, name: item.projectname, office: item.orgName }) }) // 中国地图 centerChina = [] res.data.investmentMap.forEach((item, index) => { centerChina.push({ name: item.address, value: that.yuanChange(item.amount), value2: item.value2 }) }) // 项目状态 proState.projectStatus1 = that.numFormat(res.data.projectStatus.projectStatus1) proState.projectStatus2 = that.numFormat(res.data.projectStatus.projectStatus2) proState.projectStatus3 = that.numFormat(res.data.projectStatus.projectStatus3) setTimeout(() => { that.initChinaChart() }) resolve(1); }) }); }, // 右边穿透一级 rightPenetrateOne () { let that = this this.boardType = 'right' return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', projectStepCode: this.rightAdd.projectStepCode, }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getOneLevelData', value).then(res => { res.data.forEach((item, index) => { common4[index] = item.mdnb_projects common5[index] = that.yuanChange(item.mdnb_amount_sl) }) setTimeout(() => { this.initChartLTip2('right') this.initChartLTip3('right') }) resolve(1); }) }); }, // 右边穿透二级 rightPenetrateTwo (modelName, substraction, orgName) { this.boardType = 'right' let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "request": { isInsert: this.mockData ? '1' : '0', modelName: this.rightAdd.modelName, projectStepCode: this.rightAdd.projectStepCode, substraction: this.rightAdd.substraction, orgName }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getTwoLevelData', value).then(res => { that.originalConfig6 = res.data that.config6.data = [] if (this.projectNum == 311) { that.config6.header = ["所属集团", "项目名称", '实施主体', '投中项目阶段', '投资总额(万元)'] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_unitcompany that.config6.data[index][1] = item.mdnb_project_name that.config6.data[index][2] = item.mdnb_implement_org that.config6.data[index][3] = item.mdnb_projectstep_mid that.config6.data[index][4] = that.numFormat(item.mdnb_investment_money / 10000) }) } else if (this.projectNum == 312 || this.projectNum == 313) { that.config6.header = ["所属集团", "项目名称", '实施主体', '容差百分比', '投资总额(万元)'] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_unitcompany that.config6.data[index][1] = item.mdnb_project_name that.config6.data[index][2] = item.mdnb_implement_org that.config6.data[index][3] = that.numMulti(item.mdnb_percentagetolerance, 100) + '%' that.config6.data[index][4] = that.numFormat(item.mdnb_investment_money / 10000) }) } else if (this.projectNum == 314) { that.config6.header = ["所属集团", "项目名称", '实施主体', '预算额(万元)', '已签订合同额(万元)', '产值认定额(万元)', '结算额(万元)', '付款申请额(万元)', '实际付款额(万元)'] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_unitcompany that.config6.data[index][1] = item.mdnb_project_name that.config6.data[index][2] = item.mdnb_implement_org that.config6.data[index][3] = that.numFormat(item.mdnb_budgetamount / 10000) that.config6.data[index][4] = that.numFormat(item.mdnb_contractamount / 10000) that.config6.data[index][5] = that.numFormat(item.mdnb_outputamount / 10000) that.config6.data[index][6] = that.numFormat(item.mdnb_settlementamount / 10000) that.config6.data[index][7] = that.numFormat(item.mdnb_paymentamount / 10000) that.config6.data[index][8] = that.numFormat(item.mdnb_actualpayamount / 10000) }) } else if (this.projectNum == 315) { that.config6.header = ["所属集团", "项目名称", '实施主体', '高风险项', '中风险项', '低风险项', '投资总额(万元)'] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_unitcompany that.config6.data[index][1] = item.mdnb_project_name that.config6.data[index][2] = item.mdnb_implement_org that.config6.data[index][3] = item.mdnb_heigtdanger that.config6.data[index][4] = item.mdnb_middledanger that.config6.data[index][5] = item.mdnb_lowdanger that.config6.data[index][6] = that.numFormat(item.mdnb_investment_money / 10000) }) } that.config6 = { ...that.config6 } that.projectListTipShow = true resolve(1); }) }); }, // 排序方法 compare (property) { return function (a, b) { var value1 = a[property]; var value2 = b[property]; return value1 - value2; //降序只需要 return value2- value1 } }, // 左边穿透一级 leftPenetrateOne (mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, typeNum, type, param, typeCTwo, paramCTwo) { this.boardType = 'left' let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { mdnb_combofield: this.mockData ? 'B' : 'A', mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, mdnb_datefield: this.year + '-01-01' }, pageSize: 1000 } post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/yjct', value).then(res => { res.data.rows[0].mdnb_entryentity12.sort(that.compare('mdnb_integerfield19')) if (res.data.rows.length > 0) { if (typeNum == 2) { common4 = [] common5 = [] res.data.rows[0].mdnb_entryentity12.forEach((item, index) => { common4.push(item.mdnb_integerfield18) common5.push(that.yuanChange(item.mdnb_amountfield12)) }) setTimeout(() => { this.initChartLTip2('left', mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, type, param, typeCTwo, paramCTwo) this.initChartLTip3('left', mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, type, param, typeCTwo, paramCTwo) }) } else if (typeNum == 1) { this.titleName == '项目数量' || this.titleName == '项目总数' common3 = [] res.data.rows[0].mdnb_entryentity12.forEach((item, index) => { (that.titleName == '项目数量' || that.titleName == '项目总数') ? common3.push(item.mdnb_integerfield18) : common3.push(that.yuanChange(item.mdnb_amountfield12)) }) this.initChartLTip('left', mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, type, param, typeCTwo, paramCTwo) } } resolve(1); }) }); }, // 左边穿透二级 leftPenetrateTwo (mdnb_textfield12, mdnb_textfield19, mdnb_textfield15, mdnb_textfield17, mdnb_textfield20, num) { num && (this.projectNum = num) this.boardType = 'left' let that = this if (that.versions) { return new Promise((resolve, err) => { let value = { access_token: this.access_token, "data": { mdnb_combofield: this.mockData ? 'B' : 'A', mdnb_datefield: this.year + '-01-01', mdnb_textfield12, mdnb_textfield19, mdnb_textfield15, mdnb_textfield17, mdnb_textfield20 }, pageSize: 1000 } if (mdnb_textfield20) { post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/ejct', value).then(res => { that.config6.data = [] if (res.data.rows.length > 0) { that.originalConfig6 = res.data.rows[0].mdnb_entryentity11 that.config6.data = [] if (this.projectNum == 211 || this.projectNum == 212) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '已占用额度(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 2141) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 2142) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '是否主业', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = item.mdnb_textfield21 that.config6.data[index][6] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 2143) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '项目管理类型', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = item.mdnb_textfield22 that.config6.data[index][6] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 215) { that.config6.header = ["所属集团", "项目名称", '投资主体', '产业类别I级', '产业类别II级', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield9 that.config6.data[index][4] = item.mdnb_textfield10 that.config6.data[index][5] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 216) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '项目阶段', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = item.mdnb_textfield24 that.config6.data[index][6] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } } that.config6 = { ...that.config6 } that.projectListTipShow = true resolve(1); }) } else { post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_preinvest/tzedfxzed', value).then(res => { if (res.data.rows.length > 0) { that.originalConfig6 = res.data.rows[0].mdnb_entryentity11 that.config6.data = [] if (this.projectNum == 211 || this.projectNum == 212) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '已占用额度(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 2141) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 2142) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '是否主业', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = item.mdnb_textfield21 that.config6.data[index][6] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 2143) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '项目管理类型', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = item.mdnb_textfield22 that.config6.data[index][6] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 215) { that.config6.header = ["所属集团", "项目名称", '投资主体', '产业类别I级', '产业类别II级', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield9 that.config6.data[index][4] = item.mdnb_textfield10 that.config6.data[index][5] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } else if (this.projectNum == 216) { that.config6.header = ["所属集团", "项目名称", '投资主体', '项目类型', '项目性质', '项目阶段', '本年度计划投资额(万元)'] res.data.rows[0].mdnb_entryentity11.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.mdnb_textfield7 that.config6.data[index][1] = item.mdnb_textfield6 that.config6.data[index][2] = item.mdnb_textfield8 that.config6.data[index][3] = item.mdnb_textfield25 that.config6.data[index][4] = item.mdnb_textfield26 that.config6.data[index][5] = item.mdnb_textfield24 that.config6.data[index][6] = that.numFormat(item.mdnb_amountfield22 / 10000) }) } that.config6 = { ...that.config6 } that.projectListTipShow = true } resolve(1); }) } }); } else { that.projectListTipShow = true } }, // 中间穿透一级 一个柱状图还是两个 centerPenetrateOne (type, param, typeNum, typeCTwo, paramCTwo, portType) { this.boardType = 'center' let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, mock: this.mockData, presetYear: this.year - 1, type, param } get('/ierp/kapi/v2/mdnb/mdnb_xmkb/presetdata/getPenetrationLevel1', value).then(res => { if (typeNum == 1) { common3 = [] res.data.keyIndicators.forEach((item, index) => { if (param == 'cyplanamount') { common3.push(that.yuanChange(item.cyplanamount)) } if (param == 'cyplancount') { common3.push(item.cyplancount) } if (param == 'szplanamount') { common3.push(that.yuanChange(item.szplanamount)) } if (param == 'szplancount') { common3.push(item.szplancount) } if (param == 'investamount') { common3.push(that.yuanChange(item.investamount)) } if (param == 'projectcount') { common3.push(item.projectcount) } if (param == 'gdzcamount') { common3.push(that.yuanChange(item.gdzcamount)) } if (param == 'gqtzamount') { common3.push(that.yuanChange(item.gqtzamount)) } if (param == 'ceiamount') { common3.push(that.yuanChange(item.ceiamount)) } if (param == 'cpneiamount') { common3.push(that.yuanChange(item.cpneiamount)) } if (param == 'ccheiamount') { common3.push(that.yuanChange(item.ccheiamount)) } if (param == 'cdiamount') { common3.push(that.yuanChange(item.cdiamount)) } if (param == 'cciamount') { common3.push(that.yuanChange(item.cciamount)) } }) setTimeout(() => { this.initChartLTip('center', '', '', '', '', typeCTwo, paramCTwo, portType) }) } else if (typeNum == 2) { common4 = [] common5 = [] if (type == 'distribution') { that.changeLine = false that.lineCommonCompany = res.data.topData common4 = res.data.topData.map(item => that.yuanChange(item.amount)) common5 = res.data.bottomData.map(item => that.yuanChange(item.amount)) } else { if (param == 'new') { res.data.keyIndicators.forEach((item, index) => { common4.push(item.newcount) common5.push(that.yuanChange(item.newamount)) }) } else if (param == 'renew') { res.data.keyIndicators.forEach((item, index) => { common4.push(item.renewcount) common5.push(that.yuanChange(item.renewamount)) }) } else { res.data.investmentMap.forEach((item, index) => { common4.push(item.value2) common5.push(that.yuanChange(item.amount)) }) } } setTimeout(() => { this.initChartLTip2('center', '', '', '', '', type, param, typeCTwo, paramCTwo, portType) this.initChartLTip3('center', '', '', '', '', type, param, typeCTwo, paramCTwo, portType) }) } else if (typeNum == 3) { // 山西地图 center5 = [] res.data.investmentMap.forEach((item, index) => { center5.push({ name: item.address, value: that.yuanChange(item.amount), value2: item.value2 }) }) setTimeout(() => { that.initProvinceChart() }); } resolve(1); }) }); }, // 中间穿透二级 centerPenetrateTwo (type, param, orgNum, portType, proName) { this.boardType = 'center' let that = this return new Promise((resolve, err) => { let value = { access_token: this.access_token, mock: this.mockData, presetYear: this.year - 1, type, param, orgNum } that.config6.header[2] = '投资主体' that.config6.header[5] = '年投资完成额(亿)' if (portType == 1) { get('/ierp/kapi/v2/mdnb/mdnb_xmkb/presetdata/MainPageMonthReportProject', value).then(res => { that.config6.data = [] that.originalConfig6 = res.data if (this.projectNum == 111) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "投资完成额(万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 112) { that.config6.header = ["所属集团", "项目名称", "投资主体", "产业类别I级", "产业类别II级", "投资完成额(万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.cylb that.config6.data[index][4] = item.cylb2 that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 1131) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "本年度计划投资额(万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 1132) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "投资完成额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 114) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "是否“两个转型”", "本年度计划投资额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.lgz that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 115) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "是否“五个一体化”", "本年度计划投资额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.wgy that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 116) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "建设阶段", "投资完成额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.stage that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 118) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "建设地点", "投资完成额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.buildaddr that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } that.config6 = { ...that.config6 } that.projectListTipShow = true resolve(1); }) } else if (portType == 2) { get('/ierp/kapi/v2/mdnb/mdnb_xmkb/presetdata/MainPagePlanProject', value).then(res => { that.config6.data = [] that.originalConfig6 = res.data if (this.projectNum == 111) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "投资完成额(万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 112) { that.config6.header = ["所属集团", "项目名称", "投资主体", "产业类别I级", "产业类别II级", "投资完成额(万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.cylb that.config6.data[index][4] = item.cylb2 that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 1131) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "本年度计划投资额(万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 1132) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "投资完成额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 114) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "是否“两个转型”", "本年度计划投资额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.lgz that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 115) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "是否“五个一体化”", "本年度计划投资额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.wgy that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 116) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "建设阶段", "投资完成额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.mdnb_quality that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } else if (this.projectNum == 118) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "建设地点", "投资完成额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.buildaddr that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } that.config6 = { ...that.config6 } that.projectListTipShow = true resolve(1); }) } else { value = { access_token: this.access_token, mock: this.mockData, presetYear: this.year - 1, type: 'investmentMap', param: proName, orgNum } get('/ierp/kapi/v2/mdnb/mdnb_xmkb/presetdata/MainPageMonthReportProject', value).then(res => { that.config6.data = [] that.originalConfig6 = res.data if (this.projectNum == 118) { that.config6.header = ["所属集团", "项目名称", "投资主体", "项目类型", "项目性质", "建设地点", "投资完成额 (万元)"] res.data.forEach((item, index) => { that.config6.data[index] = [] that.config6.data[index][0] = item.orgName that.config6.data[index][1] = item.projectname that.config6.data[index][2] = item.tzzt that.config6.data[index][3] = item.projectkind that.config6.data[index][4] = item.projectkinddetail that.config6.data[index][5] = item.buildaddr that.config6.data[index][6] = that.numFormat(item.amount / 10000) }) } that.config6 = { ...that.config6 } that.projectListTipShow = true resolve(1); }) } }); }, // 投中/投后黄圈轮播方法 yellowMouse (index) { if (index % 2 == 0) { this.yellowCount = index this.yellowPosition = (index / 2 - 1) * 315 + 40 this.yellowType = false this.changeYellow() } }, // 回到中国地图 backChina () { this.centerShow = false this.mapChart.dispose() setTimeout(() => { this.initChinaChart() }); }, // 找企业编码 findCode (code) { let a = this.commonCompanyAll.find((item, index) => { return item.simplename == code }) return a ? a.number.slice(0, 4) : '' }, // 找项目编码 findProjectCode (a, b, type, e) { if (type == 'center') { return this.originalConfig6[e.rowIndex].projectno // let c = this.originalConfig6.find(item => { // return item.orgName == a && item.projectname == b // }) // return c.projectno } else if (type == 'right') { return this.originalConfig6[e.rowIndex].mdnb_projectnumber // let c = this.originalConfig6.find(item => { // return item.mdnb_unitcompany == a && item.mdnb_project_name == b // }) // return c.mdnb_projectnumber } else if (type == 'left') { return this.originalConfig6[e.rowIndex].mdnb_textfield14 // let c = this.originalConfig6.find(item => { // return item.mdnb_textfield7 == a && item.mdnb_textfield6 == b // }) // return c.mdnb_textfield14 } else if (type == 'center2') { return this.centerOriginalConfig6[e.rowIndex].projectno // let c = this.centerOriginalConfig6.find(item => { // return item.orgName == a && item.projectname == b // }) // return c.projectno } }, // 去项目看板 goLookBoard (e, f) { if (f) { this.boardType = f } // this.boardUrl = `http://${this.goUrl}/ierp/accessTokenLogin.do?access_token=${this.access_token}&redirect=http://${this.goUrl}/ierp/index.html?formId=mdnb_threetoproject&prj=${this.findProjectCode(e.row[0], e.row[1], this.boardType)}` this.boardUrl = `http://${this.goUrl}/ierp/accessTokenLogin.do?access_token=${this.access_token}&redirect=http://${this.goUrl}/ierp/index.html?formId=mdnb_threetoproject&prj=${this.findProjectCode(e.row[0], e.row[1], this.boardType, e)}` // this.findProjectCode(e.row[0],e.row[2]) // 当前页面打开 // window.location.href = `http://192.168.2.111:8080/ierp/accessTokenLogin.do?access_token=${this.access_token}&redirect=http://192.168.2.111:8080/ierp/index.html?formId=mdnb_threetoproject&prj=PL_ZZGY_0_2023_000036` // 新页面打开 // window.open('http://192.168.2.111:8080/ierp/accessTokenLogin.do?access_token=${this.access_token}&redirect=http://192.168.2.111:8080/ierp/index.html?formId=mdnb_threetoproject&prj=PL_ZZGY_0_2023_000036') this.boardTipShow = true console.log(this.boardUrl, '跳转去的项目看板地址') }, // 根据key分组 classify (arr, k) { let map = {}; let myArr = []; for (let i = 0; i < arr.length; i++) { if (!map[arr[i][k]]) { let a = {} a[k] = arr[i][k] a.data = [arr[i]] myArr.push(a) map[arr[i][k]] = arr[i] } else { for (let j = 0; j < myArr.length; j++) { if (arr[i][k] === myArr[j][k]) { myArr[j].data.push(arr[i]); break } } } } return myArr }, // 两个柱状图的弹窗 showChartLTipDouble (e, location, mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, type, param, typeCTwo, paramCTwo, portType, num, modelName, projectStepCode, substraction) { modelName ? this.rightAdd.modelName = modelName : this.rightAdd.modelName = '' projectStepCode ? this.rightAdd.projectStepCode = projectStepCode : this.rightAdd.projectStepCode = '' substraction ? this.rightAdd.substraction = substraction : this.rightAdd.substraction = '' num && (this.projectNum = num) this.titleName = e this.closeTap() this.echartDoubleTipShow = true if (this.versions) { if (location == 'right') { this.rightPenetrateOne() } if (location == 'left') { this.leftPenetrateOne(mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, 2) } if (location == 'center') { this.centerPenetrateOne(type, param, 2, typeCTwo, paramCTwo, portType) } } else { setTimeout(() => { this.initChartLTip2() this.initChartLTip3() }) } }, // 单个柱状图的弹窗 showChartLTipSingle (e, location, type, param, mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, typeCTwo, paramCTwo, portType, num) { this.projectNum = num this.closeTap() this.titleName = e this.echartSingleTipShow = true if (this.versions) { if (location == 'center') { this.centerPenetrateOne(type, param, 1, typeCTwo, paramCTwo, portType) } if (location == 'left') { this.leftPenetrateOne(mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, 1, type, param) } } else { setTimeout(() => { this.initChartLTip(location) }) } }, initChartLTip (location, mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, typeCTwo, paramCTwo, portType) { this.myChartTip1 = echarts.init(document.getElementById("echartSingleTip")); if (!(this.titleName == '项目数量' || this.titleName == '项目总数')) { common3 = common3.map((item) => Number(item) + 1) } let option = { grid: { top: 40, right: 0, left: 60, bottom: 70, }, tooltip: { show: true, trigger: "axis", axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: "shadow", // 默认为直线,可选为:'line' | 'shadow' }, formatter: data => { if (this.titleName == '项目数量' || this.titleName == '项目总数') { return `${data[0].name}
${data[0].seriesName}:${that.numFormat(data[0].value)}个` } else { return `${data[0].name}
${data[0].seriesName}:${that.numFormat(that.numSub(data[0].value, 1))}亿` } }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: commonCompany, axisTick: { show: false, }, // x轴的字体颜色 axisLabel: { rotate: 40, textStyle: { color: "white", fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, }, yAxis: { minInterval: 1, // onZero:true, name: (this.titleName == '项目数量' || this.titleName == '项目总数') ? '个' : '亿', nameTextStyle: {//y轴上方单位的颜色 color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, axisTick: { lineStyle: { color: "#18416F", }, }, // y轴的字体颜色 axisLabel: { textStyle: { color: "white", fontSize: '20' }, formatter: function (value) { if (that.titleName == '项目数量' || that.titleName == '项目总数') { return value } else { return value === 1 ? 0 : value } } }, splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, }, series: [ { name: (this.titleName == '项目数量' || this.titleName == '项目总数') ? '总数量' : "总额度", type: "bar", data: common3, showBackground: false, backgroundStyle: { color: "#18416F", }, barWidth: "30%", itemStyle: { // barBorderRadius: [10, 10, 0, 0], color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ { offset: 0, color: '#082550', }, { offset: 1, color: '#957DFF', }, ]), }, }, ], legend: { // data: ["2022年额度", "2023年额度"], data: (this.titleName == '项目数量' || this.titleName == '项目总数') ? ["总数量"] : ["总额度"], textStyle: { // 图列内容样式 color: "#fff", // 字体颜色 fontSize: "20", fontFamily: 'Microsoft YaHei' }, right: 'center', y: 5, // 小图标的宽高 }, }; if (!(this.titleName == '项目数量' || this.titleName == '项目总数')) { option.yAxis.min = 1 option.yAxis.type = 'log' option.yAxis.logBase = 5 } tools.loopShowTooltip(this.myChartTip1, option, { interval: 2000, loopSeries: true, }) let that = this that.myChartTip1.on('click', function (param) { if (that.versions) { if (location == 'right') { that.rightPenetrateTwo(that.rightPenetrateTwo.modelName, '', that.findCode(param.name)) } else if (location == 'left') { that.leftPenetrateTwo(mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, param.name, that.projectNum) } else if (location == 'center') { that.centerPenetrateTwo(typeCTwo, paramCTwo, that.findCode(param.name), portType) } } else { that.projectListTipShow = true } }) that.myChartTip1.setOption(option); }, initChartLTip2 (location, mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, type, param, typeCTwo, paramCTwo, portType) { let param2 = param this.myChartTip2 = echarts.init(document.getElementById("echartSingleTip2")); let option = { grid: { top: 40, right: 0, left: 60, bottom: '15%', }, tooltip: { show: true, trigger: "axis", axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: "shadow", // 默认为直线,可选为:'line' | 'shadow' }, formatter: data => { return this.changeLine ? `${data[0].name}
${data[0].seriesName}:${that.numFormat(data[0].value)}个` : `${data[0].name}
${data[0].seriesName}:${that.numFormat(data[0].value)}亿` }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: this.changeLine ? commonCompany : this.lineCommonCompany.map(item => item.type), axisTick: { show: false, }, // x轴的字体颜色 axisLabel: { rotate: this.changeLine ? 40 : 20, textStyle: { color: "white", fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, }, yAxis: { minInterval: 1, name: this.changeLine ? '个' : '亿', nameTextStyle: {//y轴上方单位的颜色 color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, axisTick: { lineStyle: { color: "#18416F", }, }, // y轴的字体颜色 axisLabel: { textStyle: { color: "#fff", fontSize: '20', fontFamily: 'Microsoft YaHei' } }, splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, }, series: [ { name: this.changeLine ? "总数量" : '总额度', type: this.changeLine ? "bar" : 'line', data: common4, showBackground: false, backgroundStyle: { color: "#18416F", }, barWidth: "30%", itemStyle: { // barBorderRadius: [10, 10, 0, 0], color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ { offset: 0, color: '#082550', }, { offset: 1, color: '#957DFF', }, ]), }, lineStyle: { color: '#957DFF', width: 3, }, }, ], legend: { // data: ["2022年额度", "2023年额度"], data: this.changeLine ? ["总数量"] : ["总额度"], textStyle: { // 图列内容样式 color: "#fff", // 字体颜色 fontSize: "20", fontFamily: 'Microsoft YaHei' }, right: 'center', y: 0, // 小图标的宽高 }, }; tools.loopShowTooltip(this.myChartTip2, option, { interval: 2000, loopSeries: true, }) let that = this that.myChartTip2.on('click', function (param) { if (that.versions) { if (location == 'right') { that.rightPenetrateTwo(that.rightPenetrateTwo.modelName, '', that.findCode(param.name)) } else if (location == 'left') { that.leftPenetrateTwo(mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, param.name, that.projectNum) } else if (location == 'center') { if (this.changeLine) { that.centerPenetrateTwo(typeCTwo, paramCTwo, that.findCode(param.name), portType, param2) } else { let a = that.lineCommonCompany.find(item => item.type == param.name) that.centerPenetrateTwo(typeCTwo, a.typeno, '', portType, param2) } } } else { that.projectListTipShow = true } }) that.myChartTip2.setOption(option); }, initChartLTip3 (location, mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, type, param, typeCTwo, paramCTwo, portType) { let param2 = param this.myChartTip3 = echarts.init(document.getElementById("echartSingleTip3")); common5 = common5.map((item) => Number(item) + 1) let option = { grid: { top: 40, right: 0, left: 60, bottom: '15%', }, tooltip: { show: true, trigger: "axis", axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: "shadow", // 默认为直线,可选为:'line' | 'shadow' }, formatter: data => { return `${data[0].name}
${data[0].seriesName}:${that.numFormat(that.numSub(data[0].value, 1))}亿` }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: commonCompany, axisTick: { show: false, }, // x轴的字体颜色 axisLabel: { rotate: 40, textStyle: { color: "#fff", fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, }, yAxis: { type: 'log', min: 1, logBase: 5, name: '亿', nameTextStyle: {//y轴上方单位的颜色 color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, axisTick: { lineStyle: { color: "#18416F", }, }, // y轴的字体颜色 axisLabel: { textStyle: { color: "#fff", fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (value) { return value === 1 ? 0 : value } }, splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, }, series: [ { name: "总额度", type: "bar", data: common5, showBackground: false, backgroundStyle: { color: "#18416F", }, barWidth: "30%", itemStyle: { // barBorderRadius: [10, 10, 0, 0], color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ { offset: 0, color: '#082550', }, { offset: 1, color: '#69c0ff', }, ]), }, }, ], legend: { data: ["总额度"], textStyle: { // 图列内容样式 color: "#fff", // 字体颜色 fontSize: "20", fontFamily: 'Microsoft YaHei' }, right: 'center', y: 5, }, }; let that = this that.myChartTip3.on('click', function (param) { if (that.versions) { if (location == 'right') { that.rightPenetrateTwo(that.rightPenetrateTwo.modelName, '', that.findCode(param.name)) } else if (location == 'left') { that.leftPenetrateTwo(mdnb_textfield11, mdnb_textfield13, mdnb_textfield16, mdnb_textfield23, param.name, that.projectNum) } else if (location == 'center') { that.centerPenetrateTwo(typeCTwo, paramCTwo, that.findCode(param.name), portType, param2) } } else { that.projectListTipShow = true } }) that.myChartTip3.setOption(option); tools.loopShowTooltip(that.myChartTip3, option, { interval: 2000, loopSeries: true, }) }, closeTap () { this.changeLine = true this.echartEnterpriseShow = false this.mapTipShow = false this.echartSingleTipShow = false this.echartDoubleTipShow = false this.projectListTipShow = false this.myChartTip1 ? this.myChartTip1.dispose() : '' this.myChartTip2 ? this.myChartTip2.dispose() : '' this.myChartTip3 ? this.myChartTip3.dispose() : '' }, //点击弹窗左半部分 popLeftClick () { if (this.titleUrl == '2.png') { this.titleUrl = '3.png' } else if (this.titleUrl == '7.png') { this.titleUrl = '8.png' } else if (this.titleUrl == '3.png') { this.titleUrl = '2.png' } else if (this.titleUrl == '8.png') { this.titleUrl = '7.png' } else if (this.titleUrl == '5.png') { this.titleUrl = '2.png' } else if (this.titleUrl == '10.png') { this.titleUrl = '7.png' } }, //点击弹窗右半部分 poprightClick () { if (this.titleUrl == '2.png') { this.titleUrl = '5.png' } else if (this.titleUrl == '7.png') { this.titleUrl = '10.png' } else if (this.titleUrl == '5.png') { this.titleUrl = '2.png' } else if (this.titleUrl == '10.png') { this.titleUrl = '7.png' } else if (this.titleUrl == '3.png') { this.titleUrl = '2.png' } else if (this.titleUrl == '8.png') { this.titleUrl = '7.png' } }, // 标题弹窗 showTitlePop (e, name) { this.closeTap() this.titleUrl = e this.titleName = name this.$nextTick(() => { this.mapTipShow = true }) }, changeYellow () { this.titleList.forEach((item, index) => { this.$set(this.titleList[index], 'type', 1) }) this.$set(this.titleList[this.yellowCount], 'type', 2) if (this.yellowCount == 14) { this.yellowCount = 0 this.yellowPosition += 315 } else { if (this.yellowCount != 0) { this.yellowPosition += 315 } else { this.yellowPosition = 40 } this.yellowCount += 2 } }, changeTopColor () { this.list = document.getElementsByClassName('row-item') for (var i = 0; i < this.list.length; i++) { if (i == 1) { this.list[i].classList.add('light') } else { this.list[i].classList.remove('light') } } this.initChartL9() }, scrollChange (index) { if (index == 18) { this.count = -1 } else { this.count = index } if (this.count > 12 && this.count != 18) { this.countType = 1 } else { this.countType = 0 } for (var i = 0; i < this.list.length; i++) { if (i == 2) { this.list[i].classList.add('light') } else { this.list[i].classList.remove('light') } } this.chartCarousel ? this.chartCarousel.dispose() : '' this.initChartL9() }, initChartBall () { this.left11Chart = echarts.init(this.$refs['echartBall']) option = { series: [ { type: "liquidFill", radius: "80%", data: [common2[0], common2[0] + 0.02, common2[0] - 0.02], amplitude: '4%', waveLength: '20%', //波浪长度 // data: [ // {} // ], backgroundStyle: { color: { type: "radial", x: 0.5, y: 0.5, r: 0.7, // 水球体颜色 colorStops: [ { offset: 0, color: "#010a11", }, { offset: 0.9, color: "#1a2f45", }, { offset: 1, color: "#2b405a", }, ], globalCoord: false, }, }, outline: { borderDistance: 0, itemStyle: { borderWidth: 0, borderColor: { type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [ ], globalCoord: false, }, }, }, color: [ { x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#237386', }, { offset: 1, color: '#0078C8', },], }, { x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#2F97A9', }, { offset: 1, color: '#0078C8', },], }, { x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#48E0ED', }, { offset: 1, color: '#0078C8', },], } ], label: { normal: { textStyle: { color: "#fff", // x轴文字颜色 fontSize: '70' }, }, }, }, ], }; this.left11Chart.setOption(option) }, initChartL1 () { let that = this this.left9Chart = echarts.init(this.$refs['echartL1']) option = { series: [ { type: "liquidFill", radius: "80%", data: [left2[0], left2[0] + 0.02, left2[0] - 0.02], amplitude: '4%', // period:'1500', waveLength: '20%', //波浪长度 // data: [ // {} // ], backgroundStyle: { color: { type: "radial", x: 0.5, y: 0.5, r: 0.7, // 水球体颜色 colorStops: [ { offset: 0, color: "#010a11", }, { offset: 0.9, // color: "#203852", color: "#1a2f45", }, { offset: 1, // color: "#354e6d", color: "#2b405a", // color: "#314967", }, ], globalCoord: false, }, }, outline: { borderDistance: 0, itemStyle: { borderWidth: 0, borderColor: { type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [ ], globalCoord: false, }, }, }, color: [ { x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#237386', }, { offset: 1, color: '#0078C8', },], }, { x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#2F97A9', }, { offset: 1, color: '#0078C8', },], }, { x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#48E0ED', }, { offset: 1, color: '#0078C8', },], } ], label: { normal: { textStyle: { color: "#fff", // x轴文字颜色 }, formatter: data => { return `${that.numMulti(data.value, 100).toFixed(2)}%` }, }, }, }, ], }; this.left9Chart.setOption(option) }, initChartL2 () { var chartData = left5 var i = 0; let that = this var option = { colors: ['#064F78', '#BDB35D', '#623726', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 45, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime1 && clearInterval(that.pieTime1); that.pieTime1 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { // item.sliced = true // item.selected = true } }) that.left1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2142 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) i++; if (i === len) { i = 0; chartData.forEach((item, index) => { // item.sliced = false // item.selected = false }) that.left1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2142 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) } }, 2000); }, legendItemClick: function (event) { return true; } } }, credits: { enabled: false //去掉hightchats水印 }, legend: { // labelFormatter: function() { // return 123; // }, align: 'right',//横向位置 verticalAlign: 'middle', // 纵向位置 layout: "vertical",//横排还是竖排 x: -110, y: 90, symbolWidth: 50, itemStyle: { fontSize: '20px', color: '#fff', x: 20, fontWeight: 0, fontFamily: 'Microsoft YaHei' }, }, title: { text: '主辅业计划占比', style: { color: '#fff', fontSize: 24, fontFamily: 'Microsoft YaHei', }, align: 'center', verticalAlign: "bottom", x: -120 }, tooltip: { crosshairs: false, backgroundColor: 'rgba(0,0,0,0.5)', // positioner: function(e){ // }, // useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontWeight: 0, fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage) return `${this.key}:${this.percentage}%
${that.numFormat(this.y)}亿,${that.numFormat(num)}个` }, //pointFormat: }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 220, innerSize: 150, //环形图中间空白,0为饼图 depth: 25, //立体高度 slicedOffset: 21, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, series: [{ type: 'pie', name: '占比', center: ['50%', '50%'], point: { events: { click: function (e) { //点击事件 that.projectNum = 2142 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { // item.sliced = false // item.selected = false }) // chartData[e.target.index].sliced = true // chartData[e.target.index].selected = true that.left1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2142 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) that.pieTime1 && clearInterval(that.pieTime1); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.left1Chart.series[0].points; var len = points.length; that.pieTime1 && clearInterval(that.pieTime1); that.pieTime1 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { // item.sliced = false // item.selected = false if (index == i) { // item.sliced = true // item.selected = true } }) that.left1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2142 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) i++; if (i === len) { i = 0; chartData.forEach((item, index) => { item.sliced = false item.selected = false }) that.left1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2142 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) } }, 2000); } } }, data: chartData }] } that.left1Chart = Highcharts.chart('echartL2', option); function autoTooltip (point) { that.left1Chart.tooltip.refresh(point); } }, initChartL3 () { var chartData = left6 var i = 0; let that = this that.left2Chart = Highcharts.chart('echartL3', { colors: ['#064F78', '#BDB35D', '#623726', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 45, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime2 && clearInterval(that.pieTime2); that.pieTime2 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { // item.sliced = true // item.selected = true } }) that.left2Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2143 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) i++; if (i === len) { i = 0; chartData.forEach((item, index) => { // item.sliced = false // item.selected = false }) that.left2Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2143 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) } }, 2000); }, legendItemClick: function (event) { that.projectNum = 2143 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') return true; } } }, credits: { enabled: false //去掉hightchats水印 }, legend: { // labelFormatter: function() { // return 123; // }, align: 'right',//横向位置 verticalAlign: 'middle', // 纵向位置 layout: "vertical",//横排还是竖排 x: -70, y: 90, symbolWidth: 50, itemStyle: { fontSize: '20px', color: '#fff', x: 20, fontWeight: 0, fontFamily: 'Microsoft YaHei' }, }, title: { text: '项目管理类型', style: { color: '#fff', fontSize: 24, fontFamily: 'Microsoft YaHei' }, align: 'center', verticalAlign: "bottom", x: -120 }, tooltip: { crosshairs: true, backgroundColor: 'rgba(0,0,0,0.5)', // positioner: function(e){ // }, useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage) return `${this.key}:${this.percentage}%
${that.numFormat(this.y)}亿,${that.numFormat(num)}个` }, //pointFormat: }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 220, innerSize: 150, //环形图中间空白,0为饼图 depth: 25, //立体高度 slicedOffset: 21, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, series: [{ type: 'pie', name: '占比', // center: ['70%', '50%'], point: { events: { click: function (e) { //点击事件 that.projectNum = 2143 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { item.sliced = false item.selected = false }) // chartData[e.target.index].sliced = true // chartData[e.target.index].selected = true that.left2Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2143 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) that.pieTime2 && clearInterval(that.pieTime2); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.left2Chart.series[0].points; var len = points.length; that.pieTime2 && clearInterval(that.pieTime2); that.pieTime2 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { // item.sliced = true // item.selected = true } }) that.left2Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.projectNum = 2143 that.showChartLTipDouble(e.point.name, 'left', '投资计划分析', e.point.name, '', '') } } }, data: chartData }] }) i++; if (i === len) { i = 0; chartData.forEach((item, index) => { item.sliced = false item.selected = false }) that.left2Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { } } }, data: chartData }] }) } }, 2000); } } }, data: chartData }] }); function autoTooltip (point) { that.left2Chart.tooltip.refresh(point); } }, initChartL4 (dataList) { this.left10Chart = echarts.init(document.getElementById("echartL4")); let option = { grid: { top: 45, right: 0, left: 80, bottom: 80, }, tooltip: { show: true, trigger: "axis", formatter: data => { return `${data[0].name}
${data[0].seriesName}:${that.numFormat(data[0].value)}亿
${data[1].seriesName}:${that.numFormat(data[1].value)}亿` }, axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: "shadow", // 默认为直线,可选为:'line' | 'shadow' }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: commonCompany, axisTick: { show: false, }, // x轴的字体颜色 axisLabel: { rotate: 40, textStyle: { color: "white", fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, }, yAxis: { name: '亿', axisTick: { lineStyle: { color: "#18416F", }, }, // y轴的字体颜色 axisLabel: { textStyle: { color: "white", fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, splitLine: { show: true, lineStyle: { color: "#68b4dd66", width: 1, type: "dashed", }, }, //y轴线的颜色以及宽度 axisLine: { show: true, lineStyle: { color: "#1E5389", width: 1, type: "solid", }, }, nameTextStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, series: [ { name: "已用额度", type: "bar", data: left3[0], // stack: 'Ad', showBackground: false, backgroundStyle: { color: "#18416F", }, barWidth: "15", itemStyle: { // barBorderRadius: [10, 10, 0, 0], color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ { offset: 0, color: '#082550', }, { offset: 1, color: '#3986F8', }, ]), }, zlevel: 1 }, { name: "总额度", type: "bar", data: left3[2], // stack: 'Ad', barGap: '-130%', showBackground: false, backgroundStyle: { color: "#18416F", }, barWidth: "25", itemStyle: { // barBorderRadius: [10, 10, 0, 0], color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ { offset: 0, color: '#b9b7c060', }, { offset: 1, color: '#b9b7c060', }, ]), }, }, ], legend: { // data: ["2022年额度", "2023年额度"], data: ["2023年额度"], textStyle: { // 图列内容样式 color: "#fff", // 字体颜色 fontSize: "20", fontFamily: 'Microsoft YaHei' }, right: 'center', y: 5, // icon: "roundRect", // 小图标的宽高 }, }; let that = this tools.loopShowTooltip(that.left10Chart, option, { nterval: 2000, loopSeries: true, }) that.left10Chart.on('click', function (param) { that.titleName = param.name that.echartEnterpriseShow = true // 如果是接口版数据版 if (that.versions) { let findData = dataList.find(item => { return item.mdnb_textfield == param.name }) common1[0] = findData.mdnb_amountfield18 common1[1] = findData.mdnb_amountfield20 common1[2] = findData.mdnb_amountfield19 common1[3] = findData.mdnb_amountfield26 common1[4] = findData.mdnb_amountfield27 common1[5] = findData.mdnb_amountfield25 common2[0] = findData.mdnb_decimalfield6 } setTimeout(() => { that.initChartBall() }); }) that.left10Chart.setOption(option); }, initChartL5 () { var chartData = left7 var i = 0; let that = this var option = { colors: ['#064F78', '#BDB35D', '#623726', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 45, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime3 && clearInterval(that.pieTime3); that.pieTime3 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left3Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '传统产业', e.point.name, '', '', '', '', '', '', 215) // that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '优势特色产业', '体育产业', '') } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); }, legendItemClick: function (event) { return true; } } }, credits: { enabled: false //去掉hightchats水印 }, legend: { // labelFormatter: function() { // return 123; // }, align: 'right',//横向位置 verticalAlign: 'middle', // 纵向位置 layout: "vertical",//横排还是竖排 x: -30, // y: 50, symbolWidth: 50, itemDistance: 50, itemStyle: { fontSize: '20px', color: '#fff', x: 20, fontWeight: 0, fontFamily: 'Microsoft YaHei' }, }, title: { text: '传统产业分析', style: { color: '#fff', fontSize: 24, fontFamily: 'Microsoft YaHei' }, align: 'center', verticalAlign: "bottom", x: -120 }, tooltip: { crosshairs: true, backgroundColor: 'rgba(0,0,0,0.5)', // positioner: function(e){ // }, useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage) return `${this.key}:${this.percentage}%
${that.numFormat(this.y)}亿,${that.numFormat(num)}个` }, //pointFormat: }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 220, innerSize: 150, //环形图中间空白,0为饼图 depth: 25, //立体高度 slicedOffset: 21, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, series: [{ type: 'pie', name: '占比', //center: ['35%','50%'], point: { events: { click: function (e) { //点击事件 that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '传统产业', e.point.name, '', '', '', '', '', '', 215) // that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '优势特色产业', '体育产业', '') }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { item.sliced = false item.selected = false }) chartData[e.target.index].sliced = true chartData[e.target.index].selected = true that.left3Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '传统产业', e.point.name, '', '', '', '', '', '', 215) // that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '优势特色产业', '体育产业', '') } } }, data: chartData }] }) that.pieTime3 && clearInterval(that.pieTime3); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.left3Chart.series[0].points; var len = points.length; that.pieTime3 && clearInterval(that.pieTime3); that.pieTime3 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left3Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '传统产业', e.point.name, '', '', '', '', '', '', 215) // that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '优势特色产业', '体育产业', '') } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); } } }, data: chartData }] } that.left3Chart = Highcharts.chart('echartL5', option); function autoTooltip (point) { that.left3Chart.tooltip.refresh(point); } }, initChartL6 () { var chartData = left8 var i = 0; let that = this var option = { colors: ['#064F78', '#BDB35D', '#623726', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 45, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime4 && clearInterval(that.pieTime4); that.pieTime4 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '战略性新兴产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); }, legendItemClick: function (event) { return true; } } }, credits: { enabled: false //去掉hightchats水印 }, legend: { // labelFormatter: function() { // return 123; // }, align: 'right',//横向位置 verticalAlign: 'middle', // 纵向位置 layout: "vertical",//横排还是竖排 x: 12, // y: 30, symbolWidth: 50, itemDistance: 50, itemStyle: { fontSize: '20px', color: '#fff', x: 20, fontWeight: 0, fontFamily: 'Microsoft YaHei' }, }, title: { text: '战略性新兴产业', style: { color: '#fff', fontSize: 24, fontFamily: 'Microsoft YaHei' }, align: 'center', verticalAlign: "bottom", x: -120 }, tooltip: { crosshairs: true, backgroundColor: 'rgba(0,0,0,0.5)', // positioner: function(e){ // }, useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage) return `${this.key}:${this.percentage}%
${that.numFormat(this.y)}亿,${that.numFormat(num)}个` }, //pointFormat: }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 220, innerSize: 150, //环形图中间空白,0为饼图 depth: 25, //立体高度 slicedOffset: 21, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, series: [{ type: 'pie', name: '占比', //center: ['35%','50%'], point: { events: { click: function (e) { //点击事件 that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '战略性新兴产业', e.point.name, '', '', '', '', '', '', 215) }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { item.sliced = false item.selected = false }) chartData[e.target.index].sliced = true chartData[e.target.index].selected = true that.left4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '战略性新兴产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) that.pieTime4 && clearInterval(that.pieTime4); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.left4Chart.series[0].points; var len = points.length; that.pieTime4 && clearInterval(that.pieTime4); that.pieTime4 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '战略性新兴产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); } } }, data: chartData }] } that.left4Chart = Highcharts.chart('echartL6', option); function autoTooltip (point) { that.left4Chart.tooltip.refresh(point); } }, initChartL7 () { var chartData = left9 var i = 0; let that = this var option = { colors: ['#064F78', '#BDB35D', '#623726', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 45, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime5 && clearInterval(that.pieTime5); that.pieTime5 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left5Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '特色优势产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); }, legendItemClick: function (event) { return true; } } }, credits: { enabled: false //去掉hightchats水印 }, title: { text: '特色优势产业', style: { color: '#fff', fontSize: 24, fontFamily: 'Microsoft YaHei' }, align: 'center', verticalAlign: "bottom", x: -120 }, legend: { // labelFormatter: function() { // return 123; // }, align: 'right',//横向位置 verticalAlign: 'middle', // 纵向位置 layout: "vertical",//横排还是竖排 x: -50, // y: 30, symbolWidth: 50, itemDistance: 50, itemStyle: { fontSize: '20px', color: '#fff', x: 20, fontWeight: 0, fontFamily: 'Microsoft YaHei' }, }, tooltip: { crosshairs: true, backgroundColor: 'rgba(0,0,0,0.5)', // positioner: function(e){ // }, useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage) return `${this.key}:${this.percentage}%
${that.numFormat(this.y)}亿,${that.numFormat(num)}个` }, //pointFormat: }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 220, innerSize: 150, //环形图中间空白,0为饼图 depth: 25, //立体高度 slicedOffset: 21, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, series: [{ type: 'pie', name: '占比', //center: ['35%','50%'], point: { events: { click: function (e) { //点击事件 that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '特色优势产业', e.point.name, '', '', '', '', '', '', 215) }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { item.sliced = false item.selected = false }) chartData[e.target.index].sliced = true chartData[e.target.index].selected = true that.left5Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '特色优势产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) that.pieTime5 && clearInterval(that.pieTime5); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.left5Chart.series[0].points; var len = points.length; that.pieTime5 && clearInterval(that.pieTime5); that.pieTime5 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left5Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '特色优势产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); } } }, data: chartData }] } that.left5Chart = Highcharts.chart('echartL7', option); function autoTooltip (point) { that.left5Chart.tooltip.refresh(point); } }, initChartL8 () { var chartData = left10 var i = 0; let that = this var option = { colors: ['#064F78', '#BDB35D', '#623726', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 45, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime6 && clearInterval(that.pieTime6); that.pieTime6 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left6Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '公共基础等产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); }, legendItemClick: function (event) { return true; } } }, credits: { enabled: false //去掉hightchats水印 }, title: { text: '公共基础等产业', style: { color: '#fff', fontSize: 24, fontFamily: 'Microsoft YaHei' }, align: 'center', verticalAlign: "bottom", x: -120 }, legend: { // labelFormatter: function() { // return 123; // }, align: 'right',//横向位置 verticalAlign: 'middle', // 纵向位置 layout: "vertical",//横排还是竖排 x: -70, // y: 50, symbolWidth: 50, itemDistance: 50, itemStyle: { fontSize: '20px', color: '#fff', x: 20, fontWeight: 0, fontFamily: 'Microsoft YaHei' }, }, tooltip: { crosshairs: true, backgroundColor: 'rgba(0,0,0,0.5)', // positioner: function(e){ // }, useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage) return `${this.key}:${this.percentage}%
${that.numFormat(this.y)}亿,${that.numFormat(num)}个` }, //pointFormat: }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 220, innerSize: 150, //环形图中间空白,0为饼图 depth: 25, //立体高度 slicedOffset: 21, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, series: [{ type: 'pie', name: '占比', // center: ['35%','50%'], point: { events: { click: function (e) { //点击事件 that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '公共基础等产业', e.point.name, '', '', '', '', '', '', 215) }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { item.sliced = false item.selected = false }) chartData[e.target.index].sliced = true chartData[e.target.index].selected = true that.left6Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '公共基础等产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) that.pieTime6 && clearInterval(that.pieTime6); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.left6Chart.series[0].points; var len = points.length; that.pieTime6 && clearInterval(that.pieTime6); that.pieTime6 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.left6Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'left', '产业布局分析', '公共基础等产业', e.point.name, '', '', '', '', '', '', 215) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); } } }, data: chartData }] } that.left6Chart = Highcharts.chart('echartL8', option); function autoTooltip (point) { that.left6Chart.tooltip.refresh(point); } }, initChartL9 () { let that = this this.chartCarousel = echarts.init(document.getElementById("echartL9")); option = { tooltip: { trigger: 'axis', formatter: '指标:' + '{c0}' + '
' + '发展线:' + '{c1}' + '
' + '生存线:' + '{c2}', //+ '
'+ '{a1}:{c1}' + '%', axisPointer: { type: 'shadow', }, }, grid: { top: '10%', right: '5%', left: '12%', bottom: '15%', }, xAxis: { // data: ['总投资收益率', '销售利润率', '成本费用利润率', '总资产周转率', '财务内部收益率'], data: left15[this.countType], axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: true, //隐藏X轴刻度 }, axisLabel: { show: true, rotate: 30, textStyle: { color: '#fff', //X轴文字颜色 fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, }, yAxis: [ { type: 'value', splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: false }, axisLabel: { show: true, formatter: '{value}%', textStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#ebf8ac', fontSize: 16, fontFamily: 'Microsoft YaHei' }, }, ], series: [ { name: '实际值', type: 'bar', barWidth: 20, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#69c0ff', }, { offset: 1, color: '#082550', }, ]), }, }, // data: [70, 52, 33, 41, 52], data: this.storageRecordConfig.data.length == 0 ? [] : this.storageRecordConfig.data.length == 1 ? left12[this.count][2] : left12[this.count + 1][2] }, { name: '', type: 'line', barWidth: 15, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#69c0ff', }, { offset: 1, color: 'green', }, ]), }, }, // data: [20, 30, 15, 28, 36], data: this.storageRecordConfig.data.length == 0 ? [] : this.storageRecordConfig.data.length == 1 ? left12[this.count][1] : left12[this.count + 1][1] }, { name: '', type: 'line', barWidth: 15, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#69c0ff', }, { offset: 1, color: 'yellow', }, ]), }, }, // data: [15, 22, 17, 33, 14], data: this.storageRecordConfig.data.length == 0 ? [] : this.storageRecordConfig.data.length == 1 ? left12[this.count][0] : left12[this.count + 1][0] }, ], } // this.chartCarousel.on('click', function (param) { // that.titleName = param.name // that.echartSingleTipShow = true // setTimeout(() => { // that.initChartLTip() // }); // }) // this.chartCarousel.on('mouseover', (params) => { // that.$refs.indicator.handleHover(true, 1, 2, 3, 4) // }) // this.chartCarousel.on('mouseout', (params) => { // that.$refs.indicator.handleHover(false, 1, 2, 3, 4) // }) this.chartCarousel.setOption(option) // tools.loopShowTooltip(myChart, option, { // nterval: 2000, // loopSeries: true, // }) }, initChartL10 () { let that = this this.left7Chart = echarts.init(document.getElementById("echartL10")); let option = { title: { text: '固定资产进度分布', textStyle: { color: '#69C0FF', fontSize: 30, fontWeight: 500, fontFamily: 'Microsoft YaHei' }, top: '20', left: '20' }, textStyle: { color: '#fff', }, tooltip: { trigger: "axis", formatter: function (params) { var tip = params[0].axisValue + '
' + params[0].marker + params[0].data[1] + ':' + that.numFormat(params[0].data[2]) + '个,' + that.numFormat(params[0].data[3]) + '亿' + '
' + params[1].marker + params[1].data[1] + ':' + that.numFormat(params[1].data[2]) + '个,' + that.numFormat(params[1].data[3]) + '亿'; return tip }, textStyle: { color: '#ffffff', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, axisPointer: { // lineStyle: { // type: 'dashed', // width: 2, // color: 'rgba(255,255,255,0.6)' // }, animation: false } }, grid: { top: '0%', right: '5%', left: '15%', bottom: '-10%', }, yAxis: { data: ['备案', '特别监管'], splitLine: { show: false, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: false }, axisLabel: { show: true, formatter: '{value}', textStyle: { color: '#fff', fontSize: 20, padding: [0, -10, 0, 0], fontFamily: 'Microsoft YaHei', }, }, nameTextStyle: { color: '#ebf8ac', fontSize: 16, fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: ['项目储备', '项目立项', '可研论证', '投资决策'], axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: false, //隐藏X轴刻度 }, axisLabel: { show: true, textStyle: { color: '#fff', //X轴文字颜色 fontSize: 20, padding: [-320, 0, 0, 0], fontFamily: 'Microsoft YaHei' }, } }, series: [ { name: '特别监管', type: 'scatter', symbol: 'circle',//'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow' symbolSize: function (data) { return that.numMulti(Math.sqrt(Math.sqrt(data[2])), 5); }, // label: { // emphasis: { // show: true, // formatter: function (param) { // return param.data[2]; // }, // position: 'top' // } // }, itemStyle: { normal: { color: '#69c0ff' } }, data: left13[0] }, { name: '备案', type: 'scatter', symbol: 'circle',//'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow' symbolSize: function (data) { return that.numMulti(Math.sqrt(Math.sqrt(data[2])), 5); }, // label: { // emphasis: { // show: true, // formatter: function (param) { // return param.data[2]; // }, // position: 'top' // } // }, itemStyle: { normal: { color: '#957DFF' } }, data: left13[1] }, ] } that.left7Chart.on('click', function (param) { that.showChartLTipDouble(param.name, 'left', '项目阶段分析', '固定资产', param.name, param.seriesName, '', '', '', '', '', 216) }) that.left7Chart.setOption(option) tools.loopShowTooltip(that.left7Chart, option, { nterval: 2000, loopSeries: true, }) }, initChartL11 () { let that = this this.left8Chart = echarts.init(document.getElementById("echartL11")); let option = { title: { text: '股权类进度分布', textStyle: { color: '#69C0FF', fontSize: 30, fontWeight: 500, fontFamily: 'Microsoft YaHei' }, top: '20', left: '20' }, textStyle: { color: '#fff', }, tooltip: { trigger: "axis", formatter: function (params) { var tip = params[0].axisValue + '
' + params[0].marker + params[0].data[1] + ':' + that.numFormat(params[0].data[2]) + '个,' + that.numFormat(params[0].data[3]) + '亿' + '
' + params[1].marker + params[1].data[1] + ':' + that.numFormat(params[1].data[2]) + '个,' + that.numFormat(params[1].data[3]) + '亿'; return tip }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, axisPointer: { // lineStyle: { // type: 'dashed', // width: 2, // color: 'rgba(255,255,255,0.6)' // }, animation: true } }, grid: { top: '0%', right: '5%', left: '15%', bottom: '-10%', }, yAxis: { data: ['备案', '特别监管'], splitLine: { show: false, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: false }, axisLabel: { show: true, formatter: '{value}', textStyle: { fontSize: 20, padding: [0, -10, 0, 0], fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#ebf8ac', fontSize: 16, fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: ['项目储备', '项目立项', '可研论证', '投资决策'], axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: true, //隐藏X轴刻度 }, axisLabel: { show: true, textStyle: { color: '#fff', //X轴文字颜色 fontSize: 20, padding: [-320, 0, 0, 0], fontFamily: 'Microsoft YaHei' }, }, }, series: [ { name: '特别监管', type: 'scatter', symbol: 'circle', symbolSize: function (data) { return that.numMulti(Math.sqrt(Math.sqrt(data[2])), 5); }, // label: { // emphasis: { // show: true, // formatter: function (param) { // return param.data[2]; // }, // position: 'top' // } // }, itemStyle: { normal: { color: '#40A9FF' } }, data: left14[0] }, { name: '备案', type: 'scatter', symbol: 'circle', symbolSize: function (data) { return that.numMulti(Math.sqrt(Math.sqrt(data[2])), 5); }, // label: { // emphasis: { // show: true, // formatter: function (param) { // return param.data[2]; // }, // position: 'top' // } // }, itemStyle: { normal: { color: '#957DFF' } }, data: left14[1] }, ] } that.left8Chart.on('click', function (param) { that.showChartLTipDouble(param.name, 'left', '项目阶段分析', '股权类', param.name, param.seriesName, '', '', '', '', '', 216) }) that.left8Chart.setOption(option) tools.loopShowTooltip(that.left8Chart, option, { nterval: 2000, loopSeries: true, }) }, // 大屏二 initChartC1 () { if (this.centerType) { //3D饼图 var chartData = center2 var i = 0; let that = this var option = { colors: ['#064F78', '#BDB35D', '#623726', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 60, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime7 && clearInterval(that.pieTime7); that.pieTime7 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.center1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'distribution', e.point.options.typeno, 'industry', e.point.options.typeno, 1, 112) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); }, legendItemClick: function (event) { return true; } } }, credits: { enabled: false //去掉hightchats水印 }, legend: { layout: 'vertical', align: 'right', y: -10, verticalAlign: 'bottom', itemStyle: { fontSize: '20px', color: '#fff', fontWeight: 0, fontFamily: 'Microsoft YaHei' } }, tooltip: { crosshairs: true, backgroundColor: 'rgba(0,0,0,0.5)', useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage) return `${this.key}:${this.percentage}%
投资完成额:${this.y}亿
投资数量:${num}个` }, //pointFormat: }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 500, // innerSize: 330, //环形图中间空白,0为饼图 innerSize: 0, //环形图中间空白,0为饼图 depth: 75, //立体高度 slicedOffset: 40, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, title: { text: '', style: { color: '#fff', fontSize: 24, fontFamily: 'Microsoft YaHei' }, align: 'center', verticalAlign: "bottom", x: -120 }, series: [{ type: 'pie', name: '占比', center: ['74%', '50%'], point: { events: { click: function (e) { //点击事件 that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'distribution', e.point.options.typeno, 'industry', e.point.options.typeno, 1, 112) }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { item.sliced = false item.selected = false }) chartData[e.target.index].sliced = true chartData[e.target.index].selected = true that.center1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'distribution', e.point.options.typeno, 'industry', e.point.options.typeno, 1, 112) } } }, data: chartData }] }) that.pieTime7 && clearInterval(that.pieTime7); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.center1Chart.series[0].points; var len = points.length; that.pieTime7 && clearInterval(that.pieTime7); that.pieTime7 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.center1Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'distribution', e.point.options.typeno, 'industry', e.point.options.typeno, 1, 112) } } }, data: chartData }] }) i++; if (i === len) { i = 0; } }, 2000); } } }, data: chartData }] } that.center1Chart = Highcharts.chart('echartC1', option); function autoTooltip (point) { that.center1Chart.tooltip.refresh(point); } } else { let that = this that.center1Chart = echarts.init(this.$refs['echartC1']) data = center2 arrName = getArrayValue(data, "name"); arrValue = getArrayValue(data, "value"); sumValue = eval(arrValue.join("+")); objData = array2obj(data, "name"); optionData = getData(data); function getArrayValue (array, key) { var key = key || "value"; var res = []; if (array) { array.forEach(function (t) { res.push(t[key]); }); } return res; } function array2obj (array, key) { var resObj = {}; for (var i = 0; i < array.length; i++) { resObj[array[i][key]] = array[i]; } return resObj; } function getData (data) { var res = { series: [], yAxis: [], }; for (let i = 0; i < data.length; i++) { res.series.push({ name: "", type: "pie", clockWise: false, //顺时加载 hoverAnimation: false, //鼠标移入变大 radius: [55 - i * 15 + "%", 50 - i * 15 + "%"], center: ["25%", "60%"], label: { show: false, }, itemStyle: { label: { show: false, }, labelLine: { show: false, }, borderWidth: 5, }, data: [ { value: data[i].value, name: data[i].name, typeno: data[i].typeno }, { value: sumValue - data[i].value, name: "", itemStyle: { color: "rgba(0,0,0,0)", borderWidth: 0, }, tooltip: { show: false, }, hoverAnimation: false, }, ], }); res.series.push({ name: "", type: "pie", silent: true, z: 1, clockWise: false, //顺时加载 hoverAnimation: false, //鼠标移入变大 radius: [55 - i * 15 + "%", 50 - i * 15 + "%"], center: ["25%", "60%"], label: { show: false, }, itemStyle: { label: { show: false, }, labelLine: { show: false, }, borderWidth: 5, }, data: [ { value: 7.5, itemStyle: { color: "#4d638050", borderWidth: 0, }, tooltip: { show: false, }, hoverAnimation: false, }, { value: 2.5, name: "", itemStyle: { color: "rgba(0,0,0,0)", borderWidth: 0, }, tooltip: { show: false, }, hoverAnimation: false, }, ], }); // res.yAxis.push(((data[i].value / sumValue) * 100).toFixed(2) + "%"); res.yAxis.push(that.numMulti(data[i].value / sumValue, 100).toFixed(2) + "%"); } return res; } let option = { // graphic: { // elements: [{ // type: 'image',//需要填充图片,配置image,如果不需要图片可以配置其他的, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group, // style: { // image: './images/loop.png', //这里添加图片地址 // width: 320, // height: 320 // }, // left: '30',// // top: 'middle' //配置图片居中 // }] // }, legend: { show: false, trigger: 'item', icon: "circle", top: "center", left: "70%", data: arrName, width: 50, padding: [0, 5], itemGap: 25, formatter: function (data) { let a = center2.find(item => item.name == data) // return `${data}
${a.value}亿
${a.num}个` return `${data}
` }, textStyle: { fontSize: 20, color: '#fff', fontFamily: 'Microsoft YaHei' // rich: { // title: { // fontSize: 14, // lineHeight: 15, // color: "rgb(0, 178, 246)", // }, // value: { // fontSize: 18, // lineHeight: 20, // color: "#fff", // }, // }, }, }, // tooltip: { // show: false, // normal: { // show: false, // trigger: "item", // label: { // margin: 10, // label 距离轴的距离 // color: '#FFF', // 文字的颜色 // fontStyle: 'normal', // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体) // fontWeight: 'normal', // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700) // fontSize: '20', // 文字字体大小 // lineHeight: '50', // 行高 // }, // }, // // formatter: "{a}
{b}:{c}({d}%)666", // textStyle: { // color: '#FFF', // 文字的颜色 // fontStyle: 'normal', // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体) // fontWeight: 'normal', // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700) // }, // formatter: data => { // // 小圆点 // return `
${data.name}:${data.percent}` // }, // }, color: ['#43a5f1', '#e9d443', '#5a78e0', '#955773', '#B57C63', '#73A88E', '#09736D', '#13400B', '#0D3265'], grid: { top: "30%", bottom: "47%", left: "26%", containLabel: false, }, yAxis: [ { type: "category", inverse: true, axisLine: { show: false, }, axisTick: { show: false, }, axisLabel: { interval: 0, inside: true, textStyle: { color: "#fff", fontSize: 20, fontFamily: 'Microsoft YaHei' }, show: true, formatter: data => { return `----- ${data}` }, }, data: optionData.yAxis, }, ], xAxis: [ { show: false, }, ], series: optionData.series, } that.center1Chart.on('click', (params) => { that.showChartLTipDouble(params.data.name, 'center', '', '', '', '', 'distribution', params.data.typeno, 'industry', params.data.typeno, 1, 112) }) that.center1Chart.setOption(option) // tools.loopShowTooltip(myChart, option, { // interval: 500, // loopSeries: true, // }); } }, initChartC2 () { let that = this that.center2Chart = echarts.init(this.$refs['echartC2']) that.center2Chart.on('showTip', (params) => { // 如果是7或者15并且满足防抖则切换 if ((params.dataIndex == 5 || params.dataIndex == 11) && that.echartC2Fd) { that.echartC2Fd = false setTimeout(() => { option.dataZoom[0].endValue = option.dataZoom[0].endValue + 6 option.dataZoom[0].startValue = option.dataZoom[0].startValue + 6 that.center2Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartC2Fd = true }, 2000) }, 1900); // 如果是17表示到了最后一个,那么重新来一遍 } else if (params.dataIndex == 17 && that.echartC2Fd) { that.echartC2Fd = false setTimeout(() => { option.dataZoom[0].endValue = 0 option.dataZoom[0].startValue = 5 that.center2Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartC2Fd = true }, 2000) }, 1900) } }) let option = { tooltip: { formatter: data => { return `${data[0].name}
${data[0].seriesName}:${data[0].value}亿
${data[1].seriesName}:${data[1].value}亿` }, trigger: 'axis', axisPointer: { // type: 'cross',', }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, dataZoom: [ { // start: 9,//默认为@ // end: 100,//黑认认为1@0 type: "slider", show: false, // xAxisIndex: [0] handlesize: 0,//滑动条的 左右2个滑动条的大小 startValue: 5,// 初始显示值 endValue: 0,// 结束显示值 height: 10,//组件高度 left: "5%", right: "4%",//右边的距离 bottom: "25%",//底边的距离 borderColor: "#939", fillerColor: "#269cdb", borderRadius: 5, backgroundColor: "#33384b",//两边未选中的滑动条区域的额色 showDataShadow: false,//是否显示数据阴影 showDetail: false,//即拖拽时候是否显示详细数值信息 truerealtime: true,//是否实时更新 filterMode: "filter" }, { type: 'inside', show: true, start: 1, end: 100, zoomOnMouseWheel: false, //滚轮是否触发缩放 moveOnMouseMove: false, //鼠标滚轮触发滚动 } ], grid: { top: '10%', right: '3%', left: '7%', bottom: '15%', }, legend: { top: '1', right: 'center', textStyle: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: commonCompany, // data: center3.map(item => item.name), axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: false, //隐藏X轴刻度 }, axisLabel: { show: true, rotate: 40, textStyle: { color: '#fff',//'rgba(255,255,255,0.6)', //X轴文字颜色 fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, }, yAxis: [ { type: 'value', name: '亿', splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: true, lineStyle: { color: '#3D7495', }, }, axisLabel: { show: true, textStyle: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, ], series: [ { name: '计划投资', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#69c0ff', }, { offset: 1, color: '#082550', }, ]), }, }, data: center3.map(item => item.value), }, { name: '实际投资', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#957DFF', }, { offset: 1, color: '#082550', }, ]), }, }, data: center3.map(item => item.value2), }, ], } that.center2Chart.on('click', function (param) { param.seriesName == '计划投资' ? that.projectNum = 1131 : that.projectNum = 1132 that.centerPenetrateTwo('', '', that.findCode(param.name), param.seriesName == '计划投资' ? 2 : 1) }) that.center2Chart.setOption(option) tools.loopShowTooltip(that.center2Chart, option, { nterval: 2000, loopSeries: true, }) // let arr = center3.map(item => item.value2) // this.timeOut = setInterval(function () { // let startValue = myChart.getModel().option.dataZoom[0].startValue; // let endValue = myChart.getModel().option.dataZoom[0].endValue; // let start = myChart.getModel().option.xAxis[0].data[startValue];//起始X轴 // let end = myChart.getModel().option.xAxis[0].data[endValue];//结束X轴 // // 每次向后滚动一个,最后一个从头开始。 // if (option.dataZoom[0].endValue >= 12) { // option.dataZoom[0].endValue = 5 // option.dataZoom[0].startValue = 0 // } else { // option.dataZoom[0].endValue = option.dataZoom[0].endValue + 6 // option.dataZoom[0].startValue = option.dataZoom[0].startValue + 6 // } // // myChart.dispatchAction({ // // type: 'showTip', // // seriesIndex: 0, // // dataIndex: startValue +1, // // }); // myChart.setOption(option); // }, 12000); }, // convertData (data) { // var res = [] // for (var i = 0; i < data.length; i++) { // var geoCoord = this.geoCoordMap[data[i].name] // if (geoCoord) { // res.push({ // name: data[i].name, // value: geoCoord.concat(data[i].value), // }) // } // } // return res // }, yuanChange (value) { return Number((value / 100000000).toFixed(2)) }, // 逢三折断 numFormat (value) { if (!value) return '0' // var intPart = Number(value).toFixed(0) // 获取整数部分 var intPart = parseInt(value)// 获取整数部分 var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 将整数部分逢三一断 var floatPart = '.00' // 预定义小数部分 var value2Array = value.toString().split('.') // =2表示数据有小数位 if (value2Array.length === 2) { floatPart = value2Array[1].toString() // 拿到小数部分 if (floatPart.length === 1) { // 补0 return intPartFormat + '.' + floatPart + '0' } else { floatPart = floatPart.slice(0, 2) return intPartFormat + '.' + floatPart } } else { return intPartFormat } }, initProvinceChart () { var data = center5 this.geoCoordMap = [] /*获取地图数据*/ this.mapChart = echarts.init(this.$refs['echarts-map']) echarts.registerMap('shanxi', shanxi) var mapFeatures = echarts.getMap('shanxi').geoJson.features mapFeatures.forEach(v => { // 地区名称 var name = v.properties.name // 地区经纬度 this.geoCoordMap[name] = v.properties.centroid // 按照地图乱序 // data.push({ name: v.properties.name, value: v.properties.centroid[0], value2: v.properties.centroid[1] }) }) let option = { tooltip: { padding: 15, enterable: true, transitionDuration: 1, formatter: (params, ticket, callback) => { // 清空所有轮播 for (var k in this.geoCoordMap) { this.mapChart.dispatchAction({ // type: 'geoUnSelect', type: 'downplay', name: k, }) } // 如果鼠标滑动到线线上面,则返回空 this.mapChart.dispatchAction({ // type: 'geoSelect', type: 'highlight', name: params.name, }) if (params.componentSubType == 'lines') { return } if (params.componentSubType == 'scatter') { let tipHtml = `

项目数量:${data[params.dataIndex].value2}个

总投资额:${params.data.value[2]}亿

` callback(ticket, tipHtml) return tipHtml } if (params.componentSubType == 'map') { let tipHtml = `

项目数量:${data[params.dataIndex].value2}个

总投资额:${params.data.value}亿

` callback(ticket, tipHtml) return tipHtml } }, }, visualMap: { show: false, min: 0, max: 300, right: 0, bottom: 0, text: ['高', '低'], textStyle: { color: '#f1f1f1' }, realtime: false, calculable: false, inRange: { color: ['lightskyblue', '#2754b7'] } }, geo: { show: true, map: 'shanxi', layoutCenter: ['50%', '50%'], //地图位置 layoutSize: '140%', label: { normal: { position: [100, 100], fontSize: 25, fontFamily: 'Microsoft YaHei', fontWeight: 600, color: '#fff', show: true, }, emphasis: { show: true, color: '#e7e1a0', fontSize: 30, }, }, roam: false, itemStyle: { normal: { areaColor: '#1946a8', shadowColor: '#1946a8', borderWidth: 2, //设置外层边框 borderColor: '#1946a8', shadowOffsetX: 0, shadowOffsetY: 0, shadowBlur: 0, }, emphasis: { areaColor: '#013d95', borderColor: '#e7e1a0', borderWidth: 4, //设置外层边框 }, }, }, series: [ { type: 'map', map: 'shanxi', geoIndex: 0, aspectScale: 1.5, //长宽比 data: data, }, ], } let that = this this.mapChart.on('click', function (params) { // if (params.name == '太原市') { that.showChartLTipDouble(params.name, 'center', '', '', '', '', 'investmentMap', params.name, '山西省', '', '', 118) // } }) tools.loopShowTooltip(this.mapChart, option, { interval: 2000, loopSeries: false, }); this.mapChart.setOption(option) }, initChinaChart () { var data = centerChina this.geoCoordMap = [] let that = this /*获取地图数据*/ this.mapChart = echarts.init(this.$refs['chinaMap']) echarts.registerMap('china', china) var mapFeatures = echarts.getMap('china').geoJson.features mapFeatures.forEach(v => { // 地区名称 var name = v.properties.name // 地区经纬度 this.geoCoordMap[name] = v.properties.cp data.push({ name: v.properties.name, value: v.properties.cp[0], value2: v.properties.cp[1] }) }) let option = { tooltip: { padding: 15, enterable: true, transitionDuration: 1, formatter: (params, ticket, callback) => { // 清空所有轮播 this.mapChart.dispatchAction({ // type: 'geoUnSelect', type: 'downplay', name: '南海诸岛', }) for (var k in this.geoCoordMap) { this.mapChart.dispatchAction({ // type: 'geoUnSelect', type: 'downplay', name: k, }) } // 如果鼠标滑动到线线上面,则返回空 this.mapChart.dispatchAction({ // type: 'geoSelect', type: 'highlight', name: params.name, }) if (params.componentSubType == 'lines') { return } if (params.componentSubType == 'scatter') { let tipHtml = `

项目数量:${that.numFormat(data[params.dataIndex].value2)}个

总投资额:${that.numFormat(params.data.value[2])}亿

` callback(ticket, tipHtml) return tipHtml } if (params.componentSubType == 'map') { let tipHtml = `

项目数量:${that.numFormat(data[params.dataIndex].value2)}个

总投资额:${that.numFormat(params.data.value)}亿

` callback(ticket, tipHtml) return tipHtml } }, }, visualMap: { show: false, min: 0, max: 1000, left: '100', bottom: 100, text: ['高', '低'], textStyle: { color: '#f1f1f1' }, realtime: true, //拖拽时,是否实时更新 calculable: false, inRange: { color: ['lightskyblue', '#2754b7'] }, itemWidth: 50, //图形的宽度,即长条的宽度。 itemHeight: 400, //图形的高度,即长条的高度。 textStyle: { fontSize: 30, color: '#fff' } }, geo: { show: true, map: 'china', layoutCenter: ['50%', '50%'], //地图位置 layoutSize: '110%', label: { normal: { position: [100, 100], fontSize: 25, fontFamily: 'Microsoft YaHei', fontWeight: 600, color: '#fff', show: true, }, emphasis: { show: true, color: '#e7e1a0', fontSize: 30, }, }, // 滑轮缩放 roam: false, itemStyle: { normal: { areaColor: '#1946a8', shadowColor: '#1946a8', borderWidth: 2, //设置外层边框 borderColor: '#0b245b', shadowOffsetX: 0, shadowOffsetY: 0, shadowBlur: 0, }, emphasis: { areaColor: '#013d95', borderColor: '#e7e1a0', borderWidth: 4, //设置外层边框 }, }, }, series: [ { type: 'map', map: 'china', geoIndex: 0, data: data, }, ], } this.mapChart.on('click', function (params) { if (params.name == '山西') { // that.showChartLTipDouble(params.name, 'center', '', '', '', '', '', 'investmentMap', '山西省') that.mapChart.dispose() that.centerShow = true setTimeout(() => { that.initChartC1() that.initChartC2() that.initChartC3() that.initChartC4() if (that.versions) { that.centerPenetrateOne('investmentMap', params.name, 3, '', '') } else { that.initProvinceChart() } that.initProjectList() }) } }) tools.loopShowTooltip(this.mapChart, option, { interval: 2000, loopSeries: false, }); this.mapChart.setOption(option) }, initChartC3 () { this.center3Chart = echarts.init(this.$refs['echartC3']) let option = { tooltip: { trigger: 'axis', formatter: data => { return `${data[0].name}
${data[0].seriesName}:${that.numFormat(data[0].value)}亿` }, axisPointer: { // type: 'cross',', }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, grid: { top: '8%', right: '3%', left: '7%', bottom: '10%', }, // legend: { // top: '1', // textStyle: { // color: 'rgba(250,250,250,0.6)', // }, // }, xAxis: { data: center6.map(item => item.name), axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: false, //隐藏X轴刻度 }, axisLabel: { show: true, rotate: 20, textStyle: { color: '#fff',//'rgba(255,255,255,0.6)', //X轴文字颜色 fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, }, yAxis: [ { type: 'value', name: '亿', splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: true, lineStyle: { color: '#3D7495', }, }, axisLabel: { show: true, textStyle: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, { type: 'value', axisLine: { show: false, }, splitLine: { show: false, }, axisLabel: { show: true, formatter: '{value} %', textStyle: { color: 'rgba(250,250,250,0.6)', fontFamily: 'Microsoft YaHei' }, }, }, ], series: [ { type: 'bar', name: '投资金额', barWidth: 15, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#69c0ff', }, { offset: 1, color: '#082550', }, ]), }, }, data: center6.map(item => item.value), }, ], } let that = this that.center3Chart.on('click', function (param) { if (param.name == '煤炭和煤电') { that.showChartLTipSingle(param.name, 'center', 'keyIndicators', 'ceiamount', '', '', '', '', 'five', '1', 2, 115) } else if (param.name == '煤电和新能源') { that.showChartLTipSingle(param.name, 'center', 'keyIndicators', 'cpneiamount', '', '', '', '', 'five', '2', 2, 115) } else if (param.name == '煤炭和化工') { that.showChartLTipSingle(param.name, 'center', 'keyIndicators', 'ccheiamount', '', '', '', '', 'five', '3', 2, 115) } else if (param.name == '煤炭和数字') { that.showChartLTipSingle(param.name, 'center', 'keyIndicators', 'cdiamount', '', '', '', '', 'five', '4', 2, 115) } else if (param.name == '煤炭和降炭') { that.showChartLTipSingle(param.name, 'center', 'keyIndicators', 'cciamount', '', '', '', '', 'five', '5', 2, 115) } }) that.center3Chart.setOption(option) tools.loopShowTooltip(that.center3Chart, option, { nterval: 2000, loopSeries: true, }) }, initChartC4 () { let that = this if (this.centerType) { // 3D饼图 var chartData = [] var timer2 = null; var i = 0; center7.forEach((item, index) => { let obj = { name: item.name, y: item.value2, num: item.value, typeno: item.typeno, sliced: false, selected: false, color: index == 0 ? '#064F78' : '#BDB35D' } chartData.push(obj) }) that.center4Chart = Highcharts.chart('echartC4', { chart: { type: 'pie', backgroundColor: 'rgba(0,0,0,0)', options3d: { enabled: true, alpha: 60, //beta: 0 }, events: { // load,图表加载完成时触发 load: function () { var chart = this; var points = chart.series[0].points; var len = points.length; that.pieTime8 && clearInterval(that.pieTime8); that.pieTime8 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.center4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'keyIndicators', e.point.options.typeno, 'state', e.point.name == '新建' ? 'new' : 'renew', 1, 116) } } }, data: chartData }] }) i++; if (i === len) { i = 0; chartData.forEach((item, index) => { item.sliced = false item.selected = false }) that.center4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'keyIndicators', e.point.options.typeno, 'state', e.point.name == '新建' ? 'new' : 'renew', 1, 116) } } }, data: chartData }] }) } }, 2000); }, legendItemClick: function (event) { return true; } } }, credits: { enabled: false //去掉hightchats水印 }, title: { text: null }, tooltip: { crosshairs: true, backgroundColor: 'rgba(0,0,0,0.5)', // positioner: function(e){ // }, useHTML: false, //开启html模式 style: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, formatter: function (e) { let num = chartData[this.colorIndex].num this.percentage = Math.round(this.percentage) return `${this.key}:${this.percentage}%
投资完成额:${this.y}亿
投资数量:${num}个` }, //pointFormat: }, legend: { layout: 'vertical', align: 'right', y: -10, verticalAlign: 'bottom', itemStyle: { fontSize: '20px', color: '#fff', fontWeight: 0, fontFamily: 'Microsoft YaHei' } }, plotOptions: { pie: { allowPointSelect: true, showInLegend: true, // 图例 cursor: 'pointer', size: 500, // innerSize: 330, //环形图中间空白,0为饼图 innerSize: 0, //环形图中间空白,0为饼图 depth: 75, //立体高度 slicedOffset: 40, //动画距离 dataLabels: { enabled: false, // 是否展示指示线 format: '{point.name}: {point.percentage}' } }, }, series: [{ type: 'pie', name: '占比', center: ['60%', '50%'], y: -10, point: { events: { click: function (e) { //点击事件 that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'keyIndicators', e.point.options.typeno, 'state', e.point.name == '新建' ? 'new' : 'renew', 1, 116) }, mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中 chartData.forEach((item, index) => { item.sliced = false item.selected = false }) chartData[e.target.index].sliced = true chartData[e.target.index].selected = true that.center4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'keyIndicators', e.point.options.typeno, 'state', e.point.name == '新建' ? 'new' : 'renew', 1, 116) } } }, data: chartData }] }) that.pieTime8 && clearInterval(that.pieTime8); }, mouseOut: function () { // 鼠标移出后需要继续执行轮播 var points = that.center4Chart.series[0].points; var len = points.length; that.pieTime8 && clearInterval(that.pieTime8); that.pieTime8 = setInterval(function () { autoTooltip(points[i]); chartData.forEach((item, index) => { item.sliced = false item.selected = false if (index == i) { item.sliced = true item.selected = true } }) that.center4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'keyIndicators', e.point.options.typeno, 'state', e.point.name == '新建' ? 'new' : 'renew', 1, 116) } } }, data: chartData }] }) i++; if (i === len) { i = 0; chartData.forEach((item, index) => { item.sliced = false item.selected = false }) that.center4Chart.update({ series: [{ type: 'pie', name: '占比', point: { events: { click: function (e) { that.showChartLTipDouble(e.point.name, 'center', '', '', '', '', 'keyIndicators', e.point.options.typeno, 'state', e.point.name == '新建' ? 'new' : 'renew', 1, 116) } } }, data: chartData }] }) } }, 2000); } } }, data: chartData }] }); function autoTooltip (point) { that.center4Chart.tooltip.refresh(point); } } else { that.center4Chart = echarts.init(this.$refs['echartC4']) const base64_1 = 'data:image/png;base64,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' const base64_2 = 'data:image/png;base64,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' const base64_3 = 'data:image/png;base64,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' const base64_4 = 'data:image/png;base64,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' const chartData = [62, 0, 86, 825, 2672]; const xAxisData = ['新建-投资完成额', '续建-投资完成额', '新建-项目数量', '续建-项目数量']; option = { tooltip: { trigger: 'item', }, tooltip: { show: false, formatter: function (params) { return `${params.name}:${chartData[params.dataIndex]}`; } }, xAxis: { show: false, data: xAxisData, axisTick: { show: false }, axisLabel: { color: '#5EA2ED', interval: 0 }, axisLine: { lineStyle: { color: '#1B5BBA' } } }, yAxis: { show: false, splitLine: { show: false }, axisLine: { lineStyle: { color: '#1B5BBA' } }, axisLabel: { color: '#5EA2ED', interval: 0 } }, series: [ { type: 'pictorialBar', data: [ { name: '新建-投资完成额', z: 100, value: 120, value2: center7[0].typeno, symbolSize: [115, 100], symbolPosition: 'center', symbolOffset: [90, -130], symbol: 'image://' + base64_1 }, { name: '续建-投资完成额', z: 90, value: 57, symbolSize: [200, 112], symbolPosition: 'center', symbolOffset: [-53, -173], symbol: 'image://' + base64_2 }, { name: '新建-项目数量', z: 80, value: 42, symbolSize: [295, 145], symbolPosition: 'center', symbolOffset: [-196, -135], symbol: 'image://' + base64_3 }, { name: '续建-项目数量', z: 70, value: 27, symbolSize: [480, 500], symbolPosition: 'center', symbolOffset: [-340, -170], symbol: 'image://' + base64_4 } ] } ] }; that.center4Chart.on('click', (params) => { that.showChartLTipDouble(params.name, 'center', '', '', '', '', 'keyIndicators', params.value2, 'state', params.value2 == '新建' ? 'new' : 'renew', 1, 116) }) that.center4Chart.setOption(option) tools.loopShowTooltip(that.center4Chart, option, { nterval: 2000, loopSeries: true, }); } }, initProjectList () { let dataList = [] center8.map(item => { if (this.versions) { dataList.push([item.office, item.name, this.yuanChange(item.value) + '亿', item.typeno]) } else { dataList.push([item.office, item.name, item.value + '亿']) } }) this.storageRecordConfig2.data = dataList this.storageRecordConfig2 = { ...this.storageRecordConfig2 } }, // 大屏三 initChartR1 () { let that = this that.right1Chart = echarts.init(this.$refs['echartR1']) that.right1Chart.on('showTip', (params) => { // 如果是7或者15并且满足防抖则切换 if ((params.dataIndex == 5 || params.dataIndex == 11) && that.echartR1Fd) { that.echartR1Fd = false setTimeout(() => { option.dataZoom[0].endValue = option.dataZoom[0].endValue + 6 option.dataZoom[0].startValue = option.dataZoom[0].startValue + 6 that.right1Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartR1Fd = true }, 2000) }, 1900); // 如果是17表示到了最后一个,那么重新来一遍 } else if (params.dataIndex == 17 && that.echartR1Fd) { that.echartR1Fd = false setTimeout(() => { option.dataZoom[0].endValue = 0 option.dataZoom[0].startValue = 5 that.right1Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartR1Fd = true }, 2000) }, 1900) } }) let option = { tooltip: { formatter: (data, ticket, callback) => { return `${data[0].name}
${data[0].seriesName}:${that.numFormat(data[0].value)}亿
${data[1].seriesName}:${that.numFormat(data[1].value)}亿
${data[2].seriesName}:${that.numFormat(data[2].value)}亿
${data[3].seriesName}:${that.numFormat(data[3].value)}亿
${data[4].seriesName}:${that.numFormat(data[4].value)}亿` }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, trigger: 'axis', axisPointer: { // type: 'cross',', }, }, dataZoom: [ { // start: 9,//默认为@ // end: 100,//黑认认为1@0 type: "slider", show: false, // xAxisIndex: [0] handlesize: 0,//滑动条的 左右2个滑动条的大小 startValue: 5,// 初始显示值 endValue: 0,// 结束显示值 height: 10,//组件高度 left: "5%", right: "4%",//右边的距离 bottom: "25%",//底边的距离 borderColor: "#939", fillerColor: "#269cdb", borderRadius: 5, backgroundColor: "#33384b",//两边未选中的滑动条区域的额色 showDataShadow: false,//是否显示数据阴影 showDetail: false,//即拖拽时候是否显示详细数值信息 truerealtime: true,//是否实时更新 filterMode: "filter" }, { type: 'inside', show: true, start: 1, end: 100, zoomOnMouseWheel: false, //滚轮是否触发缩放 moveOnMouseMove: false, //鼠标滚轮触发滚动 } ], grid: { top: '10%', right: '3%', left: '5%', bottom: '5%', }, legend: { selectedMode: false, data: ["预算额", "已签合同额", '产值认定额', '结算额', '付款额'], x: 'center', y: '0px', textStyle: { color: '#fff', fontSize: "20", fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: commonCompany, axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: false, //隐藏X轴刻度 }, axisLabel: { show: true, // rotate: 40, textStyle: { color: '#fff',//'rgba(255,255,255,0.6)', //X轴文字颜色 fontSize: "20", fontFamily: 'Microsoft YaHei' }, }, }, yAxis: [ { type: 'value', name: '亿', nameTextStyle: { color: 'rgba(255,255,255,0.6)', }, splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: true, lineStyle: { color: '#3D7495', }, }, axisLabel: { show: true, textStyle: { color: '#fff', fontSize: "20", fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, ], series: [ { name: '预算额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#064F78', }, { offset: 1, color: '#082550', }, ]), }, }, data: right4.map(item => item.value), }, { name: '已签合同额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#BDB35D', }, { offset: 1, color: '#082550', }, ]), }, }, data: right4.map(item => item.value2), }, { name: '产值认定额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#623726', }, { offset: 1, color: '#082550', }, ]), }, }, data: right4.map(item => item.value3), }, { name: '结算额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#13400B', }, { offset: 1, color: '#082550', }, ]), }, }, data: right4.map(item => item.value4), }, { name: '付款额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#B57C63', }, { offset: 1, color: '#082550', }, ]), }, }, data: right4.map(item => item.value5), }, ], } that.right1Chart.on('click', function (param) { if (that.versions) { that.rightAdd.modelName = 2 that.rightAdd.substraction = '' that.rightAdd.projectStepCode = '' that.projectNum = 314 that.rightPenetrateTwo(2, '', that.findCode(param.name), 'right') } else { that.projectListTipShow = true } }) that.right1Chart.setOption(option) tools.loopShowTooltip(that.right1Chart, option, { interval: 2000, loopSeries: true, }) }, initChartR2 () { let that = this let sumA = 42 // 所有在100范围外的全部变成0,其他值相应增加/减少sumA right5.forEach(item => { item.forEach(item2 => { if (Number(item2[1]) < 0) { item2[1] = that.$set(item2, 1, Number(that.numSub(item2[1], sumA))) } else if (Number(item2[1]) > 0) { item2[1] = that.$set(item2, 1, Number(item2[1]) + sumA) } if (Number(item2[1]) < (-100 - sumA)) { item2[1] = that.$set(item2, 1, 0) item2[1] = that.$set(item2, 2, 0) } else if (Number(item2[1]) > (100 + sumA)) { item2[1] = that.$set(item2, 1, 0) item2[1] = that.$set(item2, 2, 0) } }) }) const itemStyle = { // opacity: 0.8, shadowBlur: 10, shadowOffsetX: 0, shadowOffsetY: 0, shadowColor: 'rgba(0,0,0,0.3)' }; that.right2Chart = echarts.init(this.$refs['echartR2']) that.right2Chart.on('showTip', (params) => { // 如果是7或者15并且满足防抖则切换 if ((params.dataIndex == 5 || params.dataIndex == 11) && that.echartR2Fd) { that.echartR2Fd = false setTimeout(() => { option.dataZoom[0].endValue = option.dataZoom[0].endValue + 6 option.dataZoom[0].startValue = option.dataZoom[0].startValue + 6 that.right2Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartR2Fd = true }, 2000) }, 1900); // 如果是17表示到了最后一个,那么重新来一遍 } else if (params.dataIndex == 17 && that.echartR2Fd) { that.echartR2Fd = false setTimeout(() => { option.dataZoom[0].endValue = 0 option.dataZoom[0].startValue = 5 that.right2Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartR2Fd = true }, 2000) }, 1900) } }) let option = { color: ['#04635E', '#697143', '#4A3042'], dataZoom: [ { // start: 9,//默认为@ // end: 100,//黑认认为1@0 type: "slider", show: false, // xAxisIndex: [0] handlesize: 0,//滑动条的 左右2个滑动条的大小 startValue: 5,// 初始显示值 endValue: 0,// 结束显示值 height: 10,//组件高度 left: "5%", right: "4%",//右边的距离 bottom: "25%",//底边的距离 borderColor: "#939", fillerColor: "#269cdb", borderRadius: 5, backgroundColor: "#33384b",//两边未选中的滑动条区域的额色 showDataShadow: false,//是否显示数据阴影 showDetail: false,//即拖拽时候是否显示详细数值信息 truerealtime: true,//是否实时更新 filterMode: "filter" }, { type: 'inside', show: true, start: 1, end: 100, zoomOnMouseWheel: false, //滚轮是否触发缩放 moveOnMouseMove: false, //鼠标滚轮触发滚动 } ], legend: { selectedMode: false, top: 10, data: ['正偏差', '容差', '负偏差'], textStyle: { fontSize: 20, color: '#fff', fontFamily: 'Microsoft YaHei' } }, textStyle: { color: '#fff', }, tooltip: { show: true, trigger: "axis", textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, formatter: data => { return `${data[0].value[0]}
${data[0].seriesName}:${that.numFormat(data[0].data[2])}亿
${data[1].seriesName}:${that.numFormat(data[1].data[2])}亿
${data[2].seriesName}:${that.numFormat(data[2].data[2])}亿` }, axisPointer: { // // type: 'cross',', }, }, grid: { top: '10%', right: '7%', left: '7%', bottom: '5%', }, yAxis: { min: (-101 - sumA), max: (101 + sumA), maxInterval: 1, splitLine: { show: false, // interval:, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: false }, axisTick: { show: false }, axisLabel: { show: true, // formatter: '{value}', formatter (data) { if (data == (100 + sumA)) { return '100%' } else if (data == (-100 - sumA)) { return '-100%' } else if (data == (-5 - sumA)) { return '-5%' } else if (data == (5 + sumA)) { return '5%' } }, textStyle: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: commonCompany, axisLine: { show: false, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisTick: { show: true, //隐藏X轴刻度 }, axisLabel: { show: true, // rotate: 40, padding: [0, 0, 0, 0], textStyle: { color: '#fff', //X轴文字颜色 fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, }, series: [ { name: '正偏差', type: 'scatter', itemStyle: itemStyle, data: right5[0], symbolSize: function (data) { if ((data[2] > 0 && data[2] < 50) || data[2] == 50) { return 40; } else if ((data[2] > 50 && data[2] < 100) || data[2] == 100) { return 70; } else if (data[2] > 100) { return 100; } }, markLine: { symbol: 'none', data: [ { name: '100%', yAxis: 100 + sumA, lineStyle: { // color: '#fff', }, label: { show: false, formatter: '{b}', position: 'right', color: '#fff', fontSize: 20, label: { show: false } }, }, { name: '5%', yAxis: 5 + sumA, lineStyle: { // color: '#fff', }, label: { show: false, formatter: '{b}', position: 'right', color: '#fff', fontSize: 20, }, }, { name: '-5%', yAxis: -5 - sumA, lineStyle: { // color: '#fff', }, label: { show: false, formatter: '{b}', position: 'right', color: '#fff', fontSize: 20, }, }, { name: '100%', yAxis: -100 - sumA, lineStyle: { // color: '#fff', }, label: { show: false, formatter: '{b}', position: 'right', color: '#fff', fontSize: 20, }, }, ], }, }, { name: '容差', type: 'scatter', itemStyle: itemStyle, data: right5[1], symbolSize: function (data) { if ((data[2] > 0 && data[2] < 50) || data[2] == 50) { return 40; } else if ((data[2] > 50 && data[2] < 100) || data[2] == 100) { return 70; } else if (data[2] > 100) { return 100; } }, }, { name: '负偏差', type: 'scatter', itemStyle: itemStyle, data: right5[2], symbolSize: function (data) { if ((data[2] > 0 && data[2] < 50) || data[2] == 50) { return 40; } else if ((data[2] > 50 && data[2] < 100) || data[2] == 100) { return 70; } else if (data[2] > 100) { return 100; } }, } ] } that.right2Chart.on('click', function (param) { if (that.versions) { that.rightAdd.modelName = 1 that.rightAdd.substraction = param.seriesName == '正偏差' ? 1 : param.seriesName == '容差' ? 2 : 3 that.rightAdd.projectStepCode = '' that.projectNum = 313 that.rightPenetrateTwo(1, param.seriesName == '正偏差' ? 1 : param.seriesName == '容差' ? 2 : 3, that.findCode(param.name), 'right') } else { that.projectListTipShow = true } }) that.right2Chart.setOption(option) tools.loopShowTooltip(that.right2Chart, option, { interval: 2000, loopSeries: true, }) }, initChartR3 () { let that = this that.right3Chart = echarts.init(this.$refs['echartR3']) that.right3Chart.on('showTip', (params) => { this.echartR4Chart ? this.echartR4Chart.dispose() : '' this.echartR5Chart ? this.echartR5Chart.dispose() : '' that.initChartR4(params.dataIndex) that.initChartR5(params.dataIndex) // 如果是7或者15并且满足防抖则切换 if ((params.dataIndex == 5 || params.dataIndex == 11) && that.echartR3Fd) { that.echartR3Fd = false setTimeout(() => { option.dataZoom[0].endValue = option.dataZoom[0].endValue + 6 option.dataZoom[0].startValue = option.dataZoom[0].startValue + 6 that.right3Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartR3Fd = true }, 2000) }, 7900); // 如果是17表示到了最后一个,那么重新来一遍 } else if (params.dataIndex == 17 && that.echartR3Fd) { that.echartR3Fd = false setTimeout(() => { option.dataZoom[0].endValue = 0 option.dataZoom[0].startValue = 5 that.right3Chart.setOption(option); // 防止勿刷新做的防抖 setTimeout(() => { that.echartR3Fd = true }, 2000) }, 7900) } }) let option = { tooltip: { formatter: data => { return `${data[0].name}
${data[0].seriesName}:${that.numFormat(data[0].value)}个
${data[1].seriesName}:${that.numFormat(data[1].value)}个
${data[2].seriesName}:${that.numFormat(data[2].value)}个` }, trigger: 'axis', axisPointer: { // type: 'cross',', }, position: (params) => { return [params[0] + 10, 60] }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, confine: true }, dataZoom: [ { // start: 9,//默认为@ // end: 100,//黑认认为1@0 type: "slider", show: false, // xAxisIndex: [0] handlesize: 0,//滑动条的 左右2个滑动条的大小 startValue: 5,// 初始显示值 endValue: 0,// 结束显示值 height: 10,//组件高度 left: "5%", right: "4%",//右边的距离 bottom: "25%",//底边的距离 borderColor: "#939", fillerColor: "#269cdb", borderRadius: 5, backgroundColor: "#33384b",//两边未选中的滑动条区域的额色 showDataShadow: false,//是否显示数据阴影 showDetail: false,//即拖拽时候是否显示详细数值信息 truerealtime: true,//是否实时更新 filterMode: "filter" }, { type: 'inside', show: true, start: 1, end: 100, zoomOnMouseWheel: false, //滚轮是否触发缩放 moveOnMouseMove: false, //鼠标滚轮触发滚动 } ], grid: { top: '25%', right: '3%', left: '10%', bottom: '20%', }, legend: { selectedMode: false, data: ["低风险", "中风险", '高风险'], x: 'center', y: '15px', textStyle: { // color: 'rgba(250,250,250,0.6)', color: '#fff', fontSize: "20", fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: commonCompany, // data: right4.map(item => item.name), axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: false, //隐藏X轴刻度 }, axisLabel: { show: true, rotate: 40, textStyle: { color: '#fff',//'rgba(255,255,255,0.6)', //X轴文字颜色 fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, }, yAxis: [ { type: 'value', name: '个', nameTextStyle: { color: 'rgba(255,255,255,0.6)', }, splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: true, lineStyle: { color: '#3D7495', }, }, axisLabel: { show: true, textStyle: { color: '#fff', fontSize: '20', fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, ], series: [ { name: '高风险', type: 'bar', stack: 'Ad', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#4A3042', }, { offset: 1, color: '#4A3042', }, ]), }, }, data: right6.map(item => item.value), }, { name: '中风险', type: 'bar', stack: 'Ad', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#697143', }, { offset: 1, color: '#697143', }, ]), }, }, data: right6.map(item => item.value2), }, { name: '低风险', type: 'bar', stack: 'Ad', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#04635E', }, { offset: 1, color: '#04635E', }, ]), }, }, data: right6.map(item => item.value3), }, ], } that.right3Chart.on('click', function (param) { if (that.versions) { that.rightAdd.modelName = 3 that.rightAdd.substraction = '' that.rightAdd.projectStepCode = '' that.projectNum = 315 that.rightPenetrateTwo(that.rightPenetrateTwo.modelName, '', that.findCode(param.name), 'right') } else { that.projectListTipShow = true } }) that.right3Chart.setOption(option) tools.loopShowTooltip(that.right3Chart, option, { interval: 8000, loopSeries: true, }) }, initChartR4 (indexValue) { this.echartR4Chart = echarts.init(this.$refs['echartR4']) let a = [] right7.forEach(item => { item.forEach(item2 => { a.push(item2) }) }) let b = a.reduce((x, y) => { return x > y ? x : y; }); option = { title: { text: '' }, radar: { center: ['50%', '50%'], radius: 135, indicator: [ { name: '安全风险', max: b }, { name: '付款风险', max: b }, { name: '合同风险', max: b }, { name: '结算风险', max: b }, { name: '进度风险', max: b }, { name: '质量风险', max: b }, ], axisLine: { // 设置雷达图中间射线的颜色 lineStyle: { color: '#887d33', }, }, splitLine: { //网格颜色设置 show: true, lineStyle: { width: 1, color: ['#871b1a', '#638f41', '#d29e35', '#b6802b'] }, }, name: { //修改indicator文字的颜色 textStyle: { color: "#fff", fontSize: '20', fontFamily: 'Microsoft YaHei' } }, splitNumber: 4, //有几个圈 splitArea: { //设置图表颜色,show的值为true show: true, areaStyle: { // color:"#c1ddf8", //一般设置方式 //设置渐变背景色 new echarts.graphic.LinearGradient(a,b,c,d,arr) //a ,b,c,d值可为0,1 a:1表示arr中的颜色右到左;c:1 arr中的颜色左到右 //b:1表示arr中的颜色下到上;d:1表示arr中的颜色上到下 // color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ // { offset: 0, color: '#887D33' }, // 0% 处的颜色 // { offset: 0.75, color: '#7D4216' }, // 0% 处的颜色 // { offset: 1, color: '#430705' }// 100% 处的颜色 // ], false) color: ['#638f41', '#887d33', '#7d4216', '#430705'], } } }, series: [ { name: '', type: 'radar', symbol: 'circle', // 单个数值点的样式,还可以取值'rect','angle'等 symbolSize: 0, // 数值点的大小 data: [ { value: right7[indexValue], name: '安全风险', itemStyle: { //该数值区域样式设置 normal: { color: 'rgb(44,198,255,0.8)', //背景颜色,还需设置areaStyle lineStyle: { color: 'rgb(44,198,255,0.8)', //边框颜色 }, }, }, label: { //显示value中具体的数值 normal: { show: false, textStyle: { //更改数值样式 color: '#43EDE3' } }, }, areaStyle: { //设置区域背景颜色透明度 normal: { width: 1, opacity: 0.8, }, }, } ] } ] }; // tools.loopShowTooltip(myChart, option, { // interval: 2000, // loopSeries: true, // }); this.echartR4Chart.setOption(option) }, initChartR5 () { this.echartR5Chart = echarts.init(this.$refs['echartR5']) let option = { tooltip: { formatter: data => { return `${data[0].name}
${data[0].seriesName}:${data[0].value}亿
${data[1].seriesName}:${data[1].value}亿
${data[2].seriesName}:${data[2].value}亿
${data[3].seriesName}:${data[3].value}亿` }, trigger: 'axis', axisPointer: { // type: 'cross',', }, textStyle: { color: '#FFF', // 文字的颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, grid: { top: '15%', right: '3%', left: '5%', bottom: '35', }, legend: { data: ["预算额", "合同额", "结算额", "支付额"], x: 'center', y: '10px', textStyle: { // color: 'rgba(250,250,250,0.6)', color: '#fff', fontSize: "20", fontFamily: 'Microsoft YaHei' }, }, xAxis: { data: ['设备费', '设计费', '施工费', '材料费'], axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: '#005094', width: 1, }, }, axisTick: { show: false, //隐藏X轴刻度 }, axisLabel: { show: true, // rotate: 40, textStyle: { color: '#fff',//'rgba(255,255,255,0.6)', //X轴文字颜色 fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, }, yAxis: [ { type: 'value', name: '亿', nameTextStyle: { color: 'rgba(255,255,255,0.6)', }, splitLine: { show: true, lineStyle: { color: '#68b4dd66', type: 'dashed', }, }, axisLine: { show: true, lineStyle: { color: '#3D7495', }, }, axisLabel: { show: true, textStyle: { color: '#fff', fontSize: '20', // 文字字体大小 fontFamily: 'Microsoft YaHei' }, }, nameTextStyle: { color: '#fff', fontSize: 20, fontFamily: 'Microsoft YaHei' }, }, ], series: [ { name: '预算额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#064F78', }, { offset: 1, color: '#082550', }, ]), }, }, data: right8.map(item => item.value), }, { name: '合同额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#BDB35D', }, { offset: 1, color: '#082550', }, ]), }, }, data: right8.map(item => item.value2), }, { name: '结算额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#623726', }, { offset: 1, color: '#082550', }, ]), }, }, data: right8.map(item => item.value3), }, { name: '支付额', type: 'bar', barWidth: 10, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: '#955773', }, { offset: 1, color: '#082550', }, ]), }, }, data: right8.map(item => item.value4), }, ], } this.echartR5Chart.setOption(option) tools.loopShowTooltip(this.echartR5Chart, option, { interval: 2000, loopSeries: true, }) }, }, })