let app = new Vue({
el: "#app",
data () {
return {
lengthArr1: [], // 单个柱状图大标题集合
lengthArr12: [], // 主屏最上边
lengthArr13: [], //主屏两个转型
lengthArr2: [],//投前-投资计划分析大集合
lengthArr3: [],//投前-项目阶段分析大集合
lengthArr4: [], // 主屏-地图分析大集合
lengthArr5: [], //主屏-投资产业分布
lengthArr6: [], //主屏-管理类型分析
lengthArr7: [], //投中-固定资产类项目
lengthArr8: [], //投中-成本进度偏差概览
titleNameChild: '', //子标题
titleNameChild2: '', //子标题二号
length1: [], //单个柱状图的length
length2: [],// 两个柱状图的length
length3: [],// 两个柱状图的length
location: '', // 看看是什么位置的
count: 0, //重点项目两线指标轮到哪个
list: [], //重点项目两线指标数组
countType: 0, //重点项目两线指标数组
mapShow: false, // false为中国地图 true为山西地图
titleUrl: '',// 标题弹窗显示的内容
titleFrontUrl: '',//投前标题弹窗显示的图片内容
titleAfterUrl: '',//投中/投后标题弹窗显示的图片内容
titleName: '', // 弹窗的名字显示
titleName2: '', // 弹窗的名字显示左边的
fourList: [], // 产业布局分析4个
left12Bottom: [], // 重点项目两线指标x轴
leftEcharts1: "",
leftEcharts2: "",
leftEcharts3: "",
leftEcharts4: "",
leftEcharts5: "",
leftEcharts6: "",
leftEcharts7: "",
leftEcharts8: "",
leftEcharts9: "", //山西地图的地球
leftEcharts10: "",
leftEcharts11: "",
leftEcharts12: '',
leftEcharts13: '',
leftEcharts14: '',
leftEcharts15: '',
echartR4Fd: true,
changeLine: true, //双柱状图弹窗上边是折线还是柱状
rightAdd: {},// 左边新增筛选参数
right3ChartIndex: 0, // 轮到第几个省属了
budgetX: [], // 投资预算执行的x轴
lineCommonCompany: [], //双柱状图弹窗上面的折线图x轴
threeCommonCompany: [], //分为3块的省属
leftEcharts18: '', //单个柱状图弹窗
tipShow1: false, // 标题弹窗显示
tipShow2: false, // 单柱状图弹窗
tipShow3: false, // 单柱状图弹窗
tipShow4: false,//标题投前左边弹窗
tipShow5: false,//标题投前右边弹窗
echartEnterpriseShow: false, // 企业额度分析专属弹窗显示
projectListTipShow: false,// 项目列表弹窗显示
boardTipShow: false, // 项目看板弹窗专用
stageTitle: '', // 管理类型分析圆环图内容
stageTitle2: '', // 管理类型分析圆环图内容
stageTitle3: '', // 投资产业分析圆环图内容
stageTitle4: '', // 投资产业分析圆环图内容
echartR2Fd: true, // 投后进度成本偏差防抖
echartR3Fd: true,// 项目风险分析防抖
leftEcharts16: '', // 中国地图背景地球
rightEcharts1: '', // 投后进度成本偏差
shanxiMap: "", // 山西地图
chinaMap: '', // 中国地图
industryProportion: 1, // 主辅业占比轮播
industryLayout: 0, //产业布局分析
time1: "", // 4秒定时器
time2: "", // 针对投前产业布局分析的定时器
projectNum: 0, // 项目列表弹窗顶部类目筛选条件
projectNum2: 0,//项目阶段分析指示器
projectNum2Stop: true, //项目阶段分析停止循环
commonUrl: '',//获取当前服务器地址
radarNum: '', // 雷达图样式
projecList: [ //项目阶段分析内容距离 特别监管15~35 备案类50~70
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '项目储备', distance: '250px' }
],
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '项目立项', distance: '370px' }
],
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '可研论证', distance: '490px' }
],
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '投资决策', distance: '610px' }
],
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '项目储备', distance: '350px' }
],
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '项目立项', distance: '470px' }
],
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '可研论证', distance: '590px' }
],
[
{ name: '特别监管', value: '0', value2: '0', top: 0 },
{ name: '备案', value: '0', value2: '0', top: 0 },
{ name: '投资决策', distance: '710px' }
],
],
year: '', // 选择的年份
boardUrl: '', // 跳转路径
pollList: [], // 年份有哪些呢
pullShow: false, // 选择年份弹窗
config6: listPop,
originalConfig6: [], // 原始的项目列表数组
centerOriginalConfig6: '', // 中间原始的项目列表数组
centerOriginalConfig7: '', // 中间原始的项目列表数组2
rightOriginalConfig6: '',// 右边原始的项目列表数组
boardType: '', // 哪边的项目看板
storageRecordConfig: {
waitTime: "10000",
hoverPause: true,
header: ["企业名称", "项目名称", "投资总额"],
headerHeight: 80,
headerBGC: '#69C0FF20',
oddRowBGC: '#011e4800',
evenRowBGC: '#011e4800',
// oddRowBGC: '#05507b33',
rowNum: 6,
columnWidth: [150, 450, 150],
align: ["center", "center", "center"],
data: [],
},
storageRecordConfig2: {
header: ['企业名称', '项目名称', '项目阶段', '投资总额'],
headerBGC: '#69C0FF20',
oddRowBGC: '#011e4800',
// evenRowBGC: '#69C0FF20',
evenRowBGC: '#011e4800',
headerHeight: '80',
rowNum: 6,
columnWidth: ['100', '370', '100', '100'],
align: ['center', 'center', 'center', 'center'],
data: []
},
meansList: [
{
label: "初步设计",
value: "0",
projectStepCode: '01'
},
{
label: "详细设计",
value: "0",
projectStepCode: '02'
},
{
label: "开工",
value: "0",
projectStepCode: '03'
},
{
label: "竣工",
value: "0",
projectStepCode: '04'
},
{
label: "验收",
value: "0",
projectStepCode: '05'
},
{
label: "结算",
value: "0",
projectStepCode: '06'
},
],
stockRightList: [
{
label: "前期准备",
value: "0",
projectStepCode: '07'
},
{
label: "变更登记",
value: "0",
projectStepCode: '08'
},
],
costList: [
{
num: 0,
value: 0,
status: "正偏差",
type: 1,
projectStepCode: '09'
},
{
num: 0,
value: 0,
status: "容差内",
type: 2,
projectStepCode: '10'
},
{
num: 0,
value: 0,
status: "负偏差",
type: 3,
projectStepCode: '11'
},
],
investData: {
investList: [
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo1.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo2.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo3.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo4.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo5.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo6.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo7.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo8.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo9.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo10.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo11.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo12.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo13.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo14.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo15.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo16.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo17.png",
},
{
name: "",
yse: "",
yqhte: "",
czrde: "",
jse: "",
fke: "",
url: "./img/logos/logo18.png",
},
],
},
riskData: {
x: [
{ name: "大地控股", value: [14, 13, 6, 15, 13, 4] },
{ name: "云时代", value: [15, 12, 12, 10, 24, 6] },
{ name: "华舰体育", value: [14, 13, 6, 15, 13, 4] },
{ name: "神农科技", value: [14, 13, 6, 17, 13, 4] },
{ name: "山西焦煤", value: [14, 13, 6, 15, 13, 4] },
{ name: "晋能控股", value: [14, 13, 6, 17, 13, 4] },
{ name: "华阳新材", value: [14, 13, 6, 15, 13, 4] },
{ name: "潞安化工", value: [14, 13, 6, 15, 13, 4] },
{ name: "华新燃气", value: [14, 13, 6, 17, 13, 4] },
{ name: "太重集团", value: [14, 13, 6, 15, 13, 4] },
{ name: "国际能源", value: [14, 13, 6, 15, 13, 4] },
{ name: "华远陆港", value: [14, 13, 6, 15, 17, 4] },
{ name: "水控集团", value: [14, 13, 6, 15, 13, 4] },
{ name: "文旅集团", value: [14, 13, 6, 15, 13, 4] },
{ name: "交控集团", value: [14, 13, 6, 15, 17, 4] },
{ name: "航产集团", value: [14, 13, 6, 15, 13, 4] },
{ name: "山西建投", value: [14, 13, 6, 15, 13, 24] },
{ name: "汾酒集团", value: [14, 13, 6, 15, 13, 4] },
]
},
inner: 0,
innerDeg: 0,
timer: null, // 两秒定时器
witchs: 0,
topIndex: 0,
echartR1Fd1: true,
echartR2Fd2: true,
echartC1Fd1: true,
r3Index: 0,
riskData1: {
x: ["山西焦煤", "晋能控股", "华阳新材", "潞安化工", "华新燃气", "太重集团", "国际能源", "华远陆港", "水控集团", "文旅集团", "交控集团", '航产集团', '山西建投', '汾酒集团', '大地控股', '云时代', '华舰体育', '神农科技'],
y1: [
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53
],
y2: [
110, 41, 35, 81, 56, 10, 9, 8, 7, 6, 5, 4, 6, 7, 8,
9, 4, 3,
],
y3: [
130, 76, 67, 120, 89, 111, 87, 123, 66, 65, 65, 98, 230, 78, 99, 130,
68, 98,
],
y4: [
90, 50, 50, 50, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 51, 52,
53, 54,
],
y5: [
33, 32, 31, 31, 32, 33, 34, 34, 35, 36, 37, 38, 39, 33, 34,
35, 36, 37,
],
}
};
},
created () {
},
beforeDestroy () {
document.removeEventListener('keydown', this.onEsc)
this.timer && clearInterval(this.timer);
this.time1 && clearInterval(this.time1);
this.time2 && clearInterval(this.time2);
},
mounted () {
document.addEventListener('keydown', this.onEsc)
this.getUrlParams()
this.countYear()
},
methods: {
// 监听ESC事件
onEsc (e) {
if (e.keyCode === 27) {
this.closeTap()
}
},
// 计算项目阶段分析对应区间
countSection () {
let that = this
let topList = []
let bottomList = []
this.projecList.forEach(item => {
topList.push(item[0].value2)
bottomList.push(item[1].value2)
})
let minTop = Math.min(...topList)
let maxTop = Math.max(...topList)
let minTop2 = Math.min(...bottomList)
let maxTop2 = Math.max(...bottomList)
let res = ''
let res2 = ''
this.projecList.forEach(item => {
res = (Number(item[0].value2) - minTop) / (maxTop - minTop) * 20 + 15
res2 = (Number(item[1].value2) - minTop2) / (maxTop2 - minTop2) * 20 + 50
this.$set(item[0], 'top', Math.round(50 - res))
this.$set(item[1], 'top', Math.round(120 - res2))
if (Number(item[0].value2) < 50 || Number(item[0].value2) == 50) {
this.$set(item[0], 'img', './img/left-blue.png')
} else if (Number(item[0].value2) < 100 || Number(item[0].value2) == 100) {
this.$set(item[0], 'img', './img/left-blue2.png')
} else {
this.$set(item[0], 'img', './img/left-blue3.png')
}
if (Number(item[1].value2) < 50 || Number(item[1].value2) == 50) {
this.$set(item[1], 'img', './img/left-green.png')
} else if (Number(item[1].value2) < 100 || Number(item[1].value2) == 100) {
this.$set(item[1], 'img', './img/left-green2.png')
} else {
this.$set(item[1], 'img', './img/left-green3.png')
}
})
that.leftEcharts7Fun()
that.leftEcharts8Fun()
},
// 获取地址栏参数
getUrlParams (id) {
let url = window.location.href
this.commonUrl = window.location.href.split('/')
this.commonUrl.pop()
this.commonUrl = this.commonUrl.join('/')
// 通过 ? 分割获取后面的参数字符串
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.242:8081'
this.accountId = obj.accountid
this.comeIn()
},
// 计算展示的年份
countYear () {
clearInterval(this.timer);
this.timer = setInterval(() => {
this.topIndex++;
this.topIndex = this.topIndex % 8;
// 项目阶段分析弹窗
if (this.projectNum2 < 7 && this.projectNum2Stop) {
this.projectNum2 = this.projectNum2 + 1
} else if (this.projectNum2Stop) {
this.projectNum2 = 0
}
}, 2000);
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 () {
let that = this
that.right3ChartIndex = 0
this.time4s();
this.timeNs();
this.filterLpData();
this.lpRotate();
this.getAppToken()
setTimeout(() => {
that.changeTopColor()
that.clickItem(0)
});
},
// 获取token
getAppToken () {
let value = {}
// dev环境
if (this.env == 'sit' || this.env == 'SIT') {
// SIT环境
value = {
"appId": "68dp",
"appSecret": "9ErhY^O{n?@Pc#eb7HYX",
"tenantid": "",
"language": "zh_CN"
}
} else if (this.env == 'uat' || this.env == 'UAT') {
// UAT环境
value = {
"appId": "68dp",
"appSecret": "9ErhY^O{n?@Pc#eb7HYX",
"tenantid": "",
"language": "zh_CN"
}
} else if (this.env == 'preprd' || this.env == 'PREPRD') {
// 预生产环境
value = {
"appId": "68dp",
"appSecret": "9ErhY^O{n?@Pc#eb7HYX",
"tenantid": "",
"language": "zh_CN"
}
} else {
// 生产环境
value = {
"appId": "68dp",
"appSecret": "9ErhY^O{n?@Pc#eb7HYX",
"tenantid": "",
"language": "zh_CN"
}
}
value.accountId = this.accountId
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": "15835113238", // 新
"apptoken": this.app_token, //应用令牌
"tenantid": "", //租户id
"usertype": "Mobile"
}
} else if (this.env == 'uat' || this.env == 'UAT') {
// UAT环境
value = {
"user": "15835113238", // 新
"apptoken": this.app_token, //应用令牌
"tenantid": "", //租户id
"usertype": "Mobile"
}
} else if (this.env == 'preprd' || this.env == 'PREPRD') {
// 预生产环境
value = {
"user": "15835113238", // 新
"apptoken": this.app_token, //应用令牌
"tenantid": "", //租户id
"usertype": "Mobile"
}
} else {
// 生产环境
value = {
"user": "15835113238", // 新
"apptoken": this.app_token, //应用令牌
"tenantid": "", //租户id
"usertype": "Mobile"
}
}
value.accountId = this.accountId
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.getDate15() // 右种
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.leftEcharts10Fun(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.leftEcharts1Fun()
that.leftEcharts2Fun()
that.leftEcharts3Fun()
that.leftEcharts4Fun()
}
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[0].mdnb_entryentity) {
let dataList = this.classify(res.data.rows[0].mdnb_entryentity, 'mdnb_textfield1')
that.fourList = this.classify(res.data.rows[0].mdnb_entryentity, 'mdnb_textfield1')
// 传统产业分析
dataList[0].data.forEach((item, i) => {
left1[0][i] = {}
left1[0][i].num = item.mdnb_integerfield13
left1[0][i].y = that.yuanChange(item.mdnb_amountfield8)
left1[0][i].name = item.mdnb_textfield2
})
// 战略性新兴产业
dataList[1].data.forEach((item, i) => {
left1[1][i] = {}
left1[1][i].num = item.mdnb_integerfield13
left1[1][i].y = that.yuanChange(item.mdnb_amountfield8)
left1[1][i].name = item.mdnb_textfield2
})
// 特色优势产业
dataList[2].data.forEach((item, i) => {
left1[2][i] = {}
left1[2][i].num = item.mdnb_integerfield13
left1[2][i].y = that.yuanChange(item.mdnb_amountfield8)
left1[2][i].name = item.mdnb_textfield2
})
// 公共基础等产业
dataList[3].data.forEach((item, i) => {
left1[3][i] = {}
left1[3][i].num = item.mdnb_integerfield13
left1[3][i].y = that.yuanChange(item.mdnb_amountfield8)
left1[3][i].name = item.mdnb_textfield2
})
setTimeout(() => {
that.leftEcharts5Fun()
})
} else {
left1 = [
[
{
},
{
},
{
},
{
},
{
}
],
[
{
},
{
},
{
},
{
},
{
},
{
},
{
}
],
[
{
},
{
},
{
},
{
},
{
},
{
},
{
},
{
},
],
[
{
},
{
},
{
},
{
},
{
},
{
}
]
]
}
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]
// 固定资产进度分布
// 特别监管
that.projecList[0][0].value = dataList.mdnb_integerfield1
that.projecList[0][0].value2 = this.yuanChange(dataList.mdnb_amountfield241)
that.projecList[1][0].value = dataList.mdnb_integerfield3
that.projecList[1][0].value2 = this.yuanChange(dataList.mdnb_amountfield5)
that.projecList[2][0].value = dataList.mdnb_integerfield5
that.projecList[2][0].value2 = this.yuanChange(dataList.mdnb_amountfield21)
that.projecList[3][0].value = dataList.mdnb_integerfield7
that.projecList[3][0].value2 = this.yuanChange(dataList.mdnb_amountfield29)
// 备案
that.projecList[0][1].value = dataList.mdnb_integerfield2
that.projecList[0][1].value2 = this.yuanChange(dataList.mdnb_amountfield341)
that.projecList[1][1].value = dataList.mdnb_integerfield4
that.projecList[1][1].value2 = this.yuanChange(dataList.mdnb_amountfield11)
that.projecList[2][1].value = dataList.mdnb_integerfield6
that.projecList[2][1].value2 = this.yuanChange(dataList.mdnb_amountfield28)
that.projecList[3][1].value = dataList.mdnb_integerfield8
that.projecList[3][1].value2 = this.yuanChange(dataList.mdnb_amountfield30)
// 股权类进度分布
// 特别监管
that.projecList[4][0].value = dataList.mdnb_integerfield11
that.projecList[4][0].value2 = this.yuanChange(dataList.mdnb_amountfield2411)
that.projecList[5][0].value = dataList.mdnb_integerfield31
that.projecList[5][0].value2 = this.yuanChange(dataList.mdnb_amountfield51)
that.projecList[6][0].value = dataList.mdnb_integerfield51
that.projecList[6][0].value2 = this.yuanChange(dataList.mdnb_amountfield211)
that.projecList[7][0].value = dataList.mdnb_integerfield71
that.projecList[7][0].value2 = this.yuanChange(dataList.mdnb_amountfield291)
// 备案
that.projecList[4][1].value = dataList.mdnb_integerfield21
that.projecList[4][1].value2 = this.yuanChange(dataList.mdnb_amountfield3411)
that.projecList[5][1].value = dataList.mdnb_integerfield41
that.projecList[5][1].value2 = this.yuanChange(dataList.mdnb_amountfield111)
that.projecList[6][1].value = dataList.mdnb_integerfield61
that.projecList[6][1].value2 = this.yuanChange(dataList.mdnb_amountfield281)
that.projecList[7][1].value = dataList.mdnb_integerfield81
that.projecList[7][1].value2 = this.yuanChange(dataList.mdnb_amountfield301)
this.countSection();
}
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]
left16[0] = dataList.mdnb_amountfield
left16[1] = dataList.mdnb_amountfield1
left16[2] = dataList.mdnb_amountfield2
left16[3] = dataList.mdnb_decimalfield
left16[4] = dataList.mdnb_amountfield3
that.leftEcharts6Fun();
}
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[0].mdnb_entryentity1) {
let dataList2 = this.classify(res.data.rows[0].mdnb_entryentity1, 'mdnb_textfield3')
// 左边的轮播
let dataList = []
this.centerOriginalConfig6 = []
dataList2.forEach((item, index) => {
dataList[index] = []
this.centerOriginalConfig6.push(item.data[0].mdnb_projectnum)
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] = [[], [], []]
that.left12Bottom[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.left12Bottom[index].push(item.data[i].mdnb_textfield4.replace('(%)', ''))
}
})
that.leftEcharts11Fun()
} else {
this.storageRecordConfig.data = []
this.storageRecordConfig = { ...this.storageRecordConfig }
left12 = []
}
resolve(1);
})
});
},
// 获取右边顶部条数据
getDate7 () {
let that = this
return new Promise((resolve, err) => {
let value = {
access_token: this.access_token,
presetYear: this.year,
"request": {
isInsert: this.mockData ? '1' : '0',
},
pageSize: 1000
}
post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getTabpageap', value).then(res => {
that.meansList[0].value = res.data.mdnb_one_step
that.meansList[1].value = res.data.mdnb_two_step
that.meansList[2].value = res.data.mdnb_three_step
that.meansList[3].value = res.data.mdnb_four_step
that.meansList[4].value = res.data.mdnb_five_step
that.meansList[5].value = res.data.mdnb_six_step
that.stockRightList[0].value = res.data.mdnb_seven_step
that.stockRightList[1].value = res.data.mdnb_eight_step
resolve(1);
})
});
},
// 获取右边中间左边的(正偏差/容差内/负偏差)
getDate8 () {
let that = this
return new Promise((resolve, err) => {
let value = {
access_token: this.access_token,
presetYear: this.year,
"request": {
isInsert: this.mockData ? '1' : '0',
},
pageSize: 1000
}
post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getInvestSunstraction', value).then(res => {
that.costList[0].num = res.data.mdnb_projectnum_z
that.costList[0].value = res.data.mdnb_amountall_z
that.costList[1].num = res.data.mdnb_projectnum_r
that.costList[1].value = res.data.mdnb_amountall_r
that.costList[2].num = res.data.mdnb_projectnum_f
that.costList[2].value = res.data.mdnb_amountall_f
resolve(1);
})
});
},
// 获取右边中间右边的(预算额/已签合同额。。。)
getDate9 () {
let that = this
return new Promise((resolve, err) => {
let value = {
access_token: this.access_token,
presetYear: this.year,
"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)
})
right4.forEach((item, index) => {
that.investData.investList[index].name = item.name
that.investData.investList[index].yse = item.value
that.investData.investList[index].yqhte = item.value2
that.investData.investList[index].czrde = item.value3
that.investData.investList[index].jse = item.value4
that.investData.investList[index].fke = item.value5
})
that.investData = that.investData
resolve(1);
})
});
},
// 进度成本偏差
getDate10 () {
let that = this
return new Promise((resolve, err) => {
let value = {
access_token: this.access_token,
presetYear: this.year,
"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)
})
that.rightEcharts1Fun();
resolve(1);
})
});
},
// 项目风险分析A
getDate11 () {
let that = this
return new Promise((resolve, err) => {
let value = {
access_token: this.access_token,
presetYear: this.year,
"request": {
isInsert: this.mockData ? '1' : '0',
},
pageSize: 1000
}
let a = []
post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getUnitNoSolveDangerDate', value).then(res => {
right6 = [
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 },
{ value: 0, value2: 0, value3: 0 }
]
res.data.forEach((item, index) => {
right6[index].value = item.mdnb_height
right6[index].value2 = item.mdnb_midle
right6[index].value3 = item.mdnb_bottom
})
this.initChartR2()
resolve(1);
})
});
},
// 项目风险分析B(雷达图)
getDate12 () {
return new Promise((resolve, err) => {
let value = {
access_token: this.access_token,
presetYear: this.year,
"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) => {
this.riskData.x[index].name = item.mdnb_unity_name3
this.riskData.x[index].value = []
this.riskData.x[index].value.push(item.mdnb_anquan)
this.riskData.x[index].value.push(item.mdnb_fukuan)
this.riskData.x[index].value.push(item.mdnb_hetong)
this.riskData.x[index].value.push(item.mdnb_jiesuan)
this.riskData.x[index].value.push(item.mdnb_jindu)
this.riskData.x[index].value.push(item.mdnb_securty)
})
this.getDate11()
resolve(1);
})
});
},
// 预算执行情况分析
getDate15 () {
let that = this
return new Promise((resolve, err) => {
let value = {
access_token: this.access_token,
presetYear: this.year,
"request": {
isInsert: this.mockData ? '1' : '0',
},
pageSize: 1000
}
post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getBudgetExecutionTotal', value).then(res => {
res.data.forEach((item, index) => {
this.$set(item, 'mdnb_yusuanmoney', that.yuanChange(item.mdnb_yusuanmoney))
this.$set(item, 'mdnb_fukuanmoney', that.yuanChange(item.mdnb_fukuanmoney))
this.$set(item, 'mdnb_jiesuanmoney', that.yuanChange(item.mdnb_jiesuanmoney))
this.$set(item, 'mdnb_hetongmoney', that.yuanChange(item.mdnb_hetongmoney))
})
let a = that.classify(res.data, 'mdnb_unity_name4')
this.threeCommonCompany = []
for (var i = 0; i < commonCompany.length; i += 6) {
this.threeCommonCompany.push(commonCompany.slice(i, i + 6));
}
right9 = a.map((item, index) => {
return item.data.filter((item2, index2) => {
return (item2.mdnb_fukuanmoney != 0 || item2.mdnb_yusuanmoney != 0 || item2.mdnb_hetongmoney != 0 || item2.mdnb_jiesuanmoney != 0)
})
})
that.budgetX = []
right9.forEach((item, index) => {
that.budgetX.push(item.map(item2 => {
return item2.mdnb_aheadname
}))
})
setTimeout(() => {
that.initChartR4()
});
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
// 投资产业分布
center2 = []
if (res.data.distribution.length != 0) {
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
center2[i].proportion = (item.proportion * 100).toFixed(2)
})
}
// 投资执行情况
center3 = [
{ name: '山西焦煤', value: 0, value2: 0 },
{ name: '晋能控股', value: 0, value2: 0 },
{ name: '华阳新材', value: 0, value2: 0 },
{ name: '潞安化工', value: 0, value2: 0 },
{ name: '华新燃气', value: 0, value2: 0 },
{ name: '太重集团', value: 0, value2: 0 },
{ name: '国际能源', value: 0, value2: 0 },
{ name: '华远陆港', value: 0, value2: 0 },
{ name: '水控集团', value: 0, value2: 0 },
{ name: '文旅集团', value: 0, value2: 0 },
{ name: '交控集团', value: 0, value2: 0 },
{ name: '航产集团', value: 0, value2: 0 },
{ name: '山西建投', value: 0, value2: 0 },
{ name: '汾酒集团', value: 0, value2: 0 },
{ name: '大地控股', value: 0, value2: 0 },
{ name: '云时代', value: 0, value2: 0 },
{ name: '华舰体育', value: 0, value2: 0 },
{ name: '神农科技', value: 0, value2: 0 }
]
res.data.implementationStatus.forEach((item, index) => {
center3[index].value = that.yuanChange(item.plan)
center3[index].value2 = that.yuanChange(item.reality)
})
center3.sort(that.compare('value'))
// that.leftEcharts14Fun()
// 五个一体化
res.data.five.forEach((item, index) => {
center6[index] = { name: item.type, value: that.yuanChange(item.amount), typeno: item.typeno }
})
// that.leftEcharts15Fun()
// 管理类型分析
let center7Count = 0
res.data.investmentStage.forEach((item, index) => {
center7Count = that.yuanChange(item.amount) + center7Count
center7[index] = { name: item.type, value: Number(item.num), value2: that.yuanChange(item.amount), typeno: item.typeno, sliced: false, selected: false }
})
center7.forEach((item, index) => {
if (item.value2) {
item.proportion = (item.value2 / center7Count * 100).toFixed(2)
} else {
item.proportion = 0
}
})
// 重点项目监控
center8 = []
// this.originalConfig6 = res.data.projectMonitoring
this.centerOriginalConfig7 = res.data.projectMonitoring
res.data.projectMonitoring.forEach((item, index) => {
center8.push({ value: item.amount, name: item.projectname, office: item.orgName, type: item.projectjd })
})
let dataList = []
center8.map(item => {
dataList.push([item.office, item.name, item.type, this.yuanChange(item.value) + '亿', item.typeno])
})
this.storageRecordConfig2.data = dataList
this.storageRecordConfig2 = { ...this.storageRecordConfig2 }
// 中国地图
centerChina = []
res.data.investmentMap.forEach((item, index) => {
centerChina.push({ name: item.address, value: that.yuanChange(item.amount), value2: item.value2 })
})
setTimeout(() => {
that.chinaEchartsFun()
that.leftEcharts16Fun() // 中国地图背景地球
})
resolve(1);
})
});
},
// 点击八卦的方法
cilikEight (param) {
let that = this
that.rightAdd.modelName = 2
that.rightAdd.substraction = ''
that.rightAdd.projectStepCode = ''
that.projectNum = 314
that.rightPenetrateTwo(2, '', that.findCode(this.investData.investList[this.witchs].name), 'right')
},
// 解决除法是去精度
numDiv (num1, num2) {
var baseNum1 = 0, baseNum2 = 0;
var baseNum3, baseNum4;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
with (Math) {
baseNum3 = Number(num1.toString().replace(".", ""));
baseNum4 = Number(num2.toString().replace(".", ""));
return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
}
},
// 解决乘法失去精度
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);
},
rightEcharts1Fun () {
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.rightEcharts1 = echarts.init(this.$refs['rightEcharts1'])
that.rightEcharts1.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.rightEcharts1.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.rightEcharts1.setOption(option);
// 防止勿刷新做的防抖
setTimeout(() => {
that.echartR2Fd = true
}, 2000)
}, 1900)
}
})
let option = {
color: [{
type: 'radial', // linear 线性渐变 radial径向渐变
x: 0.5,
y: 0.5,
r: 0.5,
colorStops: [{
offset: 0, color: '#58F7DF' // 0% 处的颜色
}, {
offset: 1, color: '#4ECFBB' // 100% 处的颜色
}]
},
{
type: 'radial', // linear 线性渐变 radial径向渐变
x: 0.5,
y: 0.5,
r: 0.5,
colorStops: [{
offset: 0, color: '#7FD9FF' // 0% 处的颜色
}, {
offset: 1, color: '#40A9FF' // 100% 处的颜色
}]
}, {
type: 'radial', // linear 线性渐变 radial径向渐变
x: 0.5,
y: 0.5,
r: 0.5,
colorStops: [{
offset: 0, color: '#FF9592' // 0% 处的颜色
}, {
offset: 1, color: '#D2706D' // 100% 处的颜色
}]
}
],
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: 20,
data: ['正偏差', '容差', '负偏差'],
textStyle: {
fontSize: 24,
color: '#fff',
fontFamily: 'Microsoft YaHei'
}
},
textStyle: {
color: '#fff',
fontSize: 20,
fontFamily: 'Microsoft YaHei',
},
tooltip: {
show: true,
trigger: "axis",
backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色
borderColor: "rgba(50,50,50,0.7)",
textStyle: {
color: "#fff",
fontStyle: "normal", // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体)
fontWeight: "normal", // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
fontSize: "24", // 文字字体大小
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.rightEcharts1.on('click', function (param) {
return
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')
})
that.rightEcharts1.setOption(option)
tools.loopShowTooltip(that.rightEcharts1, option, {
interval: 2000,
loopSeries: true,
})
},
initChartR2 () {
let that = this;
that.right1Chart = echarts.init(this.$refs["echartR2"]);
that.right1Chart.on('showTip', (params) => {
// 如果是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.right1Chart.setOption(option);
// 防止勿刷新做的防抖
setTimeout(() => {
that.echartR3Fd = true
}, 2000)
}, 1900);
// 如果是17表示到了最后一个,那么重新来一遍
} else if (params.dataIndex == 17 && that.echartR3Fd) {
that.echartR3Fd = false
setTimeout(() => {
option.dataZoom[0].endValue = 0
option.dataZoom[0].startValue = 5
that.right1Chart.setOption(option);
// 防止勿刷新做的防抖
setTimeout(() => {
that.echartR3Fd = true
}, 2000)
}, 1900)
}
})
let option = {
color: [
{
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "#07806E", // 0% 处的颜色
},
{
offset: 1,
color: "#79FFEB", // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
{
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "#9F7F00", // 0% 处的颜色
},
{
offset: 1,
color: "#FBE463", // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
{
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "#91231F", // 0% 处的颜色
},
{
offset: 1,
color: "#F98784", // 100% 处的颜色
},
],
global: false, // 缺省为 false
},
],
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: {
top: 10,
textStyle: {
fontSize: 24,
color: "#fff",
fontFamily: "Microsoft YaHei",
},
itemStyle: {
borderCap: "round",
},
},
tooltip: {
// trigger: "item",
trigger: "axis",
show: true,
position: "top",
backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色
borderColor: "rgba(50,50,50,0.7)",
confine: true, // 不超出当前表
textStyle: {
color: "#fff",
fontStyle: "normal", // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体)
fontWeight: "normal", // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
fontSize: "24", // 文字字体大小
fontFamily: 'Microsoft YaHei',
},
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
formatter: function (p) {
that.r3Index = p[0].dataIndex;
if (Math.max(...that.riskData.x[p[0].dataIndex].value) > 15) {
that.radarNum = 3
} else {
that.radarNum = 2
}
that.right3Chart && that.right3Chart.dispose()
that.initChartR3();
return `${p[0].name}
低风险:${p[0].data}个
中风险:${p[1].data}个
高风险:${p[2].data}个`
},
},
grid: {
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
xAxis: [
{
type: "category",
data: commonCompany,
axisLine: {
show: true,
lineStyle: {
color: "rgba(0, 80, 148, .8)",
},
},
axisTick: {
show: false,
},
axisLabel: {
color: "#fff",
rotate: 20,
fontSize: 20,
},
},
],
yAxis: [
{
name: '个',
type: "value",
minInterval: 1, // 最小间隔1
axisLabel: {
color: "#fff",
fontSize: 20,
},
nameTextStyle: {//y轴上方单位的颜色
color: '#fff',
fontSize: '20',
fontFamily: 'Microsoft YaHei'
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(104, 180, 221, .2)",
type: "dashed",
},
},
},
],
series: [
{
name: "低风险",
type: "bar",
stack: "Ad",
barWidth: 14,
emphasis: {
focus: "series",
},
itemStyle: {
barBorderRadius: [15, 15, 15, 15],
},
data: right6.map(item => item.value3),
},
{
name: "中风险",
type: "bar",
barWidth: 14,
stack: "Ad",
itemStyle: {
barBorderRadius: [15, 15, 15, 15],
},
emphasis: {
focus: "series",
},
data: right6.map(item => item.value2),
},
{
name: "高风险",
type: "bar",
barWidth: 14,
stack: "Ad",
itemStyle: {
barBorderRadius: [15, 15, 15, 15],
},
emphasis: {
focus: "series",
},
data: right6.map(item => item.value),
},
],
};
that.right1Chart.getZr().on('click', function (param) {
return
// 获取 点击的 触发点像素坐标
const pointInPixel = [param.offsetX, param.offsetY]
// 判断给定的点是否在指定的坐标系或者系列上
if (that.right1Chart.containPixel('grid', pointInPixel)) {
// 获取到点击的 x轴 下标 转换为逻辑坐标
const xIndex = that.right1Chart.convertFromPixel({ seriesIndex: 0 }, pointInPixel)[0]
that.rightAdd.modelName = 3
that.rightAdd.substraction = ''
that.rightAdd.projectStepCode = ''
that.projectNum = 315
that.rightPenetrateTwo(that.rightPenetrateTwo.modelName, '', that.findCode(commonCompany[Math.abs(xIndex)]), 'right')
}
})
that.right1Chart.setOption(option);
tools.loopShowTooltip(that.right1Chart, option, {
interval: 2000,
loopSeries: true,
})
},
initChartR3 () {
let that = this;
that.right3Chart = echarts.init(this.$refs["echartR3"]);
let option = {
radar: {
// shape: 'circle',
splitNumber: that.radarNum,
splitLine: {
lineStyle: {
color: that.radarNum == 3 ? ["#C25253", "#45C9B5", "#D1B83A"] : ["#D1B83A", "#45C9B5"],
},
},
name: { //修改indicator文字的颜色
textStyle: {
fontSize: 20,
color: '#fff'
}
},
// axisLine: { // 设置雷达图中间射线的颜色
// lineStyle: {
// color: '#fff',
// },
// },
// splitArea: {
// areaStyle: {
// color: that.radarNum == 3 ? [
// "rgba(88,247,223,0.2)",
// "rgba(255, 224, 54, 0.2)",
// "rgba(221,89,85,0.3)",
// ] : [
// "rgba(88,247,223,0.2)",
// "rgba(255, 224, 54, 0.2)",
// ],
// },
// },
axisLine: { // 设置雷达图中间射线的颜色
lineStyle: {
color: '#e3d896',
},
},
splitLine: { //网格颜色设置
show: true,
lineStyle: {
width: 1,
color: ['#871b1a', '#638f41', '#d29e35', '#b6802b']
},
},
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'],
}
},
indicator: [
{ name: "安全风险", max: that.radarNum == 3 ? 25 : 15 },
{ name: "付款风险", max: that.radarNum == 3 ? 25 : 15 },
{ name: "合同风险", max: that.radarNum == 3 ? 25 : 15 },
{ name: "结算风险", max: that.radarNum == 3 ? 25 : 15 },
{ name: "进度风险", max: that.radarNum == 3 ? 25 : 15 },
{ name: "质量风险", max: that.radarNum == 3 ? 25 : 15 },
],
},
series: [
{
name: "风险",
type: "radar",
symbol: "circle",
label: {
show: true,
formatter: function (params) {
return params.value;
},
fontSize: 24,
color: "#68BDFF",
},
data: [
{
value: that.riskData.x[that.r3Index].value,
itemStyle: { //该数值区域样式设置
normal: {
color: 'rgb(44,198,255,0.8)', //背景颜色,还需设置areaStyle
lineStyle: {
color: 'rgb(44,198,255,0.8)', //边框颜色
},
},
},
label: { //显示value中具体的数值
normal: {
show: true,
textStyle: { //更改数值样式
color: '#43EDE3'
}
},
},
areaStyle: { //设置区域背景颜色透明度
normal: {
width: 1,
opacity: 0.8,
},
},
// areaStyle: {
// color: "#112b75",
// },
// lineStyle: {
// width: 4,
// color: "#60C1FF",
// },
// label: {
// fontSize: 22,
// },
},
],
},
],
};
that.right3Chart.setOption(option);
},
initChartR4 () {
let that = this;
that.right4Chart = echarts.init(this.$refs["echartR4"]);
that.right4Chart.on('showTip', (params) => {
// 如果轮播到最后一个了
if ((params.dataIndex == (right9[that.right3ChartIndex].length - 1)) && that.echartR4Fd) {
that.echartR4Fd = false
setTimeout(() => {
// 销毁省属自动轮播
if (that.right3ChartIndex < right9.length - 1) {
that.right3ChartIndex = that.right3ChartIndex + 1
} else {
that.right3ChartIndex = 0
}
that.right4Chart && that.right4Chart.dispose()
that.initChartR4()
that.clickItem(that.right3ChartIndex)
// 防止勿刷新做的防抖
setTimeout(() => {
that.echartR4Fd = true
})
}, 1900)
// 如果没有轮播到最后一个
} else if (((params.dataIndex + 1) % 6 == 0) && that.echartR4Fd) {
that.echartR4Fd = false
setTimeout(() => {
option.dataZoom[0].endValue = option.dataZoom[0].endValue + 6
option.dataZoom[0].startValue = option.dataZoom[0].startValue + 6
that.right4Chart.setOption(option);
// 防止勿刷新做的防抖
setTimeout(() => {
that.echartR4Fd = true
})
}, 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)}亿`
},
confine: true, // 不超出当前表
textStyle: {
color: '#FFF', // 文字的颜色
fontSize: '24', // 文字字体大小
fontFamily: 'Microsoft YaHei'
},
backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色
borderColor: "rgba(50,50,50,0.7)",
trigger: 'axis',
axisPointer: {
type: 'shadow',
},
},
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: '16%',
right: '5%',
left: '5%',
bottom: '37%',
},
legend: {
selectedMode: false,
data: ["预算额", '合同额', '结算额', '付款额'],
x: 'center',
y: '15',
textStyle: {
color: '#fff',
fontSize: "24",
fontFamily: 'Microsoft YaHei'
},
},
xAxis: {
data: that.budgetX[that.right3ChartIndex],
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: {
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: '#40A9FF',
},
{
offset: 1,
color: '#092351',
},
]),
},
},
data: right9[that.right3ChartIndex].map(item => item.mdnb_yusuanmoney),
},
{
name: '合同额',
type: 'bar',
barWidth: 10,
itemStyle: {
normal: {
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: '#58F7DF',
},
{
offset: 1,
color: '#092351',
},
]),
},
},
data: right9[that.right3ChartIndex].map(item => item.mdnb_hetongmoney),
},
{
name: '结算额',
type: 'bar',
barWidth: 10,
itemStyle: {
normal: {
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: '#B78CFF',
},
{
offset: 1,
color: '#092351',
},
]),
},
},
data: right9[that.right3ChartIndex].map(item => item.mdnb_jiesuanmoney),
},
{
name: '付款额',
type: 'bar',
barWidth: 10,
itemStyle: {
normal: {
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: '#FFE036',
},
{
offset: 1,
color: '#092351',
},
]),
},
},
data: right9[that.right3ChartIndex].map(item => item.mdnb_fukuanmoney),
},
],
}
that.right4Chart.getZr().on('click', function (param) {
return
// 获取 点击的 触发点像素坐标
const pointInPixel = [param.offsetX, param.offsetY]
// 判断给定的点是否在指定的坐标系或者系列上
if (that.right4Chart.containPixel('grid', pointInPixel)) {
// 获取到点击的 x轴 下标 转换为逻辑坐标
const xIndex = that.right4Chart.convertFromPixel({ seriesIndex: 0 }, pointInPixel)[0]
that.boardType = 'right2'
let value = {
access_token: that.access_token,
presetYear: this.year,
"request": {
isInsert: that.mockData ? '1' : '0',
orgName: that.findCode(commonCompany[that.right3ChartIndex]),
aheadName: that.budgetX[that.right3ChartIndex][Math.abs(xIndex)]
},
pageSize: 1000
}
post('/ierp/kapi/v2/mdnb/mdnb_xmkb/mdnb_manager_middle/getBudgetExecutionAnalysis', value).then(res => {
that.rightOriginalConfig6 = res.data
that.config6.header = ["企业集团", "标准预算项", '项目名称', '预算额(万元)', '合同额(万元)', '结算额(万元)', '付款额(万元)']
that.config6.data = []
res.data.forEach((item, index) => {
that.config6.data[index] = []
that.config6.data[index][0] = item.mdnb_unity_name4
that.config6.data[index][1] = item.mdnb_aheadname
that.config6.data[index][2] = item.mdnb_proname
that.config6.data[index][3] = that.numFormat(item.mdnb_yusuanmoney / 10000)
that.config6.data[index][4] = that.numFormat(item.mdnb_hetongmoney / 10000)
that.config6.data[index][5] = that.numFormat(item.mdnb_jiesuanmoney / 10000)
that.config6.data[index][6] = that.numFormat(item.mdnb_fukuanmoney / 10000)
})
that.config6.columnWidth = [300, 1050, 1050, 300, 300, 300, 500]
that.config6 = { ...that.config6 }
that.projectListTipShow = 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, //鼠标滚轮触发滚动
// },
// ],
// title: {
// text: "企业后评价执行情况",
// left: "center",
// textStyle: {
// color: "#fff",
// fontSize: 32,
// },
// },
// tooltip: {
// trigger: "item",
// show: true,
// position: "top",
// backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色
// borderColor: "rgba(50,50,50,0.7)",
// confine: true,
// textStyle: {
// color: "#fff",
// fontStyle: "normal", // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体)
// fontWeight: "normal", // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
// fontSize: "28", // 文字字体大小
// },
// formatter: function (p) {
// return `${p.name}
首次评价:应开展${that.riskData1.y1[p.dataIndex]}个,已完成${that.riskData1.y2[p.dataIndex]}个
// 再次评价:应开展${that.riskData1.y3[p.dataIndex]}个,已完成${that.riskData1.y4[p.dataIndex]}个,达标${that.riskData1.y5[p.dataIndex]}个`
// },
// },
// legend: {
// show: true,
// textStyle: {
// fontSize: 20,
// color: "#fff",
// },
// inactiveColor: "#fff",
// // itemHeight: 20,
// top: "15%",
// backgroundColor: "transparent",
// data: [
// {
// name: "应首评项目数",
// // icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAUCAYAAAC58NwRAAAAAXNSR0IArs4c6QAAAWdJREFUOE+N0k8og3EYB/Dvs8P8CSlTxJGD8u+yTYmNm0gJQznIQRxMoV2cXWSKCznIQdk7SkmOEomNg41y4EjURkLZFI/ed3vX+5v82nt4357n9/s8Pe/v9xCST6+fzVHGKAMDAKqT6WsCNi2ElS0Xfak5Ul+tfi77YewBqNcLpH0vTYSOAxc9kFo5wghINus2lJMPOzl8PE6EpX8qC2lmuMmp8CmABn3FVgJ4bIloLggEnwRzRg6F4wSY9fR2J1CUnYieY0DPrgDiUvASA7pF8PGnJXsp4LEC3wx4L4DAY1pLLQq7GVjM5KcJmKC2fc76fNeOtU6GmBDOzYMt04sLmQjt2sUZRyMCjAEYBKNKyxNuAGwUA8vCaBhbcSrMxviwj1JFU7Nk3NC49iqAk+FCObAu3AngfLJCDmpmjgVwNdskB5UjPgHcrvbLQXmXVwD3O1NyYGmeFkD0aF4OCmqHBPAWXhfAL4WqeuKVsFKCAAAAAElFTkSuQmCC",
// },
// {
// name: "已完成首评项目数",
// // icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAUCAYAAAC58NwRAAAAAXNSR0IArs4c6QAAAXFJREFUOE+V0kFLAkEUB/D/G9eW3UN1sFPYNaJAu2R0Coog8mq0fQH1kEVBhz5Ah6CoLhrdE/LqKQo6VZ7SKCKChKRTBRmhbq47oabsZC22h1nem/k93jCP8P0F+E2HQ1dD4NAAGqqn+TUI8YpciCVo8LOaoeoSKOR6GTOSxOFtFLD+OSFtmpI/obqfqFqZ6Wrqr8NNyJHJK4aPtNLDAue0+1vlnzkiHqG5YvYcwGhj08MUhJyuWhgrvyBjFq3uogp0AB2NbFR2o5sctfCNVxDWc1ag/xPQR0tLXqYg6HTBBMd++RXplpZK2Qg4dtq5NAiLNM3v5a6ilALBY4s4rvKKMdLWw4EjU4E0U3s462gwXQ3DMLeJsfpgmCYgsSVTLkSF0bC24r9NcWucHPA1izZnyXpg8vRIAMfjU/ZgLH4ogDNt1h4Mb8YEcLkSsgf9y+sCuNtaswd92qoAHuMb9qBnIiiA55M9e9DpnRfAe/pAAF9gqJXUYWdYUwAAAABJRU5ErkJggg==",
// },
// {
// name: "应再评项目数",
// // icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAUCAYAAAC58NwRAAAAAXNSR0IArs4c6QAAAV5JREFUOE+V0j8oxGEYwPHvo/wMjgyUslAWcTFhMRiEsHLKYDzFKZRBSskgR7mUG29QjpX86QaDwdlwLotiUYpB/gyHPDru9HsPP+c3vL+e530/T8/b+wipb31KrYJ8vAi9QE0qfYqy+vBEsHtKnpM5SS4bC1qW+8amQl26gP0vcPSSQ2fXiFxJsnKhi8PfDtvgsVo0yJZfhwQCP1XOzCn4ZNuvB0BjerO4HNxtn1FsB24vDRZNggRgpdPNXsjL/4wST7AXNEDiv+DxW0slFVDTCvoG8QjcXGS2NKc+hMVsLo0yLFsBzZNnDoHaP9CJWtRn9XDA8WsOHR8PZx+NQhcDqvQhVH3klTMRVu4fWTZGw97Ktl/VHrePyVfRr1myHwhP3xnAM1nkDJbGzw0wOFvpDCa8+waYCTY5g/6esAFCax5n0NI6b4DI7qgzcDeOGSAW9TuD0up+A1zHQwZ4B2JrgI9r4uMDAAAAAElFTkSuQmCC",
// },
// {
// name: "已完成再评项目数",
// // icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAUCAYAAAC58NwRAAAAAXNSR0IArs4c6QAAAWBJREFUOE9jZICC/1e12Rh4uDIY/jNGMjAw6ECFrzAw/l/O8OXbDEbtq79AYowg4v9jS2mGv3+3MDAwGMAMQKMvMDAz+zDKHn/KCDaZm/skHsUwvRcZfr8zZ/z/0CyX4T/DJBwmowozMuQx/n9gdpyBgcECLsNpycAgXAPhvm1hYPgOkoaDEyANPxkYGNjgQjJbGRiYRSDcv28YGJ54I2v4SUDDWwaGJ17IGr5gcZIV1El/GRjetjMwfD+G5qSHpnkM/xknEufp//mM/2+rsDOwCoGCVZ+ApksMv9+ZERtxFxmYmb3BEYeaNHgyGf7/j2FgYNCEil9nYGRcwvDly3SUpIHslP8PzP4j8xkVTsENhaclZAWvLligaBAzOIFfw9ld1igajN2O4tewar49ioawxIP4NbQ0OqNoqKnfi19DXIoHioZFc3bg12Dt6YOi4ej2Lfg1yBn7o2h4dHYjigYAb0t88hVwEBYAAAAASUVORK5CYII=",
// },
// {
// name: "再评达标项目数",
// // icon: "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAUCAYAAAC58NwRAAAAAXNSR0IArs4c6QAAAWBJREFUOE+V0k8og2EcwPHvkzVZLLm6KItEzWlclIPbdhGKcsCJwzZFdtgOK+8OimIXTjgoSrisXByUgz8nE4mmXFwlZmuaPXr3r/eZ9sZ7eN9+v/f5/J6n3/MTFJ9wWFpTFqYFjAFdxfSthF1blo1wWHzpOaG/gppszkIM6C4VqPheW8ATCYkXoVdOW7g0WVyy8ZSdHhFYlF4E0SqV1bTEJwKaPAd6S3/aWmHEU4j2Y/D4pJgLHWQAaykd9ENDfSH6SEJkTQGZ/4LkryO1O2DYDbkcHB7DQ6LiSAua9AlQN67SAQl+4Y3KWtt7vq1Os04JuPm04/rrxcUt4M5fnHE00jXMIBgHOor5eyQ7dd+sK6NhPEpAk9IYL4VEuWh5lowLfKE3BUS1RnMwOZtQwNaqwxwMTp0p4Gizzxz0D+0p4PRg1Bw4B1YUED+ZMwctrnkFPF8tm4OmzgkFvN5tK+AHKZh4TU8krdoAAAAASUVORK5CYII=",
// },
// ],
// },
// grid: {
// top: "30%",
// left: "3%",
// right: "4%",
// bottom: "3%",
// containLabel: true,
// },
// xAxis: {
// data: that.riskData1.x,
// type: "category",
// splitLine: {
// show: false,
// },
// alignTicks: true,
// axisLine: {
// show: true,
// lineStyle: {
// color: "rgba(0, 80, 148, .8)",
// },
// },
// axisTick: {
// show: false,
// },
// axisLabel: {
// color: "#fff",
// fontSize: 22,
// rotate: 20,
// },
// },
// yAxis: {
// type: "value",
// splitLine: {
// show: true,
// lineStyle: {
// color: "rgba(104, 180, 221, .2)",
// type: "dashed",
// },
// },
// axisLine: {
// show: false,
// },
// axisTick: {
// show: false,
// },
// axisLabel: {
// color: "#fff",
// fontSize: 22,
// },
// },
// series: [
// {
// type: "bar",
// name: "应首评项目数",
// barWidth: 10,
// // barGap: "600%",
// data: that.riskData1.y1,
// // label: {
// // show: true,
// // position: "top",
// // formatter: " ",
// // width: 6,
// // height: 6,
// // borderRadius: 50,
// // borderWidth: 6,
// // borderColor: "#40A9FF",
// // backgroundColor: "#fff",
// // },
// itemStyle: {
// color: {
// x: 0,
// y: 0,
// x2: 0,
// y2: 1,
// colorStops: [
// {
// offset: 0,
// color: "#40A9FF", // 0% 处的颜色
// },
// {
// offset: 1,
// color: "#092351", // 100% 处的颜色
// },
// ],
// },
// },
// },
// {
// type: "bar",
// name: "已完成首评项目数",
// // barGap: "600%",
// barWidth: 10,
// data: that.riskData1.y2,
// // label: {
// // show: true,
// // position: "top",
// // formatter: " ",
// // width: 6,
// // height: 6,
// // borderRadius: 50,
// // borderWidth: 6,
// // borderColor: "#58F7DF",
// // backgroundColor: "#fff",
// // },
// itemStyle: {
// color: {
// x: 0,
// y: 0,
// x2: 0,
// y2: 1,
// colorStops: [
// {
// offset: 0,
// color: "#58F7DF", // 0% 处的颜色
// },
// {
// offset: 1,
// color: "#092351", // 100% 处的颜色
// },
// ],
// },
// },
// },
// {
// type: "bar",
// name: "应再评项目数",
// // barGap: "600%",
// barWidth: 10,
// data: that.riskData1.y3,
// // label: {
// // show: true,
// // position: "top",
// // formatter: " ",
// // width: 6,
// // height: 6,
// // borderRadius: 50,
// // borderWidth: 6,
// // borderColor: "#B78CFF",
// // backgroundColor: "#fff",
// // },
// itemStyle: {
// color: {
// x: 0,
// y: 0,
// x2: 0,
// y2: 1,
// colorStops: [
// {
// offset: 0,
// color: "#B78CFF", // 0% 处的颜色
// },
// {
// offset: 1,
// color: "#092351", // 100% 处的颜色
// },
// ],
// },
// },
// },
// {
// type: "bar",
// name: "已完成再评项目数",
// // barGap: "600%",
// barWidth: 10,
// data: that.riskData1.y4,
// // label: {
// // show: true,
// // position: "top",
// // formatter: " ",
// // width: 6,
// // height: 6,
// // borderRadius: 50,
// // borderWidth: 6,
// // borderColor: "#FFE036",
// // backgroundColor: "#fff",
// // },
// itemStyle: {
// color: {
// x: 0,
// y: 0,
// x2: 0,
// y2: 1,
// colorStops: [
// {
// offset: 0,
// color: "#FFE036", // 0% 处的颜色
// },
// {
// offset: 1,
// color: "#092351", // 100% 处的颜色
// },
// ],
// },
// },
// },
// {
// type: "bar",
// name: "再评达标项目数",
// // barGap: "600%",
// barWidth: 10,
// data: that.riskData1.y5,
// // label: {
// // show: true,
// // position: "top",
// // formatter: " ",
// // width: 6,
// // height: 6,
// // borderRadius: 50,
// // borderWidth: 6,
// // borderColor: "#7784FF",
// // backgroundColor: "#fff",
// // },
// itemStyle: {
// color: {
// x: 0,
// y: 0,
// x2: 0,
// y2: 1,
// colorStops: [
// {
// offset: 0,
// color: "#7784FF", // 0% 处的颜色
// },
// {
// offset: 1,
// color: "#092351", // 100% 处的颜色
// },
// ],
// },
// },
// },
// ],
// };
that.right4Chart.setOption(option);
tools.loopShowTooltip(that.right4Chart, option, {
interval: 2000,
loopSeries: true,
});
},
clickItem (index, a) {
let that = this
const angle = 360 / this.investData.investList.length;
this.witchs = index;
this.inner = index;
this.innerDeg = this.witchs * angle;
this.lpRotate();
if (a) {
that.right3ChartIndex = a
that.right4Chart && that.right4Chart.dispose()
that.initChartR4()
}
},
lpRotate () {
const angle = 360 / this.investData.investList.length;
this.witchs = this.inner % this.investData.investList.length;
this.innerDeg = this.inner * angle;
},
// 转盘计算角度
filterLpData () {
const angle = 360 / this.investData.investList.length;
for (let i in this.investData.investList) {
this.investData.investList[i].deg = i * angle;
this.$set(this.investData.investList, i, {
...this.investData.investList[i],
deg: i * angle,
});
}
},
// 4秒定时器
time4s () {
let that = this;
// 4秒定时器
this.time1 = setInterval(() => {
that.industryProportion == 1
? (that.industryProportion = 2)
: (that.industryProportion = 1);
that.leftEcharts1.dispose();
that.leftEcharts2.dispose();
that.leftEcharts3.dispose();
that.leftEcharts4.dispose();
that.leftEcharts1Fun();
that.leftEcharts2Fun();
that.leftEcharts3Fun();
that.leftEcharts4Fun();
}, 4000);
},
// 针对投前产业布局分析的定时器
timeNs () {
let that = this;
this.time2 = setInterval(() => {
if (that.industryLayout < 3) {
that.industryLayout = that.industryLayout + 1;
} else {
that.industryLayout = 0;
}
this.time2 && clearInterval(this.time2);
this.timeNs();
that.leftEcharts5.dispose();
that.leftEcharts5Fun();
}, left1[that.industryLayout].length * 2000);
},
// 主辅业占比点击方法
industryProportionChange (e) {
let that = this;
this.industryProportion = e;
this.time1 && clearInterval(this.time1);
that.leftEcharts1.dispose();
that.leftEcharts2.dispose();
that.leftEcharts3.dispose();
that.leftEcharts4.dispose();
that.leftEcharts1Fun();
that.leftEcharts2Fun();
that.leftEcharts3Fun();
that.leftEcharts4Fun();
this.time4s();
},
// 产业布局分析点击方法
industryLayoutChange (e) {
this.industryLayout = e;
this.time2 && clearInterval(this.time2);
this.leftEcharts5.dispose();
this.timeNs();
this.leftEcharts5Fun();
},
// 项目阶段分析鼠标经过方法
projectNum2Fun (e) {
this.projectNum2 = e
this.projectNum2Stop = false
},
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;
}
},
leftEcharts1Fun () {
let that = this;
this.leftEcharts1 = echarts.init(this.$refs["leftEcharts1"]);
if (left5[1].y == 0 || left5[0].y == 0 || left6[0].y == 0 || left6[1].y == 0) {
return
}
option = {
title: {
text: that.industryProportion == 1 ? that.sumPercent(left5[1].y, left5[0].y) : that.sumPercent(left6[0].y, left6[1].y),
x: "center",
y: "center",
textStyle: {
fontWeight: "normal",
color: "#68BDFF",
fontSize: "20",
fontFamily: 'Microsoft YaHei'
},
},
color: ["#68BDFF", "#254F7F"],
series: [
{
name: "Line 1",
type: "pie",
clockWise: true,
radius: ["80%", "100%"],
itemStyle: {
normal: {
label: {
show: false,
},
labelLine: {
show: false,
},
},
},
hoverAnimation: false,
data: [
{
value: that.industryProportion == 1 ? left5[1].y : left6[0].y,
name: "01",
itemStyle: {
normal: {
label: {
show: false,
},
labelLine: {
show: false,
},
},
},
},
{
name: "02",
value: that.industryProportion == 1 ? left5[0].y : left6[1].y,
},
],
},
],
};
//注册
that.leftEcharts1.setOption(option);
},
leftEcharts2Fun () {
let that = this;
this.leftEcharts2 = echarts.init(this.$refs["leftEcharts2"]);
let nameList = ["a"];
let valueList = that.industryProportion == 1 ? [left5[1].y] : [left6[0].y];
let total = that.industryProportion == 1 ? left5[1].y + left5[0].y : left6[0].y + left6[1].y
var category = nameList.map((item, index) => {
return {
value: valueList[index],
itemStyle: {
color: new echarts.graphic.LinearGradient(
1,
0,
0,
1,
[
{
offset: 0,
color: "#40A9FF50",
},
{
offset: 1,
color: "#40A9FF",
},
],
false
),
},
};
});
var totalList = [];
var totalBorderList = [];
nameList.map((item, index) => {
totalList.push({
value: total,
itemStyle: {
color: "rgba(51, 147, 236, 0.29)",
},
});
totalBorderList.push({
value: total,
itemStyle: {
borderColor: "rgba(51, 147, 236, 0.29)",
color: "transparent",
},
});
});
var datas = [];
category.forEach((value) => {
datas.push(value.value);
});
option = {
// backgroundColor: 'rgb(231,238,249)',
xAxis: {
max: total,
splitLine: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
axisTick: {
show: false,
},
},
grid: {
left: "0%",
top: "15%", // 设置条形图的边距
right: "19%",
bottom: "5%",
},
yAxis: [
{
type: "category",
inverse: false,
data: nameList,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
},
],
series: [
{
// 内
type: "bar",
barWidth: 16,
barGap: "20%",
silent: true,
data: category,
z: 1,
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
1,
0,
0,
1,
[
{
offset: 0,
color: "rgba(81, 193, 156, 1)",
},
{
offset: 1,
color: "rgba(234, 177, 100, 1)",
},
],
false
),
},
},
animationEasing: "elasticOut",
},
{
name: that.industryProportion == 1 ? '主业' : '新建',
// 分隔
type: "pictorialBar",
itemStyle: {
normal: {
color: "#143362",
},
},
symbolRepeat: "fixed",
symbolMargin: 8,
symbol: "rect",
symbolClip: false,
symbolSize: [4, 20],
symbolPosition: "start",
symbolOffset: [0, -2],
symbolBoundingData: total,
data: [total, total, total, total],
z: 2,
animationEasing: "elasticOut",
},
{
// label
type: "pictorialBar",
symbolBoundingData: total,
itemStyle: {
normal: {
color: "none",
},
},
label: {
normal: {
formatter: (params) => {
var text;
text = `${params.value}亿`;
return text;
},
textStyle: {
// 图列内容样式
fontSize: "20",
fontWeight: 800,
fontFamily: 'Microsoft YaHei'
},
position: "right",
offset: [0, -3],
distance: 10, // 向右偏移位置
show: true,
color: "#68BDFF",
},
},
data: datas,
z: 0,
},
{
name: that.industryProportion == 1 ? '主业' : '新建',
type: "bar",
barGap: "-130%", // 设置外框粗细
data: totalBorderList,
barWidth: 26,
itemStyle: {
normal: {
// barBorderRadius: [5, 5, 5, 5],
borderWidth: 1, // 边框宽度
borderColor: "rgb(51, 147, 236)", // 边框色
color: "rgb(231,238,249)",
},
},
z: 0,
},
],
};
that.leftEcharts2.on('click', (params) => {
that.projectNum = that.industryProportion == 1 ? 2142 : 2143
that.showChartLTipDouble(params.seriesName, 'left', '投资计划分析', params.seriesName, '', '')
})
that.leftEcharts2.setOption(option);
},
leftEcharts3Fun () {
let that = this;
this.leftEcharts3 = echarts.init(this.$refs["leftEcharts3"]);
if (left5[0].y == 0 || left5[1].y == 0 || left6[0].y == 0 || left6[1].y == 0) {
return
}
option = {
title: {
text: that.industryProportion == 1 ? that.sumPercent(left5[0].y, left5[1].y) : that.sumPercent(left6[1].y, left6[0].y),
x: "center",
y: "center",
textStyle: {
fontWeight: "normal",
color: "#68BDFF",
fontSize: "20",
fontFamily: 'Microsoft YaHei'
},
},
color: ["#5BDCC8", "#254F7F"],
series: [
{
name: "Line 1",
type: "pie",
clockWise: true,
radius: ["80%", "100%"],
itemStyle: {
normal: {
label: {
show: false,
},
labelLine: {
show: false,
},
},
},
hoverAnimation: false,
data: [
{
value: that.industryProportion == 1 ? left5[0].y : left6[1].y,
name: "01",
itemStyle: {
normal: {
label: {
show: false,
},
labelLine: {
show: false,
},
},
},
},
{
name: "02",
value: that.industryProportion == 1 ? left5[1].y : left6[0].y,
},
],
},
],
};
//轮播
// tools.loopShowTooltip(leftEcharts1, option, {
// interval: 2000,
// loopSeries: true,
// });
//注册
that.leftEcharts3.setOption(option);
},
leftEcharts4Fun () {
let that = this;
this.leftEcharts4 = echarts.init(this.$refs["leftEcharts4"]);
let nameList = ["a"];
let valueList = that.industryProportion == 1 ? [left5[0].y] : [left6[1].y];
let total = that.industryProportion == 1 ? (left5[1].y + left5[0].y) : (left6[0].y + left6[1].y)
var category = nameList.map((item, index) => {
return {
value: valueList[index],
itemStyle: {
color: new echarts.graphic.LinearGradient(
1,
0,
0,
1,
[
{
offset: 0,
color: "#5BDCC850",
},
{
offset: 1,
color: "#5BDCC8",
},
],
false
),
},
};
});
var totalList = [];
var totalBorderList = [];
nameList.map((item, index) => {
totalList.push({
value: total,
itemStyle: {
color: "rgba(51, 147, 236, 0.29)",
},
});
totalBorderList.push({
value: total,
itemStyle: {
borderColor: "rgba(51, 147, 236, 0.29)",
color: "transparent",
},
});
});
var datas = [];
category.forEach((value) => {
datas.push(value.value);
});
option = {
// backgroundColor: 'rgb(231,238,249)',
xAxis: {
max: total,
splitLine: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: false,
},
axisTick: {
show: false,
},
},
grid: {
left: "0%",
top: "15%", // 设置条形图的边距
right: "19%",
bottom: "5%",
},
yAxis: [
{
type: "category",
inverse: false,
data: nameList,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
show: false,
},
},
],
series: [
{
// 内
type: "bar",
barWidth: 16,
barGap: "20%",
silent: true,
data: category,
z: 1,
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
1,
0,
0,
1,
[
{
offset: 0,
color: "rgba(81, 193, 156, 1)",
},
{
offset: 1,
color: "rgba(234, 177, 100, 1)",
},
],
false
),
},
},
animationEasing: "elasticOut",
},
{
name: that.industryProportion == 1 ? '辅业' : '续建',
// 分隔
type: "pictorialBar",
itemStyle: {
normal: {
color: "#143362",
},
},
symbolRepeat: "fixed",
symbolMargin: 8,
symbol: "rect",
symbolClip: false,
symbolSize: [4, 20],
symbolPosition: "start",
symbolOffset: [0, -2],
symbolBoundingData: total,
data: [total, total, total, total],
z: 2,
animationEasing: "elasticOut",
},
{
// label
type: "pictorialBar",
symbolBoundingData: total,
itemStyle: {
normal: {
color: "none",
},
},
label: {
normal: {
formatter: (params) => {
var text;
text = `${params.value}亿`;
return text;
},
textStyle: {
// 图列内容样式
fontSize: "20",
fontWeight: 800,
fontFamily: 'Microsoft YaHei'
},
position: "right",
offset: [0, -3],
distance: 10, // 向右偏移位置
show: true,
color: "#68BDFF",
},
},
data: datas,
z: 0,
},
{
name: that.industryProportion == 1 ? '辅业' : '续建',
type: "bar",
barGap: "-130%", // 设置外框粗细
data: totalBorderList,
barWidth: 26,
itemStyle: {
normal: {
// barBorderRadius: [5, 5, 5, 5],
borderWidth: 1, // 边框宽度
borderColor: "rgb(51, 147, 236)", // 边框色
color: "rgb(231,238,249)",
},
},
z: 0,
},
],
};
that.leftEcharts4.on('click', (params) => {
that.projectNum = that.industryProportion == 1 ? 2142 : 2143
that.showChartLTipDouble(params.seriesName, 'left', '投资计划分析', params.seriesName, '', '')
})
//注册
that.leftEcharts4.setOption(option);
},
// 计算百分比
sumPercent (a, b) {
return (a / (a + b) * 100).toFixed(2) + '%'
},
// 项目风险分析移出
echartR2FdOut () {
let that = this
setTimeout(() => {
that.right1Chart.dispatchAction({
type: "showTip",
dataIndex: (that.right3ChartIndex % 6),
seriesIndex: 0,
});
})
},
leftEcharts5Fun () {
let that = this;
this.leftEcharts5 = echarts.init(this.$refs["leftEcharts5"]);
let dataList = [];
left1[that.industryLayout].forEach((item, index) => {
dataList[index] = {
value: item.y,
name: item.name,
itemStyle: {
normal: {
color: new echarts.graphic.LinearGradient(1, 0, 0, 1, [
{
offset: 0,
color: commonColor2[index], //顶部颜色
},
{
offset: 1,
color: commonColor[index], // 底部颜色
},
]),
borderColor: commonColor[index],
borderWidth: 3,
},
},
};
});
let option = {
tooltip: {
trigger: "item",
formatter: function (e) {
return `${e.name} ${e.percent}%
${e.value}亿 ${left1[that.industryLayout][e.dataIndex].num}个`;
},
backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色
borderColor: '#135C8A00',
textStyle: {
color: "#fff",
fontStyle: "normal", // 文字字体的风格('normal',无样式;'italic',斜体;'oblique',倾斜字体)
fontWeight: "normal", // 文字字体的粗细('normal',无样式;'bold',加粗;'bolder',加粗的基础上再加粗;'lighter',变细;数字定义粗细也可以,取值范围100至700)
fontSize: "24", // 文字字体大小
fontFamily: 'Microsoft YaHei'
},
confine: true
},
legend: {
top: "center",
orient: "vertical",
left: "65%",
textStyle: {
color: "#fff",
fontSize: 24,
padding: [0, 20],
fontFamily: 'Microsoft YaHei'
},
},
graphic: {
elements: [
{
type: "image", //需要填充图片,配置image,如果不需要图片可以配置其他的, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
style: {
image: "./img/whiteCircle.png", //这里添加图片地址
width: 80,
height: 80,
},
left: "37.7%", //
top: "middle", //配置图片居中
},
],
},
series: [
{
name: "",
type: "pie",
radius: ["20%", "90%"],
center: ["41%", "50%"],
labelLine: {
normal: {
lineStyle: {
width: 1,
},
},
},
label: {
normal: {
show: false,
textStyle: {
fontSize: 28,
color: "#fff",
},
},
},
roseType: "area",
data: dataList,
},
{
tooltip: {
show: false,
},
type: "pie",
radius: ["90%", "92%"],
center: ["41%", "50%"],
hoverAnimation: false,
name: "",
data: [
{
name: "",
value: 0,
itemStyle: {
normal: {
color: "#345189",
},
},
},
],
},
],
};
that.leftEcharts5.on('click', (params) => {
if (params.name) {
let type = ''
switch (that.industryLayout) {
case 0: type = that.fourList[0].mdnb_textfield1
break;
case 1: type = that.fourList[1].mdnb_textfield1
break;
case 2: type = that.fourList[2].mdnb_textfield1
break;
case 3: type = that.fourList[3].mdnb_textfield1
break;
}
that.showChartLTipDouble(params.name, 'left', '产业布局分析', type, params.name, '', '', '', '', '', '', 215)
}
})
//轮播
tools.loopShowTooltip(that.leftEcharts5, option, {
interval: 2000,
loopSeries: true,
});
//注册
that.leftEcharts5.setOption(option);
},
leftEcharts6Fun () {
let that = this;
this.leftEcharts6 = echarts.init(this.$refs["leftEcharts6"]);
var dataArr = left16[3] * 100
// var dataArr = 52.5
let option = {
tooltip: {
formatter: "{a}
{b} : {c}%",
},
// 配置图片相关
graphic: {
elements: [{
type: 'image',//需要填充图片,配置image,如果不需要图片可以配置其他的, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
style: {
image: './img/dashboard2.png', //这里添加图片地址
width: 480,
height: 480
},
left: 'center',//
top: 'middle' //配置图片居中
}]
},
series: [
{
name: "内部进度条",
type: "gauge",
center: ['50%', '50%'],
radius: "33%",
splitNumber: 10,
axisLine: {
lineStyle: {
color: [
[dataArr / 100, "rgba(0,0,0,0)"],
[1, "rgba(0,0,0,0)"],
],
width: 1,
},
},
axisLabel: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: false,
},
itemStyle: {
color: "#ffffff",
},
detail: {
formatter: function (value) {
// return (value).toFixed(2) + '%'
},
offsetCenter: [0, 100],
textStyle: {
padding: [0, 0, 0, 0],
fontSize: 42,
color: "#58F7DF",
},
},
title: {
//标题
show: false,
offsetCenter: [0, 180], // x, y,单位px
textStyle: {
color: "#fff",
fontSize: 28, //表盘上的标题文字大小
fontWeight: 400,
fontFamily: "MicrosoftYaHei",
},
},
data: [
{
name: `${that.numFormat(that.yuanChange(left16[4]))}亿
总额度`,
value: 100
},
],
pointer: {
show: true,
length: "175%",
// radius: "80%",
width: 30, //指针粗细
// icon: 'path://M2090.36389,615.30999 L2090.36389,615.30999 C2091.48372,615.30999 2092.40383,616.194028 2092.44859,617.312956 L2096.90698,728.755929 C2097.05155,732.369577 2094.2393,735.416212 2090.62566,735.56078 C2090.53845,735.564269 2090.45117,735.566014 2090.36389,735.566014 L2090.36389,735.566014 C2086.74736,735.566014 2083.81557,732.63423 2083.81557,729.017692 C2083.81557,728.930412 2083.81732,728.84314 2083.82081,728.755929 L2088.2792,617.312956 C2088.32396,616.194028 2089.24407,615.30999 2090.36389,615.30999 Z',
// icon: 'image://data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7'
// icon: 'image://data:image/png;base64,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',
// icon: 'image://data:image/png;base64,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',
// icon: 'image://data:image/png;base64,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',
// icon: 'image://data:image/png;base64,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',
// icon: 'image://data:image/png;base64,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',
// icon: 'image://data:image/png;base64,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',
icon: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAACLCAYAAACDZaLiAAAACXBIWXMAAAsTAAALEwEAmpwYAAASkWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0wOC0yMVQxMDoyNDoyOCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMy0wOC0zMVQxNzo0NDozNyswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDgtMzFUMTc6NDQ6MzcrMDg6MDAiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjFkOTRjNWExLWE1M2MtZTM0NC1iODI5LTQyMzczNTgzYTFjOCIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjRkYTYyM2JjLTlkMzAtNGM0YS04NDVlLThjOGVhOTQ2MTgyMiIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjJkOTAwNDVjLWEzMDUtOWM0NC05YjkwLWVlNmMyMDk5ZWRlMSIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIGV4aWY6Q29sb3JTcGFjZT0iNjU1MzUiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIxMzUwIiBleGlmOlBpeGVsWURpbWVuc2lvbj0iNzY4Ij4gPHBob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8cmRmOkJhZz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSIxNC42NCUiIHBob3Rvc2hvcDpMYXllclRleHQ9IjE0LjY0JSIvPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9IuaAu+mineW6pjoxLDgzNC41MeS6vyIgcGhvdG9zaG9wOkxheWVyVGV4dD0i5oC76aKd5bqmOjEsODM0LjUx5Lq/Ii8+IDxyZGY6bGkgcGhvdG9zaG9wOkxheWVyTmFtZT0iMCIgcGhvdG9zaG9wOkxheWVyVGV4dD0iMCIvPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9IjUwIiBwaG90b3Nob3A6TGF5ZXJUZXh0PSI1MCIvPiA8cmRmOmxpIHBob3Rvc2hvcDpMYXllck5hbWU9IjEwMCIgcGhvdG9zaG9wOkxheWVyVGV4dD0iMTAwIi8+IDxyZGY6bGkgcGhvdG9zaG9wOkxheWVyTmFtZT0i5oC76aKd5bqmOjEsMzIzLjg15Lq/IiBwaG90b3Nob3A6TGF5ZXJUZXh0PSLmgLvpop3luqY6MSwzMjMuODXkur8iLz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSIxNC42NCUg5ou36LSdIiBwaG90b3Nob3A6TGF5ZXJUZXh0PSIxNC42NCUiLz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSIwIiBwaG90b3Nob3A6TGF5ZXJUZXh0PSIwIi8+IDxyZGY6bGkgcGhvdG9zaG9wOkxheWVyTmFtZT0iMTAwIiBwaG90b3Nob3A6TGF5ZXJUZXh0PSIxMDAiLz4gPHJkZjpsaSBwaG90b3Nob3A6TGF5ZXJOYW1lPSI1MCIgcGhvdG9zaG9wOkxheWVyVGV4dD0iNTAiLz4gPC9yZGY6QmFnPiA8L3Bob3Rvc2hvcDpUZXh0TGF5ZXJzPiA8cGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8cmRmOkJhZz4gPHJkZjpsaT4zRTQ2QkY1QTgzOTA3QUZBMDQ5RDgzRjAzM0UyQzdGMTwvcmRmOmxpPiA8cmRmOmxpPjQ1OUFGREQwNEZEQzdDNzFGRjEwMzU0MkY5QzJDMUI3PC9yZGY6bGk+IDxyZGY6bGk+Rjk5RDcwODI3NEUyNDQ0MDMxOTUwNzY1RDJBMUIzRjY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MDdjMGFkMjQtNzY2NS0zMDRiLTk5OWMtYzA1NGM1MDNhMzMxPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjEwMGZjYzJkLTJjNTYtYzI0Mi05Y2RiLTFjYmViMDk2MjNkNjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxMDMyMzhkNS0yZmQxLTExN2ItYjcwMy1hNWYyNDJlOTg0OGI8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NWZkZmMyNmYtMWIxMi0xMDQyLThjZDMtZGM2ZmEzM2U5NWViPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjY2Mzg4N2YzLTMxZTktMTE3Yi05NjA5LWY1ZjVhMzE4NDU3ZDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpjNmE1MjUzNC0yZmUzLTExN2ItYjcwMy1hNWYyNDJlOTg0OGI8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTMyMGM2YzMtMjhjZC00ZDQyLWI3MmQtYTEwNjU3YWU0NzRjPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmVhMzQ3NmI1LTBiM2QtYzU0MS1hMGE3LWU2YTc1ZmY5ODQ2NjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmOTUxNjVhYS03ZjkxLTVlNGMtOTZmMS05ZDk2ZTBjMmU3MDk8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjEzMmZlMmM1LWUzYTEtNGQxZi1iM2FkLTdhOThiMDBjNmZiYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NDM2RDhENThENkJBMTFFOEI3NkRGMDEwNEQ1NkI1QUU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjU1MUYzQTlGRUU2ODExRTlCMjIxODkyN0U0QzNCNjBDPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpFQzhEMUY5Q0VENTkxMUU4QTgzQkI3MEQ1NDVGMTUwRTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6RkVCNjZBOEIyRDc1MTFFODkyQUY5ODgyMDYxRDhEQ0Q8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmI2NjNiMzAzLTA2ODYtYjI0NS04ZGM0LTgwMzA5Nzk4MTNmZjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6Y2E0NGYxY2UtMTAyZC00NWZmLTlhODAtYjkzN2I1NmIyZDcxPC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MmQ5MDA0NWMtYTMwNS05YzQ0LTliOTAtZWU2YzIwOTllZGUxIiBzdEV2dDp3aGVuPSIyMDIzLTA4LTIxVDEwOjI0OjI4KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpkNzQxZTM4ZS02ZmI2LTE3NGItYjBlNS1jODUyYmZjYTQ0OTgiIHN0RXZ0OndoZW49IjIwMjMtMDgtMjFUMTA6Mzc6MzcrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjFkOGMwN2U4LThkNGUtODc0Yy1hNjhiLWU2ZjQ3Y2UwZGExOCIgc3RFdnQ6d2hlbj0iMjAyMy0wOC0zMVQxNzo0NDozNyswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MWQ5NGM1YTEtYTUzYy1lMzQ0LWI4MjktNDIzNzM1ODNhMWM4IiBzdEV2dDp3aGVuPSIyMDIzLTA4LTMxVDE3OjQ0OjM3KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxZDhjMDdlOC04ZDRlLTg3NGMtYTY4Yi1lNmY0N2NlMGRhMTgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MmQ5MDA0NWMtYTMwNS05YzQ0LTliOTAtZWU2YzIwOTllZGUxIiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MmQ5MDA0NWMtYTMwNS05YzQ0LTliOTAtZWU2YzIwOTllZGUxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Gs61pAAABElJREFUaN7tl81qXEcQhb8zagiKcQgGBWcRcIRjiKXL3JWfJU8YCPgN/AAG7bKIQbvson3wbuaeLLqrf64ECcTLno00d/qerq4651R1ss2X+qQ/+QsQEKD/5X+6Z/ExKf75lxeOwO/t935dezdt5R9hsEFluVXfsfgF84fECYQLoMivICFD2kqosoZ4+n0F7yzeCD7lZ4rty4bCMskFxLilYHdSmxW0GH+qh5QfrUvnmkbVH+OF8v0H4AWwGP1Ws2XG/FkkD89bYrdYZtaSncUCDetUk28gbeVZy3fOhmsOfZQAtOQAnOskhqgsSOdA91P8qbQAeAU8B/2d13drCmbaorytPjkqZapIrOV3AbdsfJS6vR1kEencUcJSx2mBeA5cx0sWN4KP7gof1ECQzlKERkec2HoxHNRyczsm3vUdG9J5ixP0la55WJuCBLDUXAng0AJR4Vl9ued/3vG4+74MZOyj9FPVrIoAkZMfmTRcCb0EHvpFAZnOVj1FFnghkX0BumVXOfAi6WGnlSynU5WOqhdkwzz8BP46G0BPwsNi86EWMwqAyzHLBlW7KmQtR1aRT1HF0nimgegdzzLxwGFHa4jTFlJQk8WDZTV3q8e0Vd2jpG2lo01oVfDW5gI4U42VUEARt/beE7TYe5wugdfI9+yiS6dCPLnIKeftOza+l8Bb5FNYNbrF1n2ULNKTjxkZbQpYRxKzUwgL8N6MWq5yqqfMkR3DxU3tGv1xl76XRWNJZx26blW5sQ7tT506cj4Wy5WfqGjz1POx2dEa7qaukt2aa6xnwOfmaUUBgV4Cu5T8JkSXfzL04HAQvgHdtVS6I23b/QYrFZ2Ao0d6YLty67t7pIDwxNx5iudvLVfVOUaDWdQIHhaUSdu18HVPVKnocmg6XsbdRDpFLmrxdGx66+aOMgLQXGZp6c4bpVNoUsZImCNPMHZfVcGV4SUuRqmdnwE/At8MEG4xhobDXzCLxYPKunS2+mnruB/vGiX6pqNaBMwH1WrG7rkkK/0QozZJeIh2XwQHGBCSUuTLjcTR+ip3BlUuKnNGHqnGGevYuotbzqqrdIXJz94CF1hnxh6gbzGvmhWp+9t38BLhJpAvMa+B+9YDcmmOj5sxjzt97xSlwWQwusgozLeQ3QXTsbznnSNQLeD3RA/IstOxiaDTXDdR17FX/fhBlVWeth0NxMMo+tSwzGOK1PkjBuRkuAmNubsDVNoOBhk/GaFr0DPjz+VScfhZ8NVmP3HF2Vl2d+Eo3w4Uo0zOnrSWvDW/8BPXIDdCj7ceLYi7IO3acnOgTRIaZbSXUxv8ljog1+R3w3u+C3jwNMuDcVfFOg+BKbusj50ThH0DqpeLrSNt2FCUIMbTcqnQ1SN78a67eXfKXcUB0q8vvthFOC6vE2yCTbAJNsEm2ASbYBNsgk2wCTbBJtgEm2ATbIJNsAk2wSbYBJtgE2yC/a/PP1AURYLH/SiuAAAAAElFTkSuQmCC',
// icon: 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAB7CAYAAABAUmGeAAABtUlEQVRYhc2YzU3DQBCFv1jIufinAU6UgxCF5EIDnJA4UQVXaqEKigAJKYKLF83as5uZ4LGyl9g7fnnvzY/tZHd3/EFZ7fT5PQ802tVAB/RaoAbotMBVATAW9osAVU4N0AG7UEC8JDfDEM6wTZZiJQ1eBjdgvebTJq4F9tNnOw9qAJnSRT1OARb10ABynhfZ0gB94dgkKcaD/FYTwC3JzTAWjk2SLsRDfOFkw5kYhsKxSdL6HtI8y/NsrucA7RaZybIAsr05QHs+Z5maA7TbvFtSFaAxVD24TcdL0tKa7W1f6VXSuq4k7XFbZdAA1W6NrbT6XJ7vS0DxlUcyN9pmTZYEFN9gZMzKoEqK9+BmqAFUBrek4s8YGbtwD/GFc/eSu1tjPZTmGRHfS0BNTsaSADU5KqCWobQGL0MGiPdgYei3lVSb57RGr6TMQ0iW/pdWtyQLIGOwdKs7redX+tQ8p9UC+8Yo54+lMcrJAJYMpTV4GYZtPHgY+nCGrsE2z2mNl+eh36ZwHkDv7VZ3Ws/z8GS8+Ag8NsAzcAA+Kxd/ALfAy078s34DPAD3wDXwBbwDb8DrdM4vVk4cSPHcEK0AAAAASUVORK5CYII=',
},
zlevel: 999,
animationDuration: 2000,
animationDurationUpdate: 2000
},
// 彩色圈圈
// {
// name: "内部阴影",
// type: "gauge",
// radius: '63%',
// center: ['50.5%', '61%'],
// splitNumber: 10,
// axisLine: {
// show: true,
// lineStyle: {
// color: [
// [
// // dataArr / 100,
// 100 / 100,
// new echarts.graphic.LinearGradient(0, 0.25, 0.75, 1, [
// {
// offset: 0,
// color: "#7CFFB2",
// },
// {
// offset: 0.5,
// color: "#58D9F9",
// },
// {
// offset: 0.7,
// color: "#FDDD60",
// },
// {
// offset: 1,
// color: "#d9333c",
// },
// ]),
// ],
// [1, "#0E4889"],
// ],
// width: 35,
// },
// },
// axisLabel: {
// show: false,
// },
// axisTick: {
// show: false,
// },
// splitLine: {
// show: false,
// },
// itemStyle: {
// show: false,
// },
// },
// 中间小白点
// {
// name: '',
// type: 'gauge',
// splitNumber: 5, //刻度数量
// min: 0,
// max: 100,
// radius: "90%",
// zlevel: 1,
// axisLine: {
// show: true,
// lineStyle: {
// width: 0,
// shadowBlur: 0,
// color: [
// [0.2, '#23AFAF'],
// [0.4, '#2270DA'],
// [0.6, '#E99D02'],
// [1, '#F45656']
// ],
// }
// },
// axisTick: {
// show: true,
// lineStyle: {
// color: 'auto',
// width: 2
// },
// length: 10,
// splitNumber: 5
// },
// splitLine: {
// show: true,
// length: -12,
// lineStyle: {
// color: 'auto',
// width: 2
// }
// },
// axisLabel: {
// show: true,
// color: "#ffffff",
// fontSize: 20,
// fontFamily: "SourceHanSansSC-Regular",
// // position: "top",
// distance: -30,
// formatter: function (v) {
// switch (v + "") {
// case "0":
// return "0";
// case "10":
// return "10";
// case "20":
// return "20";
// case "30":
// return "30";
// case "40":
// return "40";
// case "50":
// return "50";
// case "60":
// return "60";
// case "70":
// return "70";
// case "80":
// return "80";
// case "90":
// return "90";
// case "100":
// return "100";
// }
// },
// },
// pointer: { //仪表盘指针
// show: 0,
// length: '0%',
// width: 1
// },
// anchor: {
// show: true,
// showAbove: true,
// size: 30,
// itemStyle: {
// color: '#EAEBF1',
// }
// },
// detail: {
// show: false
// },
// data: []
// },
//指针上的圆
// {
// type: "pie",
// tooltip: {
// show: false,
// },
// hoverAnimation: false,
// legendHoverLink: false,
// radius: ["0%", "4%"],
// center: ['49.6%', '61%'],
// label: {
// normal: {
// show: false,
// },
// },
// labelLine: {
// normal: {
// show: false,
// },
// },
// data: [
// {
// value: 120,
// itemStyle: {
// normal: {
// color: "#f8e6a3",
// },
// },
// },
// ],
// zlevel: 99999
// },
],
};
//轮播
// tools.loopShowTooltip(leftEcharts1, option, {
// interval: 2000,
// loopSeries: true,
// });
//注册
setTimeout(() => {
option.series[0].data[0].value = dataArr
// option.series[1].axisLine.lineStyle.color[0][0] = dataArr / 100
that.leftEcharts6.setOption(option);
}, 2000)
that.leftEcharts6.setOption(option);
},
leftEcharts7Fun () {
let that = this;
this.leftEcharts7 = echarts.init(this.$refs["leftEcharts7"]);
let option = {
title: {
text: "固定资产进度分布",
textStyle: {
color: "#fff",
fontSize: 28,
fontWeight: 500,
fontFamily: "Microsoft YaHei",
},
top: "20",
left: "220",
},
textStyle: {
color: "#fff",
},
tooltip: {
show: false,
trigger: "axis",
formatter: function (params) {
var tip =
params[0].axisValue +
"
" +
params[0].marker +
params[0].data[1] +
":" +
params[0].data[2] +
"个," +
params[0].data[3] +
"亿元" +
"
" +
params[1].marker +
params[1].data[1] +
":" +
params[1].data[2] +
"个," +
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: "17%",
bottom: "-10%",
},
yAxis: {
data: ["备案类", "特别监管类"],
splitLine: {
show: false,
lineStyle: {
color: "#68b4dd66",
type: "dashed",
},
},
axisLine: {
show: false,
},
axisLabel: {
show: true,
formatter: "{value}",
textStyle: {
color: function (data) {
if (data == "特别监管类") {
return "#40A9FF";
} else if (data == "备案类") {
return "#5BDCC8";
}
},
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: "red",
width: 1,
},
},
axisTick: {
show: false, //隐藏X轴刻度
},
axisLabel: {
show: true,
textStyle: {
color: "#fff", //X轴文字颜色
fontSize: 20,
padding: [-80, 0, 0, 0],
fontFamily: "Microsoft YaHei",
},
},
},
series: [
{
name: "特别监管类",
type: "scatter",
symbol: "circle", //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
symbolSize: function (data) {
return 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 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]
},
],
};
//轮播
// tools.loopShowTooltip(leftEcharts1, option, {
// interval: 2000,
// loopSeries: true,
// });
//注册
that.leftEcharts7.setOption(option);
},
leftEcharts8Fun () {
let that = this;
this.leftEcharts8 = echarts.init(this.$refs["leftEcharts8"]);
let option = {
title: {
text: "股权类项目进度分布",
textStyle: {
color: "#fff",
fontSize: 28,
fontWeight: 500,
fontFamily: "Microsoft YaHei",
},
top: "20",
left: "220",
},
textStyle: {
color: "#fff",
},
tooltip: {
show: false,
trigger: "axis",
formatter: function (params) {
var tip =
params[0].axisValue +
"
" +
params[0].marker +
params[0].data[1] +
":" +
params[0].data[2] +
"个," +
params[0].data[3] +
"亿元" +
"
" +
params[1].marker +
params[1].data[1] +
":" +
params[1].data[2] +
"个," +
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: false,
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: "red",
width: 1,
},
},
axisTick: {
show: false, //隐藏X轴刻度
},
axisLabel: {
show: true,
textStyle: {
color: "#fff", //X轴文字颜色
fontSize: 20,
padding: [-80, 0, 0, 0],
fontFamily: "Microsoft YaHei",
},
},
},
series: [
{
name: "特别监管类",
type: "scatter",
symbol: "circle", //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
symbolSize: function (data) {
return 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 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]
},
],
};
//轮播
// tools.loopShowTooltip(leftEcharts1, option, {
// interval: 2000,
// loopSeries: true,
// });
//注册
that.leftEcharts8.setOption(option);
},
shanxiEchartsFun () {
let that = this;
let taiyuan = [112.43, 37.87, center5.filter(item => item.name == '太原市')[0].value, center5.filter(item => item.name == '太原市')[0].value2]
this.geoCoordMap = [];
/*获取地图数据*/
this.shanxiMap = echarts.init(this.$refs["shanxi"]);
echarts.registerMap("china", shanxi);
var data = center5;
var geoCoordMap = {
太原市: [112.43, 37.87],
大同市: [113.3, 40.12],
阳泉市: [113.47, 38.05],
长治市: [112.78, 36.48],
晋城市: [112.63, 35.62],
朔州市: [112.43, 39.53],
晋中市: [112.94, 37.4],
运城市: [110.97, 35.23],
忻州市: [112.53, 38.72],
临汾市: [111.4, 36.18],
吕梁市: [111.13, 37.52],
};
var convertData = function (data) {
var res = [];
for (var i = 0; i < data.length; i++) {
var geoCoord = geoCoordMap[data[i].name];
if (geoCoord) {
res.push({
name: data[i].name,
value: geoCoord.concat(data[i].value, data[i].value2),
});
}
}
return res;
};
var convertedData = [
convertData(data),
convertData(
data
.sort(function (a, b) {
return b.value - a.value;
})
.slice(0, 6)
),
];
data.sort(function (a, b) {
return a.value - b.value;
});
// 计算最大圆圈最小圆圈
let a = convertedData[0].map(item => {
return item.value[2]
})
a.sort(function (a, b) {
return a - b;
});
let maxValue = a[a.length - 1]
let minValue = a[0]
maxValue == minValue && (minValue = 0)
convertedData[0].forEach((item, index) => {
this.$set(item.value, 4, ((item.value[2] - minValue) / (maxValue - minValue)) * 60 + 20)
})
option = {
backgroundColor: "#404a5900",
animation: true,
animationDuration: 1000,
animationEasing: "cubicInOut",
animationDurationUpdate: 1000,
animationEasingUpdate: "cubicInOut",
geo: {
map: "china",
center: [112.53, 37.67],
zoom: 4.5,
label: {
emphasis: {
show: false,
},
},
roam: false,
itemStyle: {
normal: {
borderColor: "#7fb3ff",
borderWidth: 3,
areaColor: {
type: "radial",
x: 0.5,
y: 0.5,
r: 0.8,
colorStops: [
{
offset: 0,
color: "#468ff800", // 0% 处的颜色
},
{
offset: 1,
color: "#0a2c6d00", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
},
// shadowColor: 'rgba(128, 217, 248, 1)',
shadowColor: "#468ff8",
shadowOffsetX: -2,
shadowOffsetY: 2,
shadowBlur: 20,
},
emphasis: {
areaColor: {
colorStops: [
{
offset: 0,
color: "#3844aa", // 0% 处的颜色
},
{
offset: 1,
color: "#7284fc", // 100% 处的颜色
},
],
},
borderColor: "#b3baff",
borderWidth: 5,
},
},
tooltip: {
trigger: "item",
className: "custom-tooltip-box",
confine: true, // 不超出当前表
formatter: (params, ticket, callback) => {
// 清空所有轮播
for (var k in geoCoordMap) {
that.shanxiMap.dispatchAction({
type: "downplay",
name: k,
geoIndex: 0,
});
that.shanxiMap.dispatchAction({
type: "downplay",
name: k,
seriesName: params.seriesName,
});
that.shanxiMap.dispatchAction({
type: "downplay",
name: k,
seriesName: "series\u00001",
});
}
that.shanxiMap.dispatchAction({
type: "highlight",
name: params.name,
geoIndex: 0,
});
that.shanxiMap.dispatchAction({
type: "highlight",
name: params.name,
seriesName: params.seriesName,
});
that.shanxiMap.dispatchAction({
type: "highlight",
name: params.name,
seriesName: "series\u00001",
});
if (params.value && params.value[2] != 0) {
if (params.name == '太原市') {
return `