let app = new Vue({
el: "#app",
data() {
return {
config5: {
waitTime: 2000,
rowNum: 4,
header: ["单位名称", "平均工资涨幅", ''],
data: [
["山焦财务", '-12%'],
["山焦担保", '4%'],
["山焦股份", '6%'],
["山焦国华", '20%'],
["山焦国华", '9%'],
["山焦财务", '-1%'],
["山焦担保", '4%'],
["山焦股份", '6%'],
["山焦国华", '20%'],
["山焦国华", '9%']
],
align: ["center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
config1: {
waitTime: 2000,
rowNum: 1,
data: [
["山焦财务", '-12%'],
["山焦担保", '4%'],
["山焦股份", '6%'],
["山焦国华", '20%'],
["山焦国华", '9%'],
["山焦财务", '-1%'],
["山焦担保", '4%'],
["山焦股份", '6%'],
["山焦国华", '20%'],
["山焦国华", '9%']
],
align: ["center", "center"],
oddRowBGC: "#3B9DEE",
evenRowBGC: "#1E5389",
},
configLast1: {
waitTime: 2000,
header: ["项目名称"],
rowNum: 2,
data: [
["大型矿井综合掘进机器人",],
["废弃矿山遗留资源及地下空间开发利用关键技术研究",],
["遗留难采煤炭资源安全绿色高回收率开采关键技术研究与示范",],
["山西煤炭资源高效保水开采技术与示范",],
["炼焦煤采洗配销一体化关键技术研究",],
["高瓦斯矿井110工法回采工作面瓦斯与自然发火共治关键技术示范研究",],
],
align: ["center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
configLast2: {
waitTime: 2000,
header: ["合作高校"],
rowNum: 2,
data: [
["太原理工大学",],
["北京大学",],
["安徽理工大学",],
["太原理工大学",],
["中国科学技术大学",],
["太原理工大学",],
["中国矿业大学",],
],
align: ["center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
configLast3: {
waitTime: 2000,
header: ["合作类型"],
rowNum: 2,
data: [
["国家重点研发计划项目",],
["山西省揭榜招标项目",],
["山西省科技重大专项",],
["山西省揭榜招标项目",],
["山西省重点研发项目",],
["山西省重点研发项目",],
],
align: ["center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
configLast4: {
waitTime: 2000,
header: ["主要成效"],
rowNum: 2,
data: [
["综合掘进机器人系统",],
["建立废弃矿山煤层气地面抽采和废弃矿山地下空间利用先导工程",],
["遗留难采煤炭资源赋存状况的全方位勘探新技术,超前注浆封堵新材料、新装置与新工艺。",],
["底板阻水性能评价方法体系,研发承压水突水机理与岩层改性再造技术,形成了一套高效承压水上采煤保水开采方案",],
["开展煤质检测和配煤技术研究,开发配煤模型及智能配煤算法",],
["解决了瓦斯超限问题",],
],
align: ["center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
configOrg: {
waitTime: 2000,
rowNum: 2,
data: [
["西山煤电", '西山建筑', '组织更名', '2023-07-13'],
["集团本部", '财税共享服务中心', '组织更名', '2023-07-13'],
["焦煤置业", '海南科思实业有限公司', '组织停用', '2023-04-04'],
["焦煤置业", '呼和浩特市城发供热有限责任公司', '组织更名', '2023-04-04'],
["西山煤电", '房城建安有限公司', '组织停用', '2023-04-01'],
["霍州煤电", '建筑建材公司', '组织停用', '2023-03-25'],
// ["金融资本公司", '山焦担保', '组织合并', '2023-06-01'],
// ["山西焦煤", '焦炭交易中心', '组织新设', '2022-12-29'],
// ["集团本部", '综治信访中心', '组织新设', '2022-12-1'],
// ["山西焦煤", '实验室', '组织新设', '2022-07-20'],
// ["山西焦煤", '招标公司', '组织新设', '2022-05-19'],
],
align: ["center", "center", "center", "center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
configChange: {
waitTime: 2000,
header: ["姓名", "调出单位", "调入单位", "调动时间", '变动状态',],
rowNum: 6,
data: [
["段树成", '山煤国际', '招标公司', '2023-07-04', '调动完成'],
["蒲立志", '焦煤置业', '山煤国际', '2023-07-01', '调动完成'],
["侯利强", '霍州煤电', '西山煤电', '2023-07-01', '调动完成'],
["王国明", '西山煤电', '华晋焦煤', '2023-06-19', '调动完成'],
["梁婧", '西山煤电', '物资装备公司', '2023-06-01', '调动完成'],
["赵越", '山煤国际', '招标公司', '2023-06-01', '调动完成'],
["董然", '西山煤电', '人力资源公司', '2023-06-01', '调动完成'],
["解红梅", '西山煤电', '投资公司', '2023-06-01', '调动完成'],
],
align: ["center", "center", "center", "center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
configMark: {
waitTime: 2000,
header: ["单位名称", "人员数量", "月份", "预警项"],
rowNum: 6,
data: [
["西山煤电", "776", "8月", "薪资低于4000元"],
["汾西矿业", "362", "8月", "薪资低于4000元"],
["霍州煤电", "200", "8月", "薪资低于4000元"],
["山煤国际", "117", "8月", "薪资低于4000元"],
["华晋焦煤", "7", "8月", "薪资低于4000元"],
["山西焦化", "195", "8月", "薪资低于4000元"],
["销售公司", "1", "8月", "薪资低于4000元"],
["民爆公司", "1", "8月", "薪资低于4000元"],
["投资公司", "1", "8月", "薪资低于4000元"],
["金土地公司", "2", "8月", "薪资低于4000元"],
["置业公司", "2", "8月", "薪资低于4000元"],
],
align: ["center", "center", "center", "center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
config2: {
waitTime: 2000,
header: ["单位名称", "已算薪单位", "未算薪单位", "算薪进度百分比"],
rowNum: 4,
data: [
["西山煤电", '84', '0', '100%'],
["汾西矿业", '47', '0', '100%'],
["霍州煤电", '93', '0', '100%'],
["山煤国际", '53', '0', '100%'],
["华晋焦煤", '8', '0', '100%'],
],
align: ["center", "center", "center", "center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
configWarning: {
waitTime: 2000,
header: ["单位名称", "算薪进度", "算薪周期"],
rowNum: 6,
data: [
// ["西山煤电铁路公司", '未参与算薪', '2023/6'],
// ["西山煤电铁路公司", '未参与算薪', '2023/6'],
// ["西山煤电斜沟矿", '未参与算薪', '2023/6'],
// ["汾西矿业曙光煤矿", '未参与算薪', '2023/6'],
// ["山煤国际霍尔辛赫", '未参与算薪', '2023/6'],
// ["霍州煤电-辛置煤矿", '未参与算薪', '2023/6'],
// ["华晋焦煤沙曲选煤厂", '未参与算薪', '2023/6'],
],
align: ["center", "center", "center", "center", "center"],
headerBGC: "#153A62",
oddRowBGC: "#061F42",
evenRowBGC: "#0C284A",
},
fIndex: 0,
fList: [{
project: "大型矿井综合掘进机器人",
school: "太原理工大学, 北京大学",
type: "国家重点研发计划项目",
merits: "综合掘进机器人系统"
},
{
project: "废弃矿山遗留资源及地下空间开发利用关键技术研究",
school: "安徽理工大学,太原理工大学,中国科学技术大学",
type: "山西省揭榜招标项目",
merits: "建立废弃矿山煤层气地面抽采和废弃矿山地下空间利用先导工程"
},
{
project: "遗留难采煤炭资源安全绿色高回收率开采关键技术研究与示范",
school: "太原理工大学",
type: "山西省科技重大专项",
merits: "遗留难采煤炭资源赋存状况的全方位勘探新技术,超前注浆封堵新材料、新装置与新工艺。"
},
{
project: "山西煤炭资源高效保水开采技术与示范",
school: "中国矿业大学",
type: "山西省揭榜招标项目",
merits: "底板阻水性能评价方法体系,研发承压水突水机理与岩层改性再造技术,形成了一套高效承压水上采煤保水开采方案"
},
{
project: "炼焦煤采洗配销一体化关键技术研究",
school: "太原理工大学",
type: "山西省重点研发项目",
merits: "开展煤质检测和配煤技术研究,开发配煤模型及智能配煤算法"
},
{
project: "高瓦斯矿井110工法回采工作面瓦斯与自然发火共治关键技术示范研究",
school: "太原理工大学",
type: "山西省重点研发项目",
merits: "解决了瓦斯超限问题"
},
],
salaryFlag: false,
pdfFlag: true,
eChartsBig: undefined,
LineChart: undefined,
LineElse: undefined,
time2: undefined,
leftEcharts5: undefined,
mobilizeFL: undefined,
industry: {
x: ["矿井", "选煤厂", "火电厂", "清洁电厂", "焦化厂"],
y: [151, 50, 6, 32, 4]
},
twoBar: undefined,
echartTwoList: {
x: ["回采", "掘进", "开拓", "运输", "机电", "通风安全", "安拆", "露天", "其他"],
y: [11556, 15008, 6073, 10562, 8492, 10776, 1553, 119, 3668]
},
echartTwoList2: {
x: ["洗选", "化工", "民爆", "金融", "销售"],
y: [10115, 6327, 2301, 104, 2604]
},
echartsTwoBar2: {
y: ["4940", "18170", "51812", "38430", '18329', '17745', '31827'],
x: ["5年以下", "6-10年", "11-15年", "16-20年", '21-25年', '26-30年', '30年以上']
},
echartsTwoBar1: {
y: ["15990", "38872", "35952", "27063", '31424', '26099', '11401'],
x: ["30岁以下", "31-35岁", "36-40岁", "41-45岁", '46-50岁', '51-55岁', '55岁以上']
},
// organizationList: {
// x: ["集团机构数", "共享中心数", "事业部数", "二级组织数", "三级组织数", "四级组织数"],
// y: [18, 12, 5, 22, 316, 496]
// },
orgIndex: 0,
organizationList: [{
name: "职能部门",
flag: true,
value: 18
}, {
name: "共享中心",
flag: false,
value: 12
}, {
name: "事业部",
flag: false,
value: 5
}, {
name: "二级单位",
flag: false,
value: 22
}, {
name: "三级单位",
flag: false,
value: 316
}, {
name: "四级单位",
flag: false,
value: 496
},],
twoIndex: 1,
time2: 1,
time3: 1,
time4: 1,
isShowMark: false,
studioMark: false,
changeFlag: false,
mobilizeFlag: false,
warningFlag: false,
userFlag: true,
salaryIndex: 1,
sx: [],
xy: [],
fx: [],
fy1: [],
fy2: [],
fy3: [],
fy4: [],
fy5: [],
intervalL: undefined,
intervalR: undefined,
titleList: ["高校分布", "单位分布"],
titleIndex: 0,
timeTitle: null,
efficiency: null,
timeL: null,
nx1: [],
ny1: [],
nx2: [],
ny2: [],
twoChange: 0,
twoTime: null,
SAtime: null,
levelTime: null,
twoTimeIndex: 0,
saTimeIndex: 0,
levelTimeIndex: 0,
saIndex: 1,
seniorityListX: [],
seniorityListY: [],
ageListX: [],
ageListY: [],
levelListX: [],
levelListY: [],
echartsLevel: null,
levelInterval: null,
workEcharts: null,
downhole: null,
downholeIndex: 1,
downholeTime: null,
echartsMark: false,
loginInfo: {
unit: "人次",
num: 273030
},
mauInfo: {
unit: "人次",
mau: 33755
},
skillIndex: 0,
studentIndex: 2,
studentTimes: null,
studentEcharts: null,
studioTitle: "",
achievementIndex: 0,
honorIndex: 0,
listFlag: false,
listInterval: null,
HumanResourcesList: [{
key: "优化池",
value: 276,
image: "./images/top-1.png",
}, {
key: "缓冲池",
value: 3733,
image: "./images/top-3.png",
}, {
key: "待岗池",
value: 5923,
image: "./images/top-4.png",
}, {
key: "共享池",
value: 300,
image: "./images/top-2.png",
},],
schoolList1: [{
name: "实习实训高校",
image: "./images/newImage/school.png",
value: 35,
unit: "所",
style: {
color: "#65FAFF"
}
}, {
name: "实习实训",
image: "./images/newImage/pink.png",
value: 1714,
unit: "人",
style: {
color: "#EC8AED"
}
},],
schoolList2: [{
name: "产学研合作高校",
image: "./images/newImage/yellow.png",
value: 7,
unit: "所",
style: {
color: "#FF9915"
}
}, {
name: "产学研成果",
image: "./images/newImage/green.png",
value: 120,
unit: "个",
style: {
color: "#39F656"
}
},],
orgChange: true,
SalaryCalProgDetail: true,
imageList: ["./images/newImage/ppt1.png", "./images/newImage/ppt2.png", "./images/newImage/ppt3.png"],
imageIndex: 0,
imageFlag: false,
pageFlag: true,
ml: "ml0",
optimize: [{
key: "双选岗位",
value: 24,
unit: "个"
}, {
key: "优化人数",
value: 14,
unit: "人"
}],
optimizeValue: 4.8,
PersonnelResource: [{
name: "用工总数",
value: 213185,
color: "#92B6FF",
src: "./images/newImage/user.png"
}, {
name: "男性员工",
value: 171886,
color: "#FFDA92",
src: "./images/newImage/man.png"
}, {
name: "女性员工",
value: 41299,
color: "#89FFAC",
src: "./images/newImage/woman.png"
}],
downholeObj: {
key: "选拔培养",
value: 2807
},
staffList: {
coal: 97395,
noCoal: 81766
},
selectFlag: false,
selectInfo: {
total: "08",
average: "08"
},
selectType: "total",
markStyle: {
position: "absolute",
top: "13%",
right: "21%",
},
newSkillList: [],
dataFlag: true,
isShowRequest: false,
isShowPage: true,
industryEcharts: null,
userListX: [],
userListy1: [],
userListy2: [],
userListy3: [],
userIndex: 0,
timeUserList: null,
stereoscopic: undefined,
imageUrl: "./pdf/1.png",
defeat: 0,
showChange: false,
fetchIndex: 0,
employsNums: 15308,
selectTraining: 2807,
technical: null,
}
},
beforeCreate() {
},
created() {
let time = new Date().getMonth() - 1
if(time <= 9){
time = "0" + time
} else {
time = time.toString()
}
this.selectInfo = {
total: time,
average: time
}
},
watch: {
imageIndex() {
let that = this
if (this.imageIndex == this.imageList.length) {
setTimeout(() => {
this.echartsLevel.dispose()
let level = this.$refs.level
let sum = 0
levelList.y.forEach(item => {
sum = sum + item
})
this.initLineElseEcharts(level, { x: this.levelListX[0], y: this.levelListY[0] }, sum)
this.mapChart.dispose()
let el = this.$refs.container
this.initProvinceChart(el)
this.studentEcharts.dispose()
let student = this.$refs.student
this.initEchartsBar(student, schoolList, "#07ecd9")
})
this.imageIndex = 0
this.imageFlag = false
}
},
},
mounted() {
this.$nextTick(() => {
this.keyDown()
// document.documentElement.webitRequestFullScreen()
// let organization = this.$refs.organization
// this.initOrganization(organization, "", this.organizationList)
// let share = this.$refs.share
// this.initHorizontalBar(share)
// let el = this.$refs.container
// // this.initProvinceChart(el)
// this.initMap2(el)
// this.timeNs()
// this.timePractice()
// this.timeNt()
// this.studentTime()
// setInterval(()=>{
// this.workEcharts.dispose()
// let works = this.$refs.works
// this.initBarCharts(works, worksList)
// },16000)
// this.timeLevel()
setInterval(_ => {
if (this.fIndex == this.fList.length - 1) {
this.fIndex = 0
} else {
this.fIndex = this.fIndex + 1
}
this.organizationList.forEach(item => {
item.flag = false
})
if (this.orgIndex == this.organizationList.length - 1) {
this.orgIndex = 0
} else {
this.orgIndex = this.orgIndex + 1
}
this.organizationList[this.orgIndex].flag = true
skillList.forEach(item => {
item.flag = false
})
if (this.skillIndex == skillList.length - 1) {
this.skillIndex = 0
} else {
this.skillIndex = this.skillIndex + 1
}
skillList[this.skillIndex].flag = true
}, 2000)
setTimeout(() => {
}, 9000)
})
// let changeData = setInterval(() => {
// this.getAccumulatedLogin()
// this.getMauInfo()
// console.log("数据更新每五分钟一次");
// }, 60000 * 5)
if (this.isShowRequest) {
this.requestFunction()
} else {
this.noRequestFunction()
}
setInterval(()=>{
this.SAtime && clearInterval(this.SAtime);
this.levelTime && clearInterval(this.levelTime);
this.downholeTime && clearInterval(this.downholeTime);
this.twoTime && clearInterval(this.twoTime);
this.timeUserList && clearInterval(this.timeUserList);
// this.timeTitle && clearInterval(this.timeTitle);
this.time2 && clearInterval(this.time2);
this.time3 && clearInterval(this.time3);
if (this.isShowRequest) {
this.requestFunction()
} else {
this.noRequestFunction()
}
},1000*60*60)
},
methods: {
handleChangeData() {
this.isShowPage = false;
this.SAtime && clearInterval(this.SAtime);
this.levelTime && clearInterval(this.levelTime);
this.downholeTime && clearInterval(this.downholeTime);
this.twoTime && clearInterval(this.twoTime);
this.timeUserList && clearInterval(this.timeUserList);
// this.timeTitle && clearInterval(this.timeTitle);
this.time2 && clearInterval(this.time2);
this.time3 && clearInterval(this.time3);
this.requestFunction()
setTimeout(() => {
this.isShowPage = true;
}, 3)
this.dataFlag = !this.dataFlag
},
// 监听键盘
keyDown() {
let that = this;
document.onkeydown = (e) => {
//事件对象兼容
if (this.imageFlag) {
let e1 = e || event || window.event || arguments.callee.caller.arguments[0]
//键盘按键判断:左箭头-37;上箭头-38;右箭头-39;下箭头-40 33 翻页笔的下 34 翻页笔的下
if (e1 && e1.keyCode == 37) {
if (that.imageIndex != 0) {
that.imageIndex = that.imageIndex - 1
}
} else if (e1 && e1.keyCode == 38) {
// that.imageIndex = that.imageIndex - 1
if (that.imageIndex != 0) {
that.imageIndex = that.imageIndex - 1
}
} else if (e1 && e1.keyCode == 33) {
// that.imageIndex = that.imageIndex - 1
if (that.imageIndex != 0) {
that.imageIndex = that.imageIndex - 1
}
} else if (e1 && e1.keyCode == 39) {
that.imageIndex = that.imageIndex + 1
} else if (e1 && e1.keyCode == 40) {
that.imageIndex = that.imageIndex + 1
} else if (e1 && e1.keyCode == 34) {
that.imageIndex = that.imageIndex + 1
}
}
}
},
noRequestFunction() {
let that = this;
let industry = that.$refs.industry
that.initOrganizationElse(industry, "", that.industry, "")
let student = this.$refs.student
this.initEchartsBar(student, schoolList, "#07ecd9")
this.fx = spArr(mobilizeList.x, 6)
this.fy1 = spArr(mobilizeList.y1, 6)
this.fy2 = spArr(mobilizeList.y2, 6)
this.fy3 = spArr(mobilizeList.y3, 6)
this.fy4 = spArr(mobilizeList.y4, 6)
this.fy5 = spArr(mobilizeList.y5, 6)
let mobilize = this.$refs.mobilize
this.initEchartStack(mobilize, { x: this.fx[0], y1: this.fy1[0], y2: this.fy2[0], y3: this.fy3[0], y4: this.fy4[0], y5: this.fy5[0] })
this.timeSy()
let buffer = that.$refs.buffer
this.initStereoscopic(buffer, userList)
this.initChartsBig()
let level = this.$refs.level
let sum = 0
levelList.y.forEach(item => {
sum = sum + item
})
that.levelListX = spArr(levelList.x, 4)
that.levelListY = spArr(levelList.y, 4)
that.initLineElseEcharts(level, { x: that.levelListX[0], y: that.levelListY[0] }, sum)
let initChartR1 = this.$refs.initChartR1
this.initChartR1(initChartR1)
let efficiency = this.$refs.efficiency
this.initDownholeEcharts(efficiency, { x: downhole.x, y: [downhole.y[0], downhole.y[1], downhole.y[2], downhole.y[3]] }, 1)
this.downholeTimes()
let sequence = this.$refs.sequence
this.initBarEcharts(sequence, { x: ["管理序列", "技术序列", "操作序列"], y1: [34242, 18547, 134012], y2: [20, 30, 50] }, ["当前数"])
this.nx1 = spArr(this.echartTwoList.x, 5)
this.ny1 = spArr(this.echartTwoList.y, 5)
this.nx2 = spArr(this.echartTwoList2.x, 5)
this.ny2 = spArr(this.echartTwoList2.y, 5)
let echartTwo = this.$refs.echartTwo
this.initTwoBarEcharts(echartTwo, { x: that.nx1[0], y: that.ny1[0] })
this.ageListX = spArr(this.echartsTwoBar1.x, 4)
this.ageListY = spArr(this.echartsTwoBar1.y, 4)
this.seniorityListX = spArr(this.echartsTwoBar2.x, 4)
this.seniorityListY = spArr(this.echartsTwoBar2.y, 4)
let serviceAge = this.$refs.serviceAge
this.initLineEcharts(serviceAge, { x: this.ageListX[this.saTimeIndex], y: this.ageListY[this.saTimeIndex] })
this.SAtimeFun()
let echarts90 = that.$refs.echarts90
that.sx = spArr(salaryList.x, 6)
that.sy = spArr(salaryList.y, 6)
that.initLineElseEchartsR(echarts90, { x: that.sx[0], y: that.sy[0] })
let leftEnd = that.$refs.leftEnd
that.initBarEchartsElse(leftEnd, leftEndList, ["累计月平均工资", "同期累计月平均工资"])
let el = this.$refs.container
// this.initProvinceChart(el)
this.initMap2(el)
},
requestFunction() {
let that = this;
localEnvAppToken().then(res => {
localStorage.setItem("app_token", res.app_token)
getLocalEnvAccessToken().then(res => {
localStorage.setItem("access_token", res.access_token)
this.getAccumulatedLogin()
this.getMauInfo()
this.getOrganizationChange()
this.getIndustrydistribution(true)
this.getHumanResources()
this.getSalaryCalProg()
this.getCollegeinternAndEnterpriseship()
this.getTurnOver()
this.getOptimizeResources()
this.getHumanOrgAllResources()
this.getMapData()
this.getPersonnelResource()
this.getEduStructure()
this.getSkillLevel()
this.getRankLevel()
this.getGrassRoots()
this.getEmploysNums()
this.getPositionSequence()
this.getDownholeoperationTrue()
this.getDownholeoperationFlase()
this.getTurnOverDetail()
this.getDistributionAttachment()
this.getDept(true)
// 员工年龄
this.getStaffAge()
this.getCalSalary()
// 均衡工资
this.getCalSalary1()
// 薪酬预警
this.getCalSalary2()
this.getCollegestudy()
// 技能大师
this.getCmasterstudio(1)
this.getCmasterstudio(2)
this.getCmasterstudio(3)
this.getCmasterstudio(4)
this.getCmasterstudio(5)
})
}).catch(err => {
let industry = that.$refs.industry
that.initOrganizationElse(industry, "", that.industry, "")
let student = this.$refs.student
this.initEchartsBar(student, schoolList, "#07ecd9")
this.fx = spArr(mobilizeList.x, 6)
this.fy1 = spArr(mobilizeList.y1, 6)
this.fy2 = spArr(mobilizeList.y2, 6)
this.fy3 = spArr(mobilizeList.y3, 6)
this.fy4 = spArr(mobilizeList.y4, 6)
this.fy5 = spArr(mobilizeList.y5, 6)
let mobilize = this.$refs.mobilize
this.initEchartStack(mobilize, { x: this.fx[0], y1: this.fy1[0], y2: this.fy2[0], y3: this.fy3[0], y4: this.fy4[0], y5: this.fy5[0] })
this.timeSy()
let buffer = that.$refs.buffer
this.initStereoscopic(buffer, userList)
this.initChartsBig()
let level = this.$refs.level
let sum = 0
levelList.y.forEach(item => {
sum = sum + item
})
that.levelListX = spArr(levelList.x, 4)
that.levelListY = spArr(levelList.y, 4)
that.initLineElseEcharts(level, { x: that.levelListX[0], y: that.levelListY[0] }, sum)
let initChartR1 = this.$refs.initChartR1
this.initChartR1(initChartR1)
let efficiency = this.$refs.efficiency
this.initDownholeEcharts(efficiency, { x: downhole.x, y: [downhole.y[0], downhole.y[1], downhole.y[2], downhole.y[3]] }, 1)
this.downholeTimes()
let sequence = this.$refs.sequence
this.initBarEcharts(sequence, { x: ["管理序列", "技术序列", "操作序列"], y1: [34242, 18547, 134012], y2: [20, 30, 50] }, ["当前数"])
this.nx1 = spArr(this.echartTwoList.x, 5)
this.ny1 = spArr(this.echartTwoList.y, 5)
this.nx2 = spArr(this.echartTwoList2.x, 5)
this.ny2 = spArr(this.echartTwoList2.y, 5)
let echartTwo = this.$refs.echartTwo
this.initTwoBarEcharts(echartTwo, { x: that.nx1[0], y: that.ny1[0] })
this.ageListX = spArr(this.echartsTwoBar1.x, 4)
this.ageListY = spArr(this.echartsTwoBar1.y, 4)
this.seniorityListX = spArr(this.echartsTwoBar2.x, 4)
this.seniorityListY = spArr(this.echartsTwoBar2.y, 4)
let serviceAge = this.$refs.serviceAge
this.initLineEcharts(serviceAge, { x: this.ageListX[this.saTimeIndex], y: this.ageListY[this.saTimeIndex] })
this.SAtimeFun()
let echarts90 = that.$refs.echarts90
that.sx = spArr(salaryList.x, 6)
that.sy = spArr(salaryList.y, 6)
that.initLineElseEchartsR(echarts90, { x: that.sx[0], y: that.sy[0] })
let leftEnd = that.$refs.leftEnd
that.initBarEchartsElse(leftEnd, leftEndList, ["累计月平均工资", "同期累计月平均工资"])
let el = this.$refs.container
// this.initProvinceChart(el)
this.initMap2(el)
})
},
handleSelect(flag = 'total') {
if (flag == 'total') {
this.markStyle = {
position: "absolute",
top: "13%",
right: "21%",
}
} else if (flag == 'average') {
this.markStyle = {
position: "absolute",
top: "25.5%",
right: "1.5%",
}
}
this.handleMark()
this.isShowMark = true;
this.selectFlag = true;
this.selectType = flag
},
selectOption(item) {
this.selectInfo[this.selectType] = item
},
SAtimeFun() {
let that = this;
this.SAtime = setInterval(() => {
this.SAtime && clearInterval(this.SAtime);
this.SAtimeFun()
let serviceAge = that.$refs.serviceAge
this.LineChart.dispose();
if (that.saIndex == 1) {
if (that.saTimeIndex == that.ageListX.length - 1) {
that.saTimeIndex = 0
that.saIndex = 2
that.initLineEcharts(serviceAge, { x: that.seniorityListX[that.saTimeIndex], y: that.seniorityListY[that.saTimeIndex] })
return
} else {
that.saTimeIndex = that.saTimeIndex + 1
}
that.initLineEcharts(serviceAge, { x: that.ageListX[that.saTimeIndex], y: that.ageListY[that.saTimeIndex] })
} else {
if (that.saTimeIndex == that.seniorityListX.length - 1) {
that.saTimeIndex = 0
that.saIndex = 1
that.initLineEcharts(serviceAge, { x: that.ageListX[that.saTimeIndex], y: that.ageListY[that.saTimeIndex] })
return
} else {
that.saTimeIndex = that.saTimeIndex + 1
}
that.initLineEcharts(serviceAge, { x: that.seniorityListX[that.saTimeIndex], y: that.seniorityListY[that.saTimeIndex] })
}
}, 8000)
},
timeLevel() {
let that = this;
this.levelTime = setInterval(_ => {
this.levelTime && clearInterval(this.levelTime);
this.timeLevel()
let level = this.$refs.level
this.echartsLevel.dispose()
if (that.levelTimeIndex == that.levelListX.length - 1) {
that.levelTimeIndex = 0
} else {
that.levelTimeIndex = that.levelTimeIndex + 1
}
let sum = 0
levelList.y.forEach(item => {
sum = sum + item
})
this.initLineElseEcharts(level, { x: this.levelListX[that.levelTimeIndex], y: this.levelListY[that.levelTimeIndex] }, sum)
}, 8000)
},
downholeTimes() {
let that = this;
this.downholeTime = setInterval(() => {
this.downholeTime && clearInterval(this.downholeTime);
this.downholeTimes()
let efficiency = this.$refs.efficiency
this.downhole.dispose()
if (that.downholeIndex == 1) {
this.downholeObj = {
key: "集团公司",
value: that.employsNums
}
this.initDownholeEcharts(efficiency, { x: downhole.x, y: [downhole.y[4], downhole.y[5]] }, 2)
that.downholeIndex = 2
} else if (that.downholeIndex == 2) {
this.downholeObj = {
key: "选拔培养",
value: that.selectTraining
}
this.initDownholeEcharts(efficiency, { x: downhole.x, y: [downhole.y[0], downhole.y[1], downhole.y[2], downhole.y[3]] }, 1)
that.downholeIndex = 1
}
}, 10000)
},
timeTwo() {
let that = this;
this.twoTime = setInterval(() => {
this.twoTime && clearInterval(this.twoTime);
this.timeTwo()
let echartTwo = that.$refs.echartTwo
let serviceAge = that.$refs.serviceAge
that.twoBar.dispose();
if (that.twoIndex == 1) {
if (that.twoTimeIndex == that.nx1.length - 1) {
that.twoTimeIndex = 0
that.twoIndex = 2
that.initTwoBarEcharts(echartTwo, { x: that.nx2[that.twoTimeIndex], y: that.ny2[that.twoTimeIndex] })
return
} else {
that.twoTimeIndex = that.twoTimeIndex + 1
}
that.initTwoBarEcharts(echartTwo, { x: that.nx1[that.twoTimeIndex], y: that.ny1[that.twoTimeIndex] })
} else {
if (that.twoTimeIndex == that.nx2.length - 1) {
that.twoTimeIndex = 0
that.twoIndex = 1
console.log(that.twoTimeIndex);
that.initTwoBarEcharts(echartTwo, { x: that.nx1[that.twoTimeIndex], y: that.ny1[that.twoTimeIndex] })
return
} else {
that.twoTimeIndex = that.twoTimeIndex + 1
}
that.initTwoBarEcharts(echartTwo, { x: that.nx2[that.twoTimeIndex], y: that.ny2[that.twoTimeIndex] })
}
}, 8000)
},
// 人才市场定时器
timeuserList() {
let that = this;
this.timeUserList = setInterval(() => {
this.timeUserList && clearInterval(this.timeUserList);
this.timeuserList()
let buffer = that.$refs.buffer
that.stereoscopic.dispose();
if (that.userIndex >= that.userListX.length - 1) {
that.userIndex = 0
// this.userListX = spArr(userList.x,9)
// this.userListy1 = spArr(userList.y1,9)
// this.userListy2 = spArr(userList.y2,9)
// this.userListy3 = spArr(userList.y3,9)
that.initStereoscopic(buffer, { x: that.userListX[that.userIndex], y1: that.userListy1[that.userIndex], y2: that.userListy2[that.userIndex], y3: that.userListy3[that.userIndex] })
} else {
that.userIndex += 1
that.initStereoscopic(buffer, { x: that.userListX[that.userIndex], y1: that.userListy1[that.userIndex], y2: that.userListy2[that.userIndex], y3: that.userListy3[that.userIndex] })
}
}, 18000)
},
// 针对学历结构的定时器
timeNt() {
let that = this;
this.timeTitle = setInterval(() => {
this.timeTitle && clearInterval(this.timeTitle);
this.timeNt();
that.efficiency.dispose()
let efficiency = this.$refs.efficiency
if (that.titleIndex > 1) {
that.titleIndex = 0
that.initBarChartsElse(efficiency, efficiencyList, "吨/工", { name: "行业线", value: 8.2 })
that.titleList = ["原煤工效", "全员效率"]
} else {
that.initBarChartsElse(efficiency, wholeList, "吨/人", { name: "标杆矿井线", value: 1800 })
that.titleList = ["全员效率", "原煤工效"]
}
that.titleIndex = that.titleIndex + 1
}, 12000);
},
timeNs() {
let that = this;
this.time2 = setInterval(() => {
this.time2 && clearInterval(this.time2);
this.timeNs();
// that.leftEcharts5.dispose();
let initChartsBig = that.$refs.initChartsBig
that.initChartsBig(initChartsBig)
}, 15000);
},
timeSy() {
let that = this;
this.time4 = setInterval(() => {
this.time4 && clearInterval(this.time4);
this.timeSy();
that.LineElse.dispose();
that.mobilizeFL.dispose();
let echarts90 = this.$refs.echarts90
let mobilize = this.$refs.mobilize
if (that.salaryIndex == that.sx.length) {
that.salaryIndex = 0
}
this.initLineElseEchartsR(echarts90, { x: that.sx[that.salaryIndex], y: that.sy[that.salaryIndex] })
if (that.salaryIndex < that.fx.length) {
this.initEchartStack(mobilize, { x: this.fx[that.salaryIndex], y1: this.fy1[that.salaryIndex], y2: this.fy2[that.salaryIndex], y3: this.fy3[that.salaryIndex], y4: this.fy4[that.salaryIndex], y5: this.fy5[that.salaryIndex] })
} else {
this.initEchartStack(mobilize, { x: this.fx[0], y1: this.fy1[0], y2: this.fy2[0], y3: this.fy3[0], y4: this.fy4[0], y5: this.fy5[0] })
}
that.salaryIndex += 1
}, 11500);
},
// 针对从业人员类别的定时器
timePractice() {
let that = this;
this.time3 = setInterval(() => {
this.time3 && clearInterval(this.time3);
this.timePractice();
that.twoBar.dispose();
that.LineChart.dispose();
let echartTwo = that.$refs.echartTwo
let serviceAge = that.$refs.serviceAge
if (that.twoIndex == 1) {
that.initTwoBarEcharts(echartTwo, { x: that.nx1[0], y: that.ny1[0] })
that.initLineEcharts(serviceAge, that.echartsTwoBar1)
that.twoIndex = 2
that.twoTimeIndex = 0
} else {
that.initTwoBarEcharts(echartTwo, { x: that.nx2[0], y: that.ny2[0] })
that.initLineEcharts(serviceAge, that.echartsTwoBar2)
that.twoTimeIndex = 0
that.twoIndex = 1
}
this.userFlag = !this.userFlag
}, 15000);
},
initOrganization(el, title = "", data = { x: ["集团本部", "山焦财务", "山焦担保", "山焦股份", "山焦国华", "山焦机电", "山焦人力", "山焦民爆", "山焦事业", "山焦投资"], y: [0, 680, 562, 268, 717, 843, 987, 126, 723, 569] }, unit = "") {
let chart = echarts.init(el);
let option = {
grid: {
top: 25,
right: 15,
left: "15%",
bottom: "27%",
},
grid: {
top: 30,
right: 20,
left: 105,
bottom: 40,
},
tooltip: {
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
show: true,
trigger: "axis",
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
},
xAxis: {
data: data.x,
axisTick: {
show: false,
},
// x轴的字体颜色
axisLabel: {
interval: 0,
// rotate: 40,
textStyle: {
fontSize: 30,
color: '#A3E2F4',
fontWeight: 0,
},
},
//y轴线的颜色以及宽度
axisLine: {
show: true,
lineStyle: {
color: "#1E5389",
width: 1,
type: "solid",
},
},
},
yAxis: {
name: unit,
type: "log",
axisTick: {
lineStyle: {
color: "#18416F",
},
},
// y轴的字体颜色
axisLabel: {
textStyle: {
color: "white",
fontSize: 30,
},
},
nameTextStyle: {
fontSize: 20,
},
splitLine: {
show: true,
lineStyle: {
color: "#204561",
width: 1,
type: "dotted",
},
},
//y轴线的颜色以及宽度
axisLine: {
show: true,
lineStyle: {
color: "#1E5389",
width: 1,
type: "solid",
},
},
},
series: [{
name: "",
type: "line",
smooth: true,
showSymbol: true, // 节点长显
symbol: 'image://' + 'data:image/png;base64,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',
symbolSize: 30,
data: data.y,
areaStyle: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1, [{
offset: 0,
color: "#40A9FF",
},
{
offset: 1,
color: "#051F41",
},
],
false
),
},
itemStyle: {
color: "#40A9FF",
},
lineStyle: {
width: 2,
},
}],
};
let that = this;
chart.setOption(option);
chart.on('click', function (param) {
that.isShowMark = true
that.salaryFlag = false
that.pdfFlag = true
})
tools.loopShowTooltip(chart, option, {
nterval: 2000,
loopSeries: true,
});
window.addEventListener("resize", function () {
chart.resize();
});
},
initOrganizationElse(el, title = "", data = { x: ["集团本部", "山焦财务", "山焦担保", "山焦股份", "山焦国华", "山焦机电", "山焦人力", "山焦民爆", "山焦事业", "山焦投资"], y: [0, 680, 562, 268, 717, 843, 987, 126, 723, 569] }, unit = "") {
if (this.industryEcharts != null) {
this.industryEcharts.dispose()
}
this.industryEcharts = echarts.init(el);
let option = {
title: {
show: false,
top: 5,
left: "center",
text: title,
textStyle: {
color: "#5EB7FF",
fontSize: 32
}
},
grid: {
top: 50,
right: 40,
left: 105,
bottom: 40,
},
tooltip: {
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
show: true,
trigger: "axis",
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
// 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
},
formatter: "{c}"
},
xAxis: {
data: data.x,
axisTick: {
show: false,
},
// x轴的字体颜色
axisLabel: {
interval: 0,
// rotate: 40,
textStyle: {
fontSize: 30,
color: '#fff',
fontWeight: 0,
},
},
//y轴线的颜色以及宽度
axisLine: {
show: true,
lineStyle: {
color: "#1E5389",
width: 1,
type: "solid",
},
},
},
yAxis: {
name: unit,
axisTick: {
lineStyle: {
color: "#18416F",
},
},
// y轴的字体颜色
axisLabel: {
textStyle: {
color: "white",
fontSize: 28,
},
},
nameTextStyle: {
fontSize: 20,
color: "white",
},
splitLine: {
show: true,
lineStyle: {
color: "#204561",
width: 1,
type: "dotted",
},
},
//y轴线的颜色以及宽度
axisLine: {
show: true,
lineStyle: {
color: "#1E5389",
width: 1,
type: "solid",
},
},
},
series: [{
name: "",
type: "bar",
data: data.y,
showBackground: true,
backgroundStyle: {
color: "#18416F",
},
barWidth: "20%",
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: "#02355C",
}, //柱图渐变色
{
offset: 1,
color: "#40A9FF",
},
]),
},
}],
legend: {
data: ["入池人数", "出池人数"],
textStyle: {
// 图列内容样式
color: "#fff", // 字体颜色
// fontSize: "10",
},
right: 30,
icon: "roundRect",
// 小图标的宽高
itemHeight: 5,
},
};
let that = this;
this.industryEcharts.setOption(option);
tools.loopShowTooltip(this.industryEcharts, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function () {
// this.industryEcharts.resize();
// });
},
initLineEcharts(el, data) {
if (this.intervalL != undefined) {
clearInterval(this.intervalL)
}
this.LineChart = echarts.init(el);
let index = 0;
let dataList = this.changeOnIndex(data.y, index);
let option = {
grid: {
top: 25,
right: 5,
left: 100,
bottom: 35,
},
tooltip: {
show: true,
trigger: "axis",
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
type: "none",
lineStyle: {
color: "#ddd",
},
},
formatter: "{c}"
},
legend: {
textStyle: {
// 图列内容样式
color: "#fff", // 字体颜色
// fontSize: "10",
},
right: 30,
icon: "roundRect",
// 小图标的宽高
itemHeight: 5
},
xAxis: {
type: "category",
data: data.x,
// boundaryGap: false,
splitLine: {
show: false,
interval: "auto",
},
axisTick: {
show: false,
},
axisLine: {
show: false,
lineStyle: {
fontSize: 30,
color: '#fff',
fontWeight: 0,
},
},
axisLabel: {
interval: 0,
// rotate: 25,
textStyle: {
fontSize: 32,
color: "#fff",
},
},
},
yAxis: {
type: "value",
splitLine: {
show: false,
lineStyle: {
color: "#204561",
width: 1,
type: "dotted",
},
},
axisTick: {
show: false,
},
axisLine: {
show: false,
lineStyle: {
color: "#7ECEF4",
},
},
axisLabel: {
margin: 10,
textStyle: {
fontSize: 28,
color: "#fff",
},
},
},
series: [{
name: "",
type: "line",
smooth: false,
showSymbol: true, // 节点长显
data: dataList,
areaStyle: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1, [{
offset: 0,
color: "#45DAD1",
},
{
offset: 1,
color: "#051F41",
},
],
false
),
},
itemStyle: {
color: "#45DAD1",
},
lineStyle: {
width: 2,
},
}],
};
this.intervalL = setInterval(() => {
index = index + 1
if (index == data.y.length) {
index = 0
}
dataList = this.changeOnIndex(data.y, index);
this.LineChart.setOption({
series: [{
type: 'line',
data: dataList
}]
});
}, 2000)
this.LineChart.setOption(option);
tools.loopShowTooltip(this.LineChart, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function() {
// this.LineChart.resize();
// });
},
changeOnIndex(arr = [], i = 0) {
let dataY = []
arr.forEach((item, index) => {
let obj;
if (index == i) {
obj = {
value: item,
symbolSize: 50,
symbol: 'image://' + 'data:image/png;base64,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',
}
} else {
obj = {
value: item,
symbolSize: 30,
symbol: 'image://' + 'data:image/png;base64,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'
}
}
dataY.push(obj)
})
return dataY
},
initLineElseEcharts(el, data, sum) {
if (this.levelInterval != null) {
clearInterval(this.levelInterval)
}
this.echartsLevel = echarts.init(el);
let index = 0;
let dataList = this.changeOnIndex(data.y, index);
let option = {
title: {
text: sum != undefined ? '总人数: ' + sum : '总人数: 0',
subtext: '',
top: 0,
right: 0,
textStyle: {
fontSize: 30,
fontWeight: 'bold',
color: '#fff'
},
},
grid: {
top: 25,
right: 15,
left: 110,
bottom: 40,
},
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: "axis",
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
type: "none",
lineStyle: {
color: "#ddd",
},
},
formatter: "{c}"
},
legend: {
textStyle: {
// 图列内容样式
color: "#fff", // 字体颜色
// fontSize: "10",
},
right: 30,
icon: "roundRect",
// 小图标的宽高
itemHeight: 5
},
xAxis: {
type: "category",
data: data.x,
boundaryGap: true,
splitLine: {
show: false,
interval: "auto",
},
axisTick: {
show: false,
},
axisLine: {
lineStyle: {
color: "#7ECEF4",
},
},
axisLabel: {
interval: 0,
// rotate: 40,
margin: 10,
textStyle: {
fontSize: 30,
color: "#fff",
},
},
},
yAxis: {
type: "value",
splitLine: {
show: true,
lineStyle: {
color: "#204561",
width: 1,
type: "dotted",
},
},
axisTick: {
show: false,
},
axisLine: {
lineStyle: {
color: "#7ECEF4",
},
},
axisLabel: {
margin: 10,
textStyle: {
fontSize: 28,
color: "#fff",
},
},
},
series: [{
name: "",
type: "line",
smooth: false,
showSymbol: true, // 节点长显
data: dataList,
areaStyle: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1, [{
offset: 0,
color: "#40A9FF",
},
{
offset: 1,
color: "#051F41",
},
],
false
),
},
itemStyle: {
color: "#40A9FF",
},
emphasis: {
itemStyle: {
color: '#d4bc1d',
symbol: 'image://' + 'data:image/png;base64,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',
},
},
lineStyle: {
width: 2,
},
}],
};
this.levelInterval = setInterval(() => {
index = index + 1
if (index == data.y.length) {
index = 0
}
dataList = this.changeOnIndex(data.y, index);
this.echartsLevel.setOption({
series: [{
type: 'line',
data: dataList
}]
});
}, 2000)
this.echartsLevel.setOption(option);
tools.loopShowTooltip(this.echartsLevel, option, {
nterval: 3000,
loopSeries: true,
});
// window.addEventListener("resize", function() {
// this.echartsLevel.resize();
// });
},
initMap2(el, data) {
let myChart = echarts.init(el)
let img = 'image://images/newImage/data-1619059838735-QE9mBZmhh.png'
var geoCoordMap = {
太原市: [112.259248, 37.807014],
大同市: [113.595259, 39.89031],
阳泉市: [113.505474, 37.964652],
长治市: [112.813556, 36.591112],
晋城市: [112.551274, 35.577553],
朔州市: [112.433387, 39.531261],
晋中市: [112.936465, 37.40495],
运城市: [111.003957, 35.199],
忻州市: [112.333538, 38.650],
临汾市: [111.517973, 36.18415],
吕梁市: [111.134335, 37.524366],
}
let effectScatterData = [{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 532, "山西焦煤机关",],
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 14147, "山煤国际",]
// value: [111.949248, 37.957014, 14972, "山煤国际",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 319, "物资装备公司",]
// value: [111.949248, 37.957014, 91, "物资装备公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 113, "金土地公司",]
// value: [111.949248, 37.957014, 111, "金土地公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 544, "销售公司",]
// value: [111.949248, 37.957014, 835, "销售公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 108, "国发公司",]
// value: [111.949248, 37.957014, 117, "国发公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 580, "投资公司",]
// value: [111.949248, 37.957014, 582, "投资公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 1812, "人力资源公司",]
// value: [111.949248, 37.957014, 117, "人力资源公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 105, "金融资本公司",]
// value: [111.949248, 37.957014, 10, "金融资本公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 811, "民爆集团",]
// value: [111.949248, 37.957014, 843, "民爆集团",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 45, "新能源公司",]
// value: [111.949248, 37.957014, 47, "新能源公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "晋中市",
value: [112.936465, 37.696495, 48912, "汾西矿业",]
// value: [112.936465, 37.696495, 49047, "汾西矿业",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 63352, "西山煤电",]
// value: [111.949248, 37.957014, 65704, "西山煤电",]
},
{
itemStyle: {
color: "#fff"
},
name: "临汾市",
value: [111.517973, 35.88415, 53563, "霍州煤电",]
// value: [111.517973, 35.88415, 53563, "霍州煤电",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 68, "交易中心",]
// value: [111.949248, 37.957014, 67, "交易中心",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 64, "招标公司",]
// value: [111.949248, 37.957014, 48, "招标公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "临汾市",
value: [111.517973, 35.88415, 9308, "山西焦化",]
// value: [111.517973, 35.88415, 9508, "山西焦化",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 33, "油品公司",]
// value: [111.949248, 37.957014, 13, "油品公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 37, "低碳公司",]
// value: [111.949248, 37.957014, 29, "低碳公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "吕梁市",
value: [111.134335, 37.524366, 10812, "华晋焦煤",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 13, "云数据公司",]
// value: [111.949248, 37.957014, 10, "云数据公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 330, "焦煤置业",]
// value: [111.949248, 37.957014, 218, "焦煤置业",]
},
{
itemStyle: {
color: "#fff"
},
name: "吕梁市",
value: [111.134335, 37.524366, 9960, "华晋焦煤",]
},
]
if (data) {
effectScatterData = data
}
mapDate = []
let iconList = []
const result = effectScatterData.reduce((acc, obj) => {
const { name, value } = obj;
const existingItem = acc.find(item => item.name === name);
if (existingItem) {
existingItem.value.push(value[2]);
} else {
acc.push({ name, value: [value[2]] });
}
return acc;
}, []);
result.forEach(item => {
let key = 0
item.value.forEach(i => {
key = i + key
})
item.key = key
})
for (let k in geoCoordMap) {
effectScatterData.forEach(item => {
if (item.name == k) {
item.value[0] = geoCoordMap[k][0]
item.value[1] = geoCoordMap[k][1]
}
})
result.forEach(item => {
if (item.name == k) {
let obj = {
name: k,
value: geoCoordMap[k],
datas: item.key,
img
}
mapDate.push(obj)
}
})
let icon = {
name: k,
value: geoCoordMap[k],
img
}
iconList.push(icon)
}
console.log(iconList);
var img2 = 'image://images/newImage/bggg.png'
echarts.registerMap('shanxi', jsonData);
option = {
tooltip: {
trigger: "item",
padding: 15,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
enterable: true,
transitionDuration: 1,
formatter: (params, ticket, callback) => {
// 清空所有轮播
for (var k in geoCoordMap) {
myChart.dispatchAction({
type: 'downplay',
name: k,
})
}
// 如果鼠标滑动到线线上面,则返回空
myChart.dispatchAction({
// type: 'geoSelect',
type: 'highlight',
name: params.name,
})
if (params.componentSubType == 'lines') {
return
}
if (params.componentSubType == "scatter") {
let tipHtml = `
`
if (params.value[2] == undefined) {
return ""
}
callback(ticket, tipHtml)
return tipHtml
}
if (params.componentSubType == 'effectScatter') {
let tipHtml = `
`
if (params.value[2] == undefined) {
return ""
}
callback(ticket, tipHtml)
return tipHtml
}
if (params.componentSubType == 'map') {
return
}
},
},
geo: {
map: 'shanxi',
zoom: 1.5,
layoutCenter: ['51%', '55.5%'],
layoutSize: '100%',
silent: true,
roam: false,
z: 1,
// itemStyle: {
// areaColor: 'rgba(0, 15, 40, 1)',
// shadowColor: 'rgba(0, 0, 0, 1)',
// shadowBlur: 0,
// shadowOffsetX: 0,
// shadowOffsetY: 5,
// borderColor: 'rgba(0, 0, 0, 1)',
// borderWidth: 0.5,
// emphasis: {
// areaColor: '#2AB8FF',
// borderWidth: 1,
// color: 'green',
// label: {
// show: false,
// },
// },
// },
itemStyle: {
areaColor: '#25B9E9',
shadowColor: '#25B9E9',
borderWidth: 6, //设置外层边框
borderColor: '#00FFFF',
shadowOffsetX: 5,
shadowOffsetY: 5,
shadowBlur: 5,
emphasis: {
areaColor: '#013d95',
borderColor: '#e7e1a0',
borderWidth: 4, //设置外层边框
},
},
},
series: [
{
type: 'scatter',
coordinateSystem: 'geo',
zlevel: 2,
rippleEffect: {
//涟漪特效
period: 2, //动画时间,值越小速度越快
brushType: 'stroke', //波纹绘制方式 stroke, fill
scale: 8, //波纹圆环最大限制,值越大波纹越大
color: '#d4bc1d',
},
emphasis: {
itemStyle: {
color: '#d4bc1d'
}
},
label: {
show: false,
},
symbol: 'circle',
symbolSize: 0,
symbolOffset: [0, -370],
data: effectScatterData,
// data: series[1].data,
},
{
type: 'scatter',
coordinateSystem: 'geo',
label: {
show: true,
formatter: function (params) {
var name = params.name;
var value = params.data.datas;
var text = `{tline|${name}}`;
return text;
},
color: '#fff',
rich: {
fline: {
padding: [0, 25],
color: '#fff',
textShadowColor: '#030615',
textShadowBlur: '0',
textShadowOffsetX: 1,
textShadowOffsetY: 1,
fontSize: 45,
fontWeight: 800,
},
tline: {
padding: [0, 35],
color: '#ffdd00',
fontSize: 40,
fontWeight: 800,
},
},
emphasis: {
show: true,
},
},
itemStyle: {
color: '#00FFF6',
},
symbol: img2,
symbolSize: [200, 100],
symbolOffset: [0, -180],
zlevel: 9,
data: iconList,
},
{
type: 'map',
label: {
show: false,
textStyle: {
color: '#fff',
},
emphasis: {
show: false,
textStyle: {
color: '#fff',
},
},
},
select: {
itemStyle: {
areaColor: '#1C4FBB',
borderColor: 'rgba(5,216,252,0.7)',
borderWidth: 6, //隐藏省界线
shadowColor: 'rgba(5,216,252,0.7)',
shadowBlur: 90,
}
},
itemStyle: {
areaColor: '#1C4FBB',
borderColor: 'rgba(5,216,252,0.7)',
borderWidth: 6, //隐藏省界线
shadowColor: 'rgba(5,216,252,0.7)',
shadowBlur: 90,
emphasis: {
areaColor: 'rgba(25,79,183,0.6)',
borderColor: '#d4bc1d',
shadowColor: '#d4bc1d',
shadowBlur: 90,
borderWidth: 8, //设置外层边框
label: {
color: "#fff"
}
}
},
layoutCenter: ['50%', '55%'],
layoutSize: '100%',
zoom: 1.5,
roam: false,
map: 'shanxi',
},
{
type: 'effectScatter',
coordinateSystem: 'geo',
rippleEffect: {
scale: 10,
brushType: 'stroke',
color: "#fff"
},
showEffectOn: 'render',
itemStyle: {
shadowColor: '#0ff',
shadowBlur: 10,
shadowOffsetX: 0,
shadowOffsetY: 0,
// color: "#fff"
color: new echarts.graphic.LinearGradient(1, 0, 0, 0, [
{
offset: 0,
color: '#64fbc5',
},
{
offset: 1,
color: '#018ace',
},
]),
},
label: {
color: '#fff',
},
symbol: 'circle',
symbolSize: [30, 15],
data: iconList,
zlevel: 9,
},
{
type: 'scatter',
coordinateSystem: 'geo',
symbol: function (value, params) {
return params.data.img;
},
symbolSize: [96, 123],
symbolOffset: [0, -75],
z: 9999,
data: iconList,
},
],
};
myChart.setOption(option);
tools.loopShowTooltip(myChart, option, {
interval: 2000,
loopSeries: false,
});
},
initLineElseEchartsR(el, data) {
if (this.intervalR != undefined) {
clearInterval(this.intervalR)
}
this.LineElse = echarts.init(el);
let index = 0;
let dataList = this.changeOnIndex(data.y, index);
let option = {
grid: {
top: 15,
right: "2%",
left: "5%",
bottom: 60,
},
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: "axis",
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
type: "none",
lineStyle: {
color: "#ddd",
},
},
formatter: "{c} %"
},
legend: {
textStyle: {
// 图列内容样式
color: "#fff", // 字体颜色
// fontSize: "10",
},
right: 30,
icon: "roundRect",
// 小图标的宽高
itemHeight: 5
},
xAxis: {
type: "category",
data: data.x,
boundaryGap: true,
splitLine: {
show: false,
interval: "auto",
},
axisTick: {
show: false,
},
axisLine: {
show: false,
lineStyle: {
color: "#7ECEF4",
},
},
axisLabel: {
interval: 0,
textStyle: {
fontSize: 30,
color: "#fff",
},
// formatter: function(value) {
// // 将文字进行换行
// let list = value.split("")
// if(list.length == 5){
// list[3] = ""
// }
// if(list.length > 4){
// list[4] = ""
// }
// return list[0] + list[1] + "\n" + list[2] + list[3];
// }
},
},
yAxis: {
type: "value",
min: 80,
max: 100,
splitNumber: 3,
interval: 10,
splitLine: {
show: true,
lineStyle: {
color: "#204561",
width: 1,
type: "dotted",
},
},
axisTick: {
show: false,
},
axisLine: {
lineStyle: {
color: "#7ECEF4",
},
},
axisLabel: {
textStyle: {
fontSize: 28,
color: "#fff",
},
},
},
series: [{
name: "",
type: "line",
smooth: false,
showSymbol: true, // 节点长显
data: dataList,
areaStyle: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1, [{
offset: 0,
color: "#40A9FF",
},
{
offset: 1,
color: "#051F41",
},
],
false
),
},
itemStyle: {
color: "#40A9FF",
},
lineStyle: {
width: 2,
},
}],
};
this.intervalR = setInterval(() => {
index = index + 1
if (index == data.y.length) {
index = 0
}
dataList = this.changeOnIndex(data.y, index);
this.LineElse.setOption({
series: [{
type: 'line',
data: dataList
}]
});
}, 2000)
this.LineElse.setOption(option);
tools.loopShowTooltip(this.LineElse, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function() {
// this.LineElse.resize();
// });
},
initChartR1(el, data = [{
name: "高级-正高级",
value: 146,
},
{
name: "高级-副高级",
value: 4021,
},
{
name: "中级",
value: 17437,
},
{
name: "初级-助理级",
value: 12622,
},
{
name: "初级-员级",
value: 7350,
},
]) {
this.technical = echarts.init(el)
let objData = {}
let sum = 0
data.forEach(item => {
objData[item.name] = item.value
sum = sum + item.value
})
let option = {
title: {
text: sum || 0,
subtext: ' 总人数',
left: '15%',
top: '39%',
textStyle: {
color: '#FFAD05',
fontSize: 40,
},
subtextStyle: {
color: '#fff',
fontSize: 30,
},
},
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: "item",
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
lineStyle: {
color: "#ddd",
},
},
formatter: "{b} : {c}({d}%)"
},
legend: {
top: 'center',
orient: 'vertical',
left: '50%',
textStyle: {
fontSize: 30,
color: '#9DB9EB',
},
formatter: function (name) {
return (
"{title|" + name + "} {value|" + objData[name] + "} {title|人}"
);
},
textStyle: {
rich: {
title: {
fontSize: 30,
lineHeight: 50,
color: "#fff",
},
value: {
fontSize: 30,
fontWeight: "bolder",
lineHeight: 50,
color: "#FFAD05",
},
},
},
},
graphic: {
elements: [{
type: 'image', //需要填充图片,配置image,如果不需要图片可以配置其他的, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
style: {
image: './images/pie-back.png', //这里添加图片地址
width: 120,
height: 120
},
left: '16%', //
top: 'middle' //配置图片居中
}]
},
series: [{
name: '',
type: 'pie',
radius: ['40%', '50%'],
center: ["25%", "50%"],
labelLine: {
show: false,
length: 20,
length2: 55,
emphasis: {
show: false
}
},
selectedMode: 'single',
selectedOffset: 90,
clockwise: true,
label: {
show: false,
formatter: "{b}",
textStyle: {
fontSize: 28,
},
position: 'outside',
emphasis: {
show: false
}
},
data: data,
emphasis: {
scaleSize: 15, // 设置放大倍数
},
itemStyle: {
color: function (colors) {
var colorList = [
"#DDEBF7", "#BDD7EE", "#9BC2E6", "#2F75B5", "#1F4E78"
];
return colorList[colors.dataIndex];
},
// emphasis: {
// // shadowBlur: 50,
// shadowOffsetX: 15,
// shadowOffsetY: 15,
// shadowColor: 'red'
// },
}
},],
}
this.technical.setOption(option)
tools.loopShowTooltip(this.technical, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function () {
// myChart.resize();
// });
},
initChartsBig(arr = [{
name: '研究生及以上',
y: 3103,
sliced: false,
selected: false,
},
{
name: '大学',
y: 42543,
sliced: false,
selected: false,
},
{
name: '大专',
y: 46669,
sliced: false,
selected: false,
},
{
name: '中专、技校',
y: 69437,
sliced: false,
selected: false,
},
{
name: '初中及以下',
y: 25049,
sliced: false,
selected: false,
}
]) {
let left5 = arr
var chartData = left5
var timer = null;
var i = 0;
let that = this
var option = {
colors: [
"#D9E1F2",
"#B4C6E7",
"#8EA9DB",
"#305496",
"#203764",
],
chart: {
type: 'pie',
backgroundColor: 'rgba(0,0,0,0)',
options3d: {
enabled: true,
alpha: 45,
//beta: 0
},
events: {
// load,图表加载完成时触发
load: function () {
var chart = this;
var points = chart.series[0].points;
var len = points.length;
timer && clearInterval(timer);
timer = setInterval(function () {
autoTooltip(points[i]);
chartData.forEach((item, index) => {
item.sliced = false
item.selected = false
if (index == i) {
item.sliced = true
item.selected = true
}
})
chart.update({
series: [{
type: 'pie',
name: '占比',
data: chartData
}]
})
i++;
if (i === len) {
i = 0;
chartData.forEach((item, index) => {
item.sliced = false
item.selected = false
})
chart.update({
series: [{
type: 'pie',
name: '占比',
data: chartData
}]
})
}
}, 2000);
},
legendItemClick: function (event) {
return true;
}
}
},
credits: {
enabled: false //去掉hightchats水印
},
legend: {
align: 'right', //横向位置
verticalAlign: 'middle', // 纵向位置
layout: "vertical", //横排还是竖排
x: 10,
y: 100,
symbolWidth: 30,
itemStyle: {
fontSize: '30px',
color: '#fff',
x: 20,
fontWeight: 0,
fontFamily: 'Microsoft YaHei'
},
},
title: {
enabled: false,
text: "",
},
tooltip: {
crosshairs: false,
trigger: "axis",
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
style: {
fontSize: 30,
color: '#A3E2F4',
fontWeight: 0,
},
axisPointer: {
lineStyle: {
color: "#ddd",
},
},
formatter: function (e) {
this.percentage = this.percentage.toFixed(2) //Math.round(this.percentage)
return `${this.key}:${this.y}(${this.percentage}%)`
},
},
plotOptions: {
pie: {
allowPointSelect: true,
showInLegend: true, // 图例
cursor: 'pointer',
size: 350,
innerSize: 0, //环形图中间空白,0为饼图
depth: 80, //立体高度
slicedOffset: 40, //动画距离
dataLabels: {
enabled: false, // 是否展示指示线
format: '{point.name}: {point.percentage}'
}
},
},
series: [{
type: 'pie',
name: '占比',
center: ['50%', '50%'],
point: {
events: {
mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中
chartData.forEach((item, index) => {
item.sliced = false
item.selected = false
})
chartData[e.target.index].sliced = true
chartData[e.target.index].selected = true
chart.update({
series: [{
type: 'pie',
name: '占比',
point: {
events: {
click: function (e) {
that.showChartLTipDouble(e.point.name)
}
}
},
data: chartData
}]
})
timer && clearInterval(timer);
},
mouseOut: function () { // 鼠标移出后需要继续执行轮播
var points = chart.series[0].points;
var len = points.length;
timer && clearInterval(timer);
timer = setInterval(function () {
autoTooltip(points[i]);
chartData.forEach((item, index) => {
item.sliced = false
item.selected = false
if (index == i) {
item.sliced = true
item.selected = true
}
})
chart.update({
series: [{
type: 'pie',
name: '占比',
data: chartData
}]
})
i++;
if (i === len) {
i = 0;
chartData.forEach((item, index) => {
item.sliced = false
item.selected = false
})
chart.update({
series: [{
type: 'pie',
name: '占比',
data: chartData
}]
})
}
}, 2000);
}
}
},
data: chartData
}]
}
if (chart) {
chart.destroy();
}
var chart = Highcharts.chart('echartL2', option);
function autoTooltip(point) {
chart.tooltip.refresh(point);
}
},
initBarCharts(el, data, markLine = [15.3, 50.8, 69.2]) {
this.workEcharts = echarts.init(el);
let markLine1 = []
let markLine2 = []
let markLine3 = []
data.x.forEach(item => {
markLine1.push(markLine[0])
markLine2.push(markLine[1])
markLine3.push(markLine[2])
})
var option = {
tooltip: { //提示框组件
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
formatter: '{b}
{a0}: {c0}
{a1}: {c1}',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
type: 'shadow',
label: {
backgroundColor: '#6a7985'
}
},
textStyle: {
color: '#fff',
fontFamily: '微软雅黑',
fontSize: 30,
}
},
grid: {
left: '9%',
right: '9%',
bottom: 60,
top: 50,
},
legend: { //图例组件,颜色和名字
right: 0,
top: 0,
icon: "circle",
data: [{
name: '目标值',
}, {
name: '实际值',
}, {
name: "社会平均",
}, {
name: "省企平均"
}, {
name: "央企平均"
}],
textStyle: {
color: '#a8aab0',
fontFamily: '微软雅黑',
fontSize: 30,
}
},
xAxis: [{
type: 'category',
boundaryGap: true, //坐标轴两边留白
data: data.x,
axisLabel: { //坐标轴刻度标签的相关设置。
interval: 0, //设置为 1,表示『隔一个标签显示一个标签』
// rotate: 30,
textStyle: {
color: '#fff',
fontFamily: '微软雅黑',
fontSize: 30,
},
// formatter: function(value) {
// // 将文字进行换行
// let list = value.split("")
// if(list.length == 5){
// list[3] = ""
// }
// if(list.length > 4){
// list[4] = ""
// }
// return list[0] + list[1] + "\n" + list[2] + list[3];
// }
},
axisTick: { //坐标轴刻度相关设置。
show: false,
},
axisLine: { //坐标轴轴线相关设置
lineStyle: {
color: '#fff',
opacity: 0.2
}
},
splitLine: { //坐标轴在 grid 区域中的分隔线。
show: false,
}
}],
yAxis: [{
name: "万元/人",
type: 'value',
splitNumber: 5,
axisLabel: {
textStyle: {
color: '#FFF',
fontFamily: '微软雅黑',
fontSize: 28,
}
},
nameTextStyle: {
color: "#a8aab0",
fontSize: 28
},
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false,
lineStyle: {
color: ['#fff'],
}
}
}],
series: [{
name: '目标值',
type: 'bar',
data: data.y2,
barWidth: 20,
barGap: 0.2, //柱间距离
label: { //图形上的文本标签
show: false,
position: 'top',
textStyle: {
color: '#a8aab0',
fontFamily: '微软雅黑',
fontSize: 30,
},
},
itemStyle: { //图形样式
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#9e65ea',
},
{
offset: 1,
color: '#051F41',
}
], false),
},
},
{
name: '实际值',
type: 'bar',
data: data.y1,
barWidth: 20,
barGap: 0, //柱间距离
label: { //图形上的文本标签
show: false,
position: 'top',
textStyle: {
color: '#a8aab0',
fontFamily: '微软雅黑',
fontSize: 30,
},
},
itemStyle: { //图形样式
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 1,
color: '#051F41'
}, {
offset: 0,
color: '#84fab0'
}], false),
},
},
{
type: "line",
name: "社会平均",
smooth: false,
showSymbol: false, // 节点长显
lineStyle: {
type: "dashed",
with: 5,
color: "#fff"
},
itemStyle: {
color: "#fff"
},
markLine: {
symbol: ['none'],
silent: true,
data: [{
yAxis: markLine[0],
name: markLine[0],
lineStyle: {
type: "dashed",
width: 3,
color: '#fff'
},
label: {
show: true,
distance: 10,
fontWeight: "lighter",
formatter: markLine[0],
fontSize: 30,
fontWeight: "bolder",
color: '#fff'
},
}]
},
symbolSize: 0,
data: markLine1
},
{
type: "line",
name: "省企平均",
data: markLine2,
smooth: false,
showSymbol: false, // 节点长显
symbolSize: 0,
lineStyle: {
with: 5,
type: "dashed",
color: "rgb(0, 255, 242)"
},
itemStyle: {
color: "rgb(0, 255, 242)"
},
markLine: {
symbol: ['none'],
silent: true,
data: [{
yAxis: markLine[1],
name: markLine[1],
lineStyle: {
type: "dashed",
width: 3,
color: 'rgb(0, 255, 242)'
},
label: {
show: true,
distance: 10,
fontWeight: "lighter",
formatter: markLine[1],
fontSize: 30,
fontWeight: "bolder",
color: 'rgb(0, 255, 242)'
},
}]
},
}, {
type: "line",
name: "央企平均",
data: markLine3,
symbolSize: 0,
smooth: false,
showSymbol: false, // 节点长显
lineStyle: {
type: "dashed",
with: 5,
color: "#f9d423"
},
itemStyle: {
color: "#f9d423"
},
markLine: {
symbol: ['none'],
silent: true,
data: [{
yAxis: markLine[2],
name: markLine[2],
lineStyle: {
type: "dashed",
width: 3,
color: '#f9d423'
},
label: {
show: true,
distance: 10,
formatter: markLine[2],
fontSize: 30,
fontWeight: "bolder",
color: '#f9d423'
},
}]
},
}
]
};
this.workEcharts.setOption(option);
tools.loopShowTooltip(this.workEcharts, option, {
nterval: 2000,
loopSeries: true,
});
window.addEventListener("resize", function () {
this.workEcharts.resize();
});
},
initBarChartsElse(el, data, name, lineInfo) {
this.efficiency = echarts.init(el);
let markLine = []
data.x.forEach(item => {
markLine.push(lineInfo.value)
})
var option = {
tooltip: { //提示框组件
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
formatter: '{b}
{a0}: {c0}
{a1}: {c1}',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: {
type: 'shadow',
label: {
backgroundColor: '#6a7985'
}
},
textStyle: {
color: '#fff',
fontFamily: '微软雅黑',
fontSize: 30,
}
},
grid: {
left: '10%',
right: '11%',
bottom: 60,
top: 50,
},
legend: { //图例组件,颜色和名字
right: 10,
top: 0,
icon: "circle",
itemGap: 16,
itemWidth: 18,
itemHeight: 10,
data: [{
name: '目标值',
}, {
name: '实际值',
}, {
name: lineInfo.name,
}],
textStyle: {
color: '#a8aab0',
fontFamily: '微软雅黑',
fontSize: 30,
}
},
xAxis: [{
type: 'category',
boundaryGap: true, //坐标轴两边留白
data: data.x,
axisLabel: { //坐标轴刻度标签的相关设置。
interval: 0,
textStyle: {
color: '#fff',
fontFamily: '微软雅黑',
fontSize: 30,
}
},
axisTick: { //坐标轴刻度相关设置。
show: false,
},
axisLine: { //坐标轴轴线相关设置
lineStyle: {
color: '#fff',
opacity: 0.2
}
},
splitLine: { //坐标轴在 grid 区域中的分隔线。
show: false,
}
}],
yAxis: [{
name,
type: 'value',
splitNumber: 5,
axisLabel: {
textStyle: {
color: '#FFF',
fontFamily: '微软雅黑',
fontSize: 28,
}
},
nameTextStyle: {
color: "#a8aab0",
fontSize: 30
},
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false,
lineStyle: {
color: ['#fff'],
}
}
}],
series: [{
name: '目标值',
type: 'bar',
data: data.y2,
barWidth: 20,
barGap: 0, //柱间距离
label: { //图形上的文本标签
show: false,
position: 'top',
textStyle: {
color: '#a8aab0',
fontFamily: '微软雅黑',
fontSize: 30,
},
},
itemStyle: { //图形样式
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#9e65ea',
},
{
offset: 1,
color: '#051F41',
}
], false),
},
},
{
name: '实际值',
type: 'bar',
data: data.y1,
barWidth: 20,
barGap: 0, //柱间距离
label: { //图形上的文本标签
show: false,
position: 'top',
textStyle: {
color: '#a8aab0',
fontFamily: '微软雅黑',
fontSize: 30,
},
},
itemStyle: { //图形样式
barBorderRadius: [10, 10, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 1,
color: '#051F41'
}, {
offset: 0,
color: '#84fab0'
}], false),
},
markLine: {
symbol: ['none'],
silent: true,
data: [{
yAxis: lineInfo.value,
name: lineInfo.name,
lineStyle: {
type: "dashed",
width: 3,
color: 'rgb(0, 255, 242)'
},
label: {
show: true,
distance: 20,
fontSize: 30,
fontWeight: "bolder",
color: 'rgb(0, 255, 242)',
formatter: lineInfo.value,
},
}]
},
}, {
type: "line",
name: lineInfo.name,
data: markLine,
symbolSize: 0,
smooth: false,
showSymbol: false, // 节点长显
lineStyle: {
type: "dashed",
color: "rgb(0, 255, 242)"
},
itemStyle: {
color: "rgb(0, 255, 242)"
}
}
]
};
this.efficiency.setOption(option);
tools.loopShowTooltip(this.efficiency, option, {
nterval: 2000,
loopSeries: true,
});
window.addEventListener("resize", function () {
this.efficiency.resize();
});
},
initBarEcharts(el, data, nameList) {
let chart = echarts.init(el);
var scale = 2;
var singleData = data.y1;
var multipleData = []
let max = 0;
data.y1.forEach(item => {
max = max + item
})
data.y1.forEach(item => {
let num = ((item / max) * 100).toFixed(2)
multipleData.push(num)
})
var color = "#fff";
option = {
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: "{a}: {c}{a1}: {c1} %"
},
// legend: {
// data: nameList,
// align: 'left',
// itemGap: 50,
// // x: 'right',
// right: '1%',
// y: '1%',
// icon: 'rect',
// itemWidth: 15 * scale, // 图例图形宽度
// itemHeight: 15 * scale, // 图例图形高度
// textStyle: {
// color: "#3fdaff",
// fontSize: 16 * scale
// }
// },
grid: {
left: '20%',
right: '10%',
bottom: '13%',
top: "7%",
// containLabel: true
},
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
xAxis: [{
type: 'category',
data: data.x,
axisLabel: {
// inside: true,
interval: 0,
padding: [15, 0, 0, 0],
textStyle: {
color: "#fff",
fontSize: 30,
}
},
axisTick: {
inside: true,
length: 8 * scale,
lineStyle: {
color: color,
}
},
axisLine: {
show: false,
lineStyle: {
color: color,
}
},
splitLine: {
lineStyle: {
color: 'rgba(80,224,255,0.3)',
type: 'dashed'
}
}
}],
yAxis: [{
type: 'value',
// name: "当前数",
axisLabel: {
// inside: true,
padding: [0, 15, 0, 0],
textStyle: {
color: color,
fontSize: 28,
}
},
axisTick: {
show: false,
lineStyle: {
color: color,
}
},
axisLine: {
show: false,
lineStyle: {
color: color,
}
},
splitLine: {
lineStyle: {
color: '#fff',
type: 'dashed'
},
show: false,
},
nameTextStyle: {
show: false,
color: "#fff",
fontSize: 16 * scale,
padding: [0, 0, 10, 0]
}
}, {
type: 'value',
// name: "占比",
min: 0,
max: 100,
axisLabel: {
// inside: true,
padding: [0, 15, 0, 0],
textStyle: {
color: color,
fontSize: 28,
}
},
axisTick: {
show: false,
lineStyle: {
color: color,
}
},
axisLine: {
lineStyle: {
color: color,
}
},
splitLine: {
lineStyle: {
color: '#fff',
type: 'dashed'
},
show: false,
},
nameTextStyle: {
show: false,
color: "#fff",
fontSize: 16 * scale,
padding: [0, 0, 10, 0]
}
}],
series: [{
name: nameList[0],
type: 'bar',
barWidth: '15%',
barGap: '40%',
itemStyle: {
color: 'rgba(94,218,255,0.4)',
},
data: singleData
},
{
name: "占比",
yAxisIndex: 1,
type: 'line',
barWidth: '15%',
barGap: '40%',
itemStyle: {
color: '#ffc72b',
},
data: multipleData
}
]
};
chart.setOption(option);
tools.loopShowTooltip(chart, option, {
nterval: 2000,
loopSeries: true,
});
window.addEventListener("resize", function () {
chart.resize();
});
},
initBarEchartsElse(el, data, nameList) {
let chart = echarts.init(el);
var scale = 2;
var singleData = data.y1;
var multipleData = data.y2;
var color = "#fff";
option = {
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: '{b}
{a0}: {c0}
{a1}: {c1}',
},
legend: {
data: nameList,
align: 'left',
// itemGap: 50,
// x: 'right',
right: '1%',
y: '1%',
// icon: 'rect',
textStyle: {
color: "#fff",
fontSize: 30
}
},
grid: {
top: "10%",
left: '6%',
right: '4%',
bottom: '20%',
},
xAxis: [{
type: 'category',
data: data.x,
axisLabel: {
// inside: true,
// rotate: 30,
interval: 0,
padding: [15, 0, 0, 0],
textStyle: {
color: "#fff",
fontSize: 30,
},
formatter: function (value) {
// 将文字进行换行
let list = value.split("")
if (list.length == 5) {
list[3] = ""
}
if (list.length > 4) {
list[4] = ""
}
return list[0] + list[1] + "\n" + list[2] + list[3];
}
},
axisTick: {
show: false,
inside: true,
length: 8 * scale,
lineStyle: {
color: color,
}
},
axisLine: {
show: false,
lineStyle: {
color: color,
}
},
splitLine: {
show: false,
lineStyle: {
color: 'rgba(80,224,255,0.3)',
type: 'dashed'
}
}
}],
yAxis: [{
type: 'value',
axisLabel: {
// inside: true,
padding: [0, 15, 0, 0],
textStyle: {
color: color,
fontSize: 28,
}
},
axisTick: {
show: false,
lineStyle: {
color: color,
}
},
axisLine: {
show: false,
lineStyle: {
color: color,
}
},
splitLine: {
show: false,
lineStyle: {
color: '#fff',
type: 'dashed'
},
show: false,
},
nameTextStyle: {
color: "#fff",
fontSize: 16 * scale,
padding: [0, 0, 10, 0]
}
}],
series: [{
name: nameList[0],
type: 'bar',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 1,
color: "#02355C",
}, //柱图渐变色
{
offset: 0,
color: "#45DAD1",
},
], false),
},
barWidth: 20,
label: {
show: false,
position: "top",
align: "center",
},
data: singleData
},
{
name: nameList[1],
type: 'line',
symbolSize: 20,
itemStyle: {
color: '#40A9FF',
},
smooth: false,
showSymbol: true, // 节点长显
barWidth: 20,
data: multipleData
},
// {
// name: nameList[1],
// type: 'line',
// barWidth: '15%',
// barGap: '40%',
// label: {
// show: false,
// position: "top",
// align: "center",
// },
// itemStyle: {
// color: '#ffc72b',
// },
// data: multipleData
// },
// {
// name: nameList[1],
// type: 'bar',
// barWidth: '15%',
// barGap: '40%',
// itemStyle: {
// color: 'rgba(94,218,255,0.4)',
// },
// label: {
// show: false,
// position: "top",
// align: "center",
// },
// data: multipleData
// },
]
};
chart.setOption(option);
tools.loopShowTooltip(chart, option, {
nterval: 2000,
loopSeries: true,
});
window.addEventListener("resize", function () {
chart.resize();
});
},
initStereoscopic(el, data) {
this.stereoscopic = echarts.init(el);
option = {
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
grid: {
top: 30,
bottom: 35,
left: 90,
right: 10,
textStyle: {
color: "#fff"
}
},
legend: {
icon: 'circle',
right: '4%',
top: '4%',
textStyle: {
color: '#fff',
fontSize: 30
},
data: ['缓冲池', '待岗池', '共享池']
},
calculable: true,
xAxis: [{
type: "category",
axisLine: {
show: false,
lineStyle: {
color: '#fff'
}
},
splitLine: {
show: false
},
axisTick: {
show: false
},
splitArea: {
show: false
},
axisLabel: {
// inside: true,
interval: 0,
textStyle: {
color: "#fff",
fontSize: 28,
}
},
data: data.x,
}],
yAxis: [{
type: "value",
splitLine: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: '#fff'
}
},
axisTick: {
show: false
},
axisLabel: {
textStyle: {
color: "#fff",
fontSize: 28,
}
},
splitArea: {
show: false
},
// data: ['中止合同人员', '双创人员', '考核待岗人员'],
}],
series: [{
name: "缓冲池",
type: "bar",
stack: "value",
barMaxWidth: 15,
barGap: "10%",
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#FF9915'
}, {
offset: 1,
color: 'rgba(245,221,111,0)'
}]),
borderColor: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#FF9915'
}, {
offset: 1,
color: 'rgba(245,221,111,0)'
}]),
},
data: data.y1,
},
{
name: "待岗池",
type: "bar",
stack: "value",
barMaxWidth: 15,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#9e65ea'
}, {
offset: 1,
color: 'rgba(24,191,207,0)'
}]),
borderColor: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#9e65ea'
}, {
offset: 1,
color: 'rgba(24,191,207,0)'
}]),
},
data: data.y2
},
{
name: "共享池",
type: "bar",
stack: "value",
barMaxWidth: 15,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(24,191,207,1)'
}, {
offset: 1,
color: 'rgba(24,191,207,0)'
}]),
borderColor: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: 'rgba(24,191,207,1)'
}, {
offset: 1,
color: 'rgba(24,191,207,0)'
}]),
},
data: data.y3
},
]
}
this.stereoscopic.setOption(option);
tools.loopShowTooltip(this.stereoscopic, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function () {
// chart.resize();
// });
},
initHorizontalBar(el) {
let chart = echarts.init(el);
var bg =
'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARYAAAAUCAMAAAB/LOLCAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAD9QTFRFAABwAAAAAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwAABwrxv9agAAABV0Uk5T/wA1p053q7yaZs0QRIlVJ++IId4ydKfDYQAAAFtJREFUeJzt0McNwDAQwLBzutPb/rMG/gbawOIIjCQQqYtoqxYxckv1BlvQZAvabEG9LSjbgnZb0GoLOV9byHPbQubFFjLaggZb0GQLumxBvS0ol5aj0U9pEfgA+DsJLXE1TzAAAAAASUVORK5CYII=';
var bar =
'image://data:image/png;base64,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';
var data = [10, 15];
var barWidth = 20;
var maxNum = 0;
for (var i = 0; i < data.length; i++) {
if (data[i] > maxNum) {
maxNum = data[i];
}
}
option = {
grid: {
top: '10%',
left: '20%',
right: '15%',
bottom: '0%',
},
xAxis: {
show: false,
},
yAxis: {
data: ["共享队伍", "共享单位"],
splitLine: {
show: false,
},
axisLabel: {
textStyle: { fontSize: 20, color: '#fff' },
},
axisLine: {
show: false,
},
axisTick: false,
},
series: [{
type: 'pictorialBar',
barWidth: barWidth,
zlevel: 2,
data: data.map(function (item) {
return {
value: item,
symbol: bar,
};
}),
},
{
type: 'pictorialBar',
barWidth: barWidth,
data: data.map(function (item) {
return {
realValue: item,
value: maxNum,
symbol: bg,
};
}),
label: {
show: true,
position: 'right',
distance: 150,
align: "right",
formatter: function (params) {
if (params.name != "共享队伍") {
return params.data.realValue + ' 个';
} else {
return params.data.realValue + ' 支';
}
},
color: '#fff',
fontSize: 35,
},
},
],
};
chart.setOption(option);
tools.loopShowTooltip(chart, option, {
nterval: 2000,
loopSeries: true,
});
window.addEventListener("resize", function () {
chart.resize();
});
},
initProvinceChart(el, mapData = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) {
var data = [{
name: '大同市',
value: mapData[0].value,
},
{
name: '朔州市',
value: mapData[1].value,
},
{
name: '忻州市',
value: mapData[2].value,
},
{
name: '吕梁市',
value: mapData[3].value,
},
{
name: '太原市',
value: 1,
},
{
name: '阳泉市',
value: mapData[5].value,
},
{
name: '晋中市',
value: mapData[6].value,
},
{
name: '长治市',
value: 0,
},
{
name: '临汾市',
value: mapData[8].value,
},
{
name: '晋城市',
value: mapData[9].value,
},
{
name: '运城市',
value: mapData[10].value,
}
]
for (let i = 0; i < data.length; i++) {
const name = data[i].name;
const mapDataObj = mapData.find(obj => obj.name === name);
if (mapDataObj) {
data[i].value = mapDataObj.value;
data[i].value2 = mapDataObj.value;
}
}
// data:image/png;base64,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
let formdata = '太原' // 中心点
this.geoCoordMap = []
/*获取地图数据*/
this.mapChart = echarts.init(el)
echarts.registerMap('shanxi', jsonData)
var mapFeatures = echarts.getMap('shanxi').geoJson.features
mapFeatures.forEach(v => {
// 地区名称
var name = v.properties.name
// 地区经纬度
this.geoCoordMap[name] = v.properties.centroid
// 按照地图乱序
// data.push({ name: v.properties.name, value: v.properties.centroid[0], value2: v.properties.centroid[1] })
})
// 地图数据
var chinaGeoCoordMap = {
太原市: [111.949248, 38.057014],
大同市: [113.595259, 40.29031],
阳泉市: [113.505474, 37.964652],
长治市: [112.813556, 36.791112],
晋城市: [112.551274, 35.577553],
朔州市: [112.433387, 39.531261],
晋中市: [112.936465, 37.696495],
运城市: [111.003957, 35.59],
忻州市: [112.333538, 38.7769],
临汾市: [111.517973, 36.48415],
吕梁市: [111.134335, 37.524366],
}
// 飞线点数据
var chinaDatas = [
[{
name: '太原市',
value: 0,
},],
[{
name: '大同市',
value: 0,
},],
[{
name: '阳泉市',
value: 0,
},],
[{
name: '长治市',
value: 0,
},],
[{
name: '晋城市',
value: 0,
},],
[{
name: '朔州市',
value: 0,
},],
[{
name: '晋中市',
value: 9,
},],
[{
name: '运城市',
value: 0,
},],
[{
name: '忻州市',
value: 0,
},],
[{
name: '临汾市',
value: 0,
},],
[{
name: '吕梁市',
value: 0,
},],
]
var convertData = function (data) {
var res = []
for (var i = 0; i < data.length; i++) {
var dataItem = data[i]
var fromCoord = chinaGeoCoordMap[dataItem[0].name]
var toCoord = [112.549248, 37.857014] //中心点地理坐标
if (fromCoord && toCoord) {
res.push([{
// 飞线从哪里出发
coord: toCoord,
},
{
// 飞线去往哪里
coord: fromCoord,
value: dataItem[0].value,
},
])
}
}
return res
}
var series = [];
[
[formdata, chinaDatas]
].forEach(function (item) {
series.push({
type: 'lines',
name: "模拟数据",
coordinateSystem: 'geo',
zlevel: 2,
effect: {
show: true,
period: 5, //值越小 速度越快
trailLength: 0.3, // 0-1 值越大,越拖
symbol: 'pin', //箭头图标
symbolSize: 8, //图标大小
color: "#E6C50B"
},
lineStyle: {
show: true,
type: 'dashed',
width: 2, //尾迹线条宽度
opacity: 0.1, //尾迹线条透明度
curveness: 0.3, //尾迹线条曲直度
color: '#E6C50B', // 飞线颜色
},
data: convertData(item[1]),
}, {
type: 'effectScatter',
coordinateSystem: 'geo',
zlevel: 2,
rippleEffect: {
//涟漪特效
period: 10, //动画时间,值越小速度越快
brushType: 'stroke', //波纹绘制方式 stroke, fill
scale: 10, //波纹圆环最大限制,值越大波纹越大
color: '#E6C50B',
},
itemStyle: {
color: '#E6C50B',
shadowBlur: 10,
shadowColor: '#E6C50B',
},
label: {
formatter: '{b}',
position: 'right',
offset: [15, 0],
color: '#fff',
show: true
},
symbol: 'circle',
symbolSize: 9,
data: item[1].map(function (dataItem) {
return {
itemStyle: {
color: '#fff' // 修改标点的颜色
},
//在这里定义你所要展示的数据
name: dataItem[0].name,
value: chinaGeoCoordMap[dataItem[0].name].concat([dataItem[0].value]),
}
}),
})
})
let effectScatterData = [{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 534, "山西焦煤机关",],
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 14972, "山煤国际",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 91, "物资装备公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 111, "金土地公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 835, "销售公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 117, "国发公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 582, "投资公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 117, "人力资源公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 10, "金融资本公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 843, "民爆集团",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 47, "新能源公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "晋中市",
value: [112.936465, 37.696495, 48912, "汾西矿业",]
// value: [112.936465, 37.696495, 49047, "汾西矿业",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 65704, "西山煤电",]
},
{
itemStyle: {
color: "#fff"
},
name: "临汾市",
value: [111.517973, 35.88415, 52899, "霍州煤电",]
// value: [111.517973, 35.88415, 53563, "霍州煤电",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 67, "交易中心",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 48, "招标公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "临汾市",
value: [111.517973, 35.88415, 9508, "山西焦化",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 13, "油品公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 29, "低碳公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "吕梁市",
value: [111.134335, 37.524366, 10812, "华晋焦煤",]
// value: [111.134335, 37.524366, 9960, "华晋焦煤",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 10, "云数据公司",]
},
{
itemStyle: {
color: "#fff"
},
name: "太原市",
value: [111.949248, 37.957014, 218, "焦煤置业",]
},
{
itemStyle: {
color: "#fff"
},
name: "吕梁市",
value: [111.134335, 37.524366, 10812, "华晋焦煤",]
},
]
series[1].data.forEach(item => {
item.img = 'image://https://madeapie.com/asset/get/s/data-1619059838735-QE9mBZmhh.png'
})
const result = effectScatterData.reduce((acc, obj) => {
const { name, value } = obj;
const existingItem = acc.find(item => item.name === name);
if (existingItem) {
existingItem.values.push(value[2]);
} else {
acc.push({ name, values: [value[2]] });
}
return acc;
}, []);
result.forEach(item => {
data.forEach(i => {
if (item.name == i.name) {
i.value = item.values.reduce((accumulator, currentValue) => {
return accumulator + currentValue;
}, 0);
}
})
})
let option = {
tooltip: {
trigger: "item",
padding: 15,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
enterable: true,
transitionDuration: 1,
formatter: (params, ticket, callback) => {
// 清空所有轮播
for (var k in this.geoCoordMap) {
this.mapChart.dispatchAction({
// type: 'geoUnSelect',
type: 'downplay',
name: k,
})
}
// 如果鼠标滑动到线线上面,则返回空
this.mapChart.dispatchAction({
// type: 'geoSelect',
type: 'highlight',
name: params.name,
})
if (params.componentSubType == 'lines') {
return
}
if (params.componentSubType == 'effectScatter') {
let tipHtml = `
`
callback(ticket, tipHtml)
return tipHtml
}
if (params.componentSubType == 'map') {
return
}
},
},
// visualMap: {
// show: true,
// min: 0,
// max: 30000,
// left: '2%',
// top: '10%',
// calculable: true,
// seriesIndex: [2],
// inRange: {
// color: ['#013d95', '#d4bc1d'] // 蓝绿
// }
// },
geo: {
show: true,
map: 'shanxi',
layoutCenter: ['51%', '56%'], //地图位置
layoutSize: '100%',
aspectScale: 0.6,
regionHeight: 5,
zoom: 1.4, //当前视角的缩放比例
// roam: true, //是否开启平游或缩放
scaleLimit: { //滚轮缩放的极限控制
min: 1,
max: 2
},
roam: false,
itemStyle: {
areaColor: '#25B9E9',
shadowColor: '#25B9E9',
borderWidth: 6, //设置外层边框
borderColor: '#00FFFF',
shadowOffsetX: 5,
shadowOffsetY: 5,
shadowBlur: 5,
emphasis: {
areaColor: '#013d95',
borderColor: '#e7e1a0',
borderWidth: 4, //设置外层边框
},
},
},
series: [
// 区域散点图
{
type: 'effectScatter',
coordinateSystem: 'geo',
zlevel: 2,
rippleEffect: {
//涟漪特效
period: 2, //动画时间,值越小速度越快
brushType: 'stroke', //波纹绘制方式 stroke, fill
scale: 8, //波纹圆环最大限制,值越大波纹越大
color: '#d4bc1d',
},
emphasis: {
itemStyle: {
color: '#d4bc1d'
}
},
label: {
show: true,
},
symbol: 'circle',
symbolSize: 0,
data: effectScatterData,
// data: series[1].data,
},
{
type: 'effectScatter',
coordinateSystem: 'geo',
zlevel: 2,
rippleEffect: {
//涟漪特效
period: 2, //动画时间,值越小速度越快
brushType: 'stroke', //波纹绘制方式 stroke, fill
scale: 8, //波纹圆环最大限制,值越大波纹越大
color: '#d4bc1d',
},
emphasis: {
itemStyle: {
color: '#d4bc1d',
}
},
label: {
show: true,
},
symbol: 'circle',
symbolSize: 30,
data: series[1].data,
},
// 地图数据
{
type: 'map',
mapType: 'shanxi',
aspectScale: 0.6,
layoutCenter: ["50%", "55%"], //地图位置
layoutSize: '100%',
zoom: 1.4, //当前视角的缩放比例
// roam: true, //是否开启平游或缩放
scaleLimit: { //滚轮缩放的极限控制
min: 1,
max: 2
},
label: {
show: true,
position: 'right',
formatter: '{b}',
color: '#fff',
fontSize: 32,
fontWeight: "bolder"
},
itemStyle: {
areaColor: '#1C4FBB',
borderColor: 'rgba(5,216,252,0.7)',
borderWidth: 6, //隐藏省界线
shadowColor: 'rgba(5,216,252,0.7)',
shadowBlur: 90,
emphasis: {
areaColor: 'rgba(25,79,183,0.6)',
borderColor: '#d4bc1d',
borderWidth: 8, //设置外层边框
label: {
color: "#fff"
}
}
},
data: data,
},
// 线 和 点
{
type: 'lines',
zlevel: 1, //设置这个才会有轨迹线的小尾巴
effect: {
show: true,
period: 3,
trailLength: 0.1,
color: '#d4bc1d', //流动点颜色
symbol: 'arrow',
symbolSize: 15
},
lineStyle: {
color: '#d4bc1d', //线条颜色
show: true,
type: "dashed",
width: 5,
opacity: 0.4,
curveness: 0.2
},
data: series[0].data
},
],
}
let that = this
this.mapChart.on('click', function (params) {
if (params.name == '太原市') {
that.showChartLTipDouble('太原市')
}
})
tools.loopShowTooltip(this.mapChart, option, {
interval: 2000,
loopSeries: false,
});
this.mapChart.setOption(option)
// window.addEventListener("resize", function() {
// this.mapChart.resize();
// });
},
initTwoBarEcharts(el, data) {
this.twoBar = echarts.init(el);
option = {
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: "{c}"
},
grid: {
top: '15%',
right: '3%',
left: '14%',
bottom: 35
},
xAxis: [{
type: 'category',
data: data.x,
axisLine: {
show: false,
lineStyle: {
color: 'rgba(255,255,255,0.12)'
}
},
axisLabel: {
interval: 0,
// rotate: 30,
color: '#e2e9ff',
textStyle: {
fontSize: 30
},
},
}],
yAxis: [{
name: '',
axisLabel: {
formatter: '{value}',
color: '#fff',
textStyle: {
fontSize: 28,
},
},
axisTick: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: 'rgba(255,255,255,1)'
}
},
splitLine: {
show: false,
lineStyle: {
color: 'rgba(255,255,255,0.12)'
}
}
}],
series: [{
type: 'bar',
data: data.y,
barWidth: '20px',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 1,
color: "#02355C",
}, //柱图渐变色
{
offset: 0,
color: "#45DAD1",
},
], false),
shadowColor: 'rgba(0,160,221,1)',
shadowBlur: 4,
},
}]
};
this.twoBar.setOption(option);
tools.loopShowTooltip(this.twoBar, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function() {
// this.twoBar.resize();
// });
},
initEchartsBar(el, data, color) {
this.studentEcharts = echarts.init(el);
data.x.forEach(item => {
item = item.slice(0, -2)
})
let xLabel = data.x
option = {
grid: {
top: "15%",
bottom: "10%", //也可设置left和right设置距离来控制图表的大小
left: "1%",
right: "1%"
},
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
formatter: '{c0}',
},
xAxis: {
data: xLabel,
axisLine: {
show: true, //隐藏X轴轴线
lineStyle: {
color: '#11417a'
}
},
axisTick: {
show: false //隐藏X轴刻度
},
axisLabel: {
show: true,
interval: 0,
margin: 14,
textStyle: {
fontSize: 26,
color: "#fff" //X轴文字颜色
}
},
},
yAxis: [{
type: "value",
gridIndex: 0,
// splitNumber: 4,
splitLine: {
show: false,
lineStyle: {
color: '#A3C0DF',
width: 1
},
},
axisTick: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: '#A3C0DF'
}
},
axisLabel: {
show: true,
margin: 14,
fontSize: 20,
textStyle: {
color: "#fff" //X轴文字颜色
}
},
},],
series: [{
name: "实习实训",
type: "bar",
barWidth: 20,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: color
},
{
offset: 1,
color: "#034881"
}
])
},
data: data.y,
z: 10,
zlevel: 0,
"label": {
"show": true,
"position": "top",
"distance": 10,
fontSize: 26,
"color": color
}
},
{
// 分隔
type: "pictorialBar",
itemStyle: {
color: "#0F375F"
},
symbolRepeat: "fixed",
symbolMargin: 6,
symbol: "rect",
symbolClip: true,
symbolSize: [20, 2],
symbolPosition: "start",
symbolOffset: [0, -1],
// symbolBoundingData: this.total,
data: data.y,
width: 25,
z: 0,
zlevel: 1,
},
]
};
this.studentEcharts.setOption(option);
tools.loopShowTooltip(this.studentEcharts, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function() {
// this.studentEcharts.resize();
// });
},
initEchartStack(el, data) {
let that = this;
this.mobilizeFL = echarts.init(el);
option = {
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
grid: {
top: "13%",
bottom: 50, //也可设置left和right设置距离来控制图表的大小
left: "10%",
right: "1%"
},
legend: {
data: ["入职", "内部调动", "跨二级调出", "跨二级调入", "离职",],
align: 'left',
itemGap: 50,
right: '1%',
y: '1%',
icon: 'rect',
textStyle: {
color: "#fff",
fontSize: 30
}
},
xAxis: {
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
show: true,
interval: 0,
fontSize: 30,
textStyle: {
color: "#fff" //X轴文字颜色
},
// formatter: function (value) {
// // 将文字进行换行
// if (value === "人力资源公司") {
// value = "人力公司"
// }
// let list = value.split("")
// if (list.length == 5) {
// list[3] = ""
// return list[0] + list[1] + list[2]
// }
// if (list.length > 4) {
// list[4] = ""
// return list[0] + list[1] + list[2] + list[3];
// }
// return list[0] + list[1] + list[2] + list[3];
// }
},
data: data.x,
},
yAxis: {
type: "value",
gridIndex: 0,
// splitNumber: 4,
splitLine: {
show: false,
lineStyle: {
color: '#A3C0DF',
width: 1
},
},
axisTick: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: '#A3C0DF'
}
},
axisLabel: {
show: true,
margin: 14,
fontSize: 28,
textStyle: {
color: "#fff" //X轴文字颜色
}
},
},
series: [{
type: 'bar',
stack: 'total',
name: "内部调动",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#172A45',
},
{
offset: 1,
color: '#FF9915',
},
]),
},
data: data.y2,
},
{
type: 'bar',
name: "入职",
stack: 'total',
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#91231F',
},
{
offset: 1,
color: '#F98784',
},
]),
},
data: data.y1,
},
{
type: 'bar',
name: "离职",
stack: 'total',
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#69C0FF',
},
{
offset: 1,
color: '#1a98f8',
},
]),
},
data: data.y5,
},
{
type: 'bar',
name: "跨二级调出",
stack: 'total',
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#07806E',
},
{
offset: 1,
color: '#79FFEB',
},
]),
},
data: data.y3,
},
{
type: 'bar',
stack: 'total',
name: "跨二级调入",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#9e65ea',
},
{
offset: 1,
color: '#514ddd',
},
]),
},
data: data.y4,
},
],
};
this.mobilizeFL.on('click', function (params) {
that.getTurnOverDetail(params.name)
// 获取点击事件的参数信息
setTimeout(() => {
that.isShowMark = true
that.salaryFlag = false
that.pdfFlag = false
that.mobilizeFlag = true
}, 10)
// 在这里进行相应的处理逻辑
});
this.mobilizeFL.setOption(option);
tools.loopShowTooltip(this.mobilizeFL, option, {
nterval: 2000,
loopSeries: true,
});
window.addEventListener("resize", function () {
this.mobilizeFL.resize();
});
},
initDownholeEcharts(el, data, type) {
this.downhole = echarts.init(el);
let series = []
let grid = {}
if (type == 1) {
series.push({
type: 'bar',
name: "一级专员",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#FFFB7D',
},
{
offset: 1,
color: '#85FFBD',
},
]),
},
data: data.y[0],
})
series.push({
type: 'bar',
name: "二级专员",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#8BC6EC',
},
{
offset: 1,
color: '#9599E2',
},
]),
},
data: data.y[1],
})
series.push({
type: 'bar',
name: "一级技工",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#80D0C7 ',
},
{
offset: 1,
color: '#0093E9',
},
]),
},
data: data.y[2],
})
series.push({
type: 'bar',
name: "二级技工",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#52ACFF',
},
{
offset: 1,
color: '#FFE32C',
},
]),
},
data: data.y[3],
})
// series.push({
// type: 'bar',
// name: "区队干",
// barWidth: 26,
// itemStyle: {
// color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
// {
// offset: 0,
// color: '#69C0FF',
// },
// {
// offset: 1,
// color: '#1a98f8',
// },
// ]),
// },
// data: data.y[2],
// })
grid = {
top: "13%",
bottom: 50, //也可设置left和right设置距离来控制图表的大小
left: "10%",
right: "1%"
}
} else if (type == 2) {
series.push({
type: 'bar',
name: "井下一线",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#07806E',
},
{
offset: 1,
color: '#79FFEB',
},
]),
},
data: data.y[0],
})
series.push({
type: 'bar',
name: "井下辅助",
barWidth: 26,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [{
offset: 0,
color: '#9e65ea',
},
{
offset: 1,
color: '#514ddd',
},
]),
},
data: data.y[1],
})
grid = {
top: "13%",
bottom: 50, //也可设置left和right设置距离来控制图表的大小
left: "15%",
right: "1%"
}
}
option = {
tooltip: {
show: true,
backgroundColor: 'rgba(0, 0, 0, 0.5)',
borderColor: "rgba(0,0,0,0.5)",
trigger: 'axis',
textStyle: {
fontSize: 30,
color: '#A3E2F4'
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
grid,
legend: {
data: ["一级专员", "二级专员", "一级技工", "二级技工", "井下一线", "井下辅助",],
align: 'left',
itemGap: 50,
right: '1%',
y: '1%',
icon: 'rect',
textStyle: {
color: "#fff",
fontSize: 30
}
},
xAxis: {
axisTick: {
show: false,
},
axisLine: {
show: false,
},
axisLabel: {
interval: 0,
show: true,
fontSize: 30,
textStyle: {
color: "#fff" //X轴文字颜色
},
},
data: data.x,
},
yAxis: {
type: "value",
gridIndex: 0,
// splitNumber: 4,
splitLine: {
show: false,
lineStyle: {
color: '#A3C0DF',
width: 1
},
},
axisTick: {
show: false
},
axisLine: {
show: false,
lineStyle: {
color: '#A3C0DF'
}
},
axisLabel: {
show: true,
margin: 14,
fontSize: 28,
textStyle: {
color: "#fff" //X轴文字颜色
}
},
},
series: series
};
this.downhole.setOption(option);
tools.loopShowTooltip(this.downhole, option, {
nterval: 2000,
loopSeries: true,
});
// window.addEventListener("resize", function() {
// this.downhole.resize();
// });
},
handleWarning() {
this.isShowMark = false
this.isShowMark = true
this.salaryFlag = true
this.pdfFlag = false
this.mobilizeFlag = false
this.echartsMark = false
},
handleMark() {
this.isShowMark = false
this.salaryFlag = false
this.pdfFlag = false
this.selectFlag = false
this.warningFlag = false
this.mobilizeFlag = false
this.echartsMark = false
this.studioMark = false
this.listFlag = false
this.listInterval && clearInterval(this.listInterval)
this.honorIndex = 0
this.achievementIndex = 0
},
handleStudio(item, index) {
if (index != 0) {
return
}
let that = this;
setTimeout(() => {
that.listFlag = true
}, 4500)
this.handleMark()
this.studioTitle = item.name + "技能大师工作室"
this.isShowMark = true
this.studioMark = true
if (this.isShowRequest) {
studioInformation.data = this.newSkillList[index][0]
leaderInformation.data = this.newSkillList[index][2]
achievementList = this.newSkillList[index][1]
honorList = this.newSkillList[index][3]
}
// if (this.newSkillList[index][0].length < 4) {
// }
},
handleChange() {
this.isShowMark = true
this.salaryFlag = false
this.pdfFlag = false
this.warningFlag = true
this.mobilizeFlag = false
this.echartsMark = false
// this.getSalaryCalProgDetail()
},
handleORG() {
this.isShowMark = true
this.salaryFlag = false
this.pdfFlag = true
this.mobilizeFlag = false
this.echartsMark = false
},
handleClick(item, index) {
let that = this
that.efficiency.dispose()
this.timeTitle && clearInterval(this.timeTitle);
let efficiency = this.$refs.efficiency
if (item == "原煤工效") {
this.titleIndex = 0
that.initBarChartsElse(efficiency, efficiencyList, "吨/工", { name: "行业线", value: 8.2 })
that.titleList = ["原煤工效", "全员效率"]
} else {
this.titleIndex = 1
that.initBarChartsElse(efficiency, wholeList, "吨/人", { name: "标杆矿井线", value: 1800 })
that.titleList = ["全员效率", "原煤工效"]
}
this.timeNt()
},
handleTap1(index) {
if (this.saIndex == index) {
return
}
this.LineChart.dispose();
this.saTimeIndex = 0
clearInterval(this.SAtime);
let serviceAge = this.$refs.serviceAge
if (index == 1) {
this.initLineEcharts(serviceAge, { x: this.ageListX[this.saTimeIndex], y: this.ageListY[this.saTimeIndex] })
} else if (index == 2) {
this.initLineEcharts(serviceAge, { x: this.seniorityListX[this.saTimeIndex], y: this.seniorityListY[this.saTimeIndex] })
}
this.saIndex = index
this.SAtimeFun()
},
handleTap2(index) {
let that = this;
if (this.twoIndex == index) {
return
}
that.twoBar.dispose();
this.twoTimeIndex = 0
clearInterval(this.twoTime);
let echartTwo = that.$refs.echartTwo
if (index == 1) {
that.initTwoBarEcharts(echartTwo, { x: that.nx1[that.twoTimeIndex], y: that.ny1[that.twoTimeIndex] })
} else if (index == 2) {
that.initTwoBarEcharts(echartTwo, { x: that.nx2[that.twoTimeIndex], y: that.ny2[that.twoTimeIndex] })
}
this.twoIndex = index
this.timeTwo()
},
handleChangeTitle(item, index) {
let that = this
if (item == that.titleList[0]) {
return
}
this.studentEcharts.dispose()
let student = this.$refs.student
if (item == "高校分布") {
that.titleList = ["高校分布", "单位分布"]
this.initEchartsBar(student, schoolList, "#07ecd9")
} else {
that.titleList = ["单位分布", "高校分布"]
this.initEchartsBar(student, rightList, "#21D4FD")
}
},
handleUserChange() {
this.getTurnOverDetail()
setTimeout(() => {
this.isShowMark = true
this.salaryFlag = false
this.pdfFlag = false
this.mobilizeFlag = true
}, 10)
},
handleMore() {
this.isShowMark = true
this.salaryFlag = false
this.pdfFlag = false
this.mobilizeFlag = false
this.echartsMark = true
setTimeout(() => {
// this.getlaborproductivity()
// this.getMineEfficiency()
// this.getEmpProductivity()
this.initBarCharts(this.$refs.works, worksList)
this.initBarChartsElse(this.$refs.efficiencyElse, efficiencyList, "吨/工", { name: "行业线", value: 8.2 })
this.initBarChartsElse(this.$refs.whole, wholeList, "吨/人", { name: "标杆矿井线", value: 1800 })
})
},
getAccumulatedLogin() {
let that = this
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/AccumulatedLogin", data).then(res => {
that.loginInfo.num = res.accumulatedLogin
that.loginInfo.unit = res.unit
})
},
getMauInfo() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/MAU", data).then(res => {
that.mauInfo.mau = res.mau
that.mauInfo.unit = res.unit
})
},
scrollChange(index) {
let that = this
if (that.achievementIndex == achievementList.length - 1) {
that.achievementIndex = 0
} else {
that.achievementIndex = that.achievementIndex + 1
}
if (that.honorIndex == honorList.length - 1) {
that.honorIndex = 0
} else {
that.honorIndex = that.honorIndex + 1
}
},
getDistributionInfo() {
let that = this
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Distribution", data).then(res => {
if (res) {
res.data.forEach(item => {
item.flag = false
item.name = item.key
})
that.organizationList.push(...res.data)
}
})
},
getOrganizationChange() {
let that = this
let data = {
flag: that.dataFlag
}
this.orgChange = false
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/OrganizationChange", data).then(res => {
if (res) {
that.configOrg.data = res.data
that.orgChange = true
}
})
},
getIndustrydistribution(flag) {
let that = this
let data = {
flag: that.dataFlag
}
if (!flag) {
data.flag = false
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Industrydistribution", data).then(res => {
if (res) {
let x = []
let y = []
let index = 0
that.industry = JSON.parse(JSON.stringify({}))
res.data.forEach(item => {
x.push(item.key)
y.push(item.value)
})
y.forEach(i => {
if (i == 0) {
index = index + 1
}
})
if (index == x.length) {
that.getIndustrydistribution(false)
return
}
that.industry.x = x
that.industry.y = y
}
let industry = that.$refs.industry
that.initOrganizationElse(industry, "", that.industry, "")
//
})
},
getHumanResources() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/HumanResources", data).then(res => {
if (res) {
that.HumanResourcesList.forEach(i => {
res.data.forEach(item => {
if (i.key == item.key) {
i.value = item.value
}
})
})
}
})
},
getlaborproductivity() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/laborproductivity", data).then(res => {
let markLine = []
if (res.data) {
res.data.forEach(item => {
if (item.key == '组织名称') {
worksList.x = item.value
}
if (item.key == "目标值") {
worksList.y2 = item.value
}
if (item.key == "实际值") {
worksList.y1 = item.value
}
if (item.key == "社会平均") {
markLine[0] = item.value
}
if (item.key == "省企平均") {
markLine[1] = item.value
}
if (item.key == "央企平均") {
markLine[2] = item.value
}
})
that.initBarCharts(that.$refs.works, worksList, markLine)
}
}).catch(err => {
that.initBarCharts(that.$refs.works, worksList)
})
},
getMineEfficiency() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/MineEfficiency", data).then(res => {
let obj = {}
if (res != null) {
res.data.forEach(item => {
if (item.key == "行业线") {
obj = {
name: item.key,
value: item.value
}
}
if (item.key == "组织名称") {
efficiencyList.x = item.value
}
if (item.key == "目标值") {
efficiencyList.y2 = item.value
}
if (item.key == "实际值") {
efficiencyList.y1 = item.value
}
})
that.initBarChartsElse(that.$refs.efficiencyElse, efficiencyList, "吨/工", obj)
} else {
that.initBarChartsElse(that.$refs.efficiencyElse, efficiencyList, "吨/工", { name: "行业线", value: 8.2 })
}
}).catch(err => {
that.initBarChartsElse(that.$refs.efficiencyElse, efficiencyList, "吨/工", { name: "行业线", value: 8.2 })
})
},
getEmpProductivity() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/EmpProductivity", data).then(res => {
let obj = {}
if (res != null) {
res.data.forEach(item => {
if (item.key == "标杆矿井线") {
obj = {
name: item.key,
value: item.value
}
}
if (item.key == "组织名称") {
wholeList.x = item.value
}
if (item.key == "目标值") {
wholeList.y2 = item.value
}
if (item.key == "实际值") {
wholeList.y1 = item.value
}
})
that.initBarChartsElse(that.$refs.whole, wholeList, "吨/人", obj)
} else {
that.initBarChartsElse(that.$refs.whole, wholeList, "吨/人", { name: "标杆矿井线", value: 1800 })
}
}).catch(err => {
that.initBarChartsElse(that.$refs.whole, wholeList, "吨/人", { name: "标杆矿井线", value: 1800 })
})
},
getSalaryCalProg() {
let that = this;
let data = {
flag: that.dataFlag
}
this.SalaryCalProgDetail = false
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/SalaryCalProg", data).then(res => {
if (res) {
that.config2.data = res.data
}
this.SalaryCalProgDetail = true
})
},
getSalaryCalProgDetail() {
let that = this;
let data = {
flag: that.dataFlag
}
this.isShowMark = false
this.salaryFlag = false
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/SalaryCalProgDetail", data).then(res => {
if (res) {
that.configWarning.data = res.data
}
})
this.isShowMark = true
this.salaryFlag = true
this.pdfFlag = false
this.mobilizeFlag = false
this.echartsMark = false
},
getCollegeinternAndEnterpriseship() {
let that = this;
let data = {
flag: that.dataFlag
}
let student = this.$refs.student
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/CollegeinternAndEnterpriseship", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "高校总数") {
that.schoolList1[0].value - item.value
}
if (item.key == "实训总人数") {
that.schoolList1[1].value - item.value
}
if (item.key == "高校名称") {
schoolList.x = item.value
}
if (item.key == "高校实训人数") {
schoolList.y = item.value
}
if (item.key == "企业名称") {
rightList.x = item.value
}
if (item.key == "企业实训人数") {
rightList.y = item.value
}
})
}
this.initEchartsBar(student, schoolList, "#07ecd9")
})
},
getCollegestudy() {
let that = this;
let data = {
flag: that.dataFlag
}
let proList = [];
let schList = [];
let typeList = [];
let userList = [];
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Collegestudy", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "产学研合作高校数量") {
that.schoolList2[0].value = item.value
}
if (item.key == "产学研成果数量") {
that.schoolList2[1].value = item.value
}
if (item.key == "项目名称") {
proList = item.value
}
if (item.key == "合作高校") {
schList = item.value
}
if (item.key == "合作类型") {
typeList = item.value
}
if (item.key == "主要成效") {
userList = item.value
}
// {
// project: "高瓦斯矿井110工法回采工作面瓦斯与自然发火共治关键技术示范研究",
// school: "太原理工大学",
// type: "山西省重点研发项目",
// merits: "解决了瓦斯超限问题"
// },
that.fList = []
proList.forEach((i, k) => {
let obj = {
project: i,
school: schList[k],
type: typeList[k],
merits: userList[k],
}
that.fList.push(obj)
})
})
}
})
},
getTurnOver() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/TurnOver", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "组织名称") {
mobilizeList.x = item.value
}
if (item.key == "内部调动") {
mobilizeList.y2 = item.value
}
if (item.key == "入职") {
mobilizeList.y1 = item.value
}
if (item.key == "离职") {
mobilizeList.y5 = item.value
}
if (item.key == "跨二级调入") {
mobilizeList.y4 = item.value
}
if (item.key == "跨二级调出") {
mobilizeList.y3 = item.value
}
})
}
that.fx = spArr(mobilizeList.x, 6)
that.fy1 = spArr(mobilizeList.y1, 6)
that.fy2 = spArr(mobilizeList.y2, 6)
that.fy3 = spArr(mobilizeList.y3, 6)
that.fy4 = spArr(mobilizeList.y4, 6)
that.fy5 = spArr(mobilizeList.y5, 6)
let mobilize = that.$refs.mobilize
that.initEchartStack(mobilize, { x: that.fx[0], y1: that.fy1[0], y2: that.fy2[0], y3: that.fy3[0], y4: that.fy4[0], y5: that.fy5[0] })
that.timeSy()
})
},
handleChangeImage() {
this.imageIndex += 1
},
fullScreen() {
let docElm = document.documentElement;
if (docElm.requestFullscreen) {
docElm.requestFullscreen();
} else if (docElm.msRequestFullscreen) {
docElm.msRequestFullscreen();
} else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen();
} else if (docElm.webkitRequestFullScreen) {
docElm.webkitRequestFullScreen();
}
this.imageFlag = true
this.pageFlag = false
},
getOptimizeResources() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/OptimizeResources", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "双选人数") {
that.optimize[0].value = item.value
}
if (item.key == "优化人数") {
that.optimize[1].value = item.value
}
if (item.key == "优化率") {
that.optimizeValue = item.value
}
})
}
})
},
getHumanOrgAllResources() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/HumanOrgAllResources", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "各二级单位单位名称") {
userList.x = item.value
}
if (item.key == "各二级单位缓冲池人数") {
userList.y1 = item.value
}
if (item.key == "各二级单位待岗池人数") {
userList.y2 = item.value
}
if (item.key == "各二级单位共享池人数") {
userList.y3 = item.value
}
})
that.userListX = spArr(userList.x, 9)
that.userListy1 = spArr(userList.y1, 9)
that.userListy2 = spArr(userList.y2, 9)
that.userListy3 = spArr(userList.y3, 9)
let buffer = that.$refs.buffer
that.initStereoscopic(buffer, { x: that.userListX[0], y1: that.userListy1[0], y2: that.userListy2[0], y3: that.userListy3[0], })
that.timeuserList()
}
})
},
getMapData() {
let that = this;
let data = {
flag: that.dataFlag
}
var geoCoordMap = {
太原市: [112.049248, 38.157014],
大同市: [113.595259, 40.29031],
阳泉市: [113.505474, 37.964652],
长治市: [112.813556, 36.791112],
晋城市: [112.551274, 35.577553],
朔州市: [112.433387, 39.531261],
晋中市: [112.936465, 37.696495],
运城市: [111.003957, 34.99],
忻州市: [112.333538, 38.7769],
临汾市: [111.517973, 36.48415],
吕梁市: [111.134335, 37.524366],
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/MapData", data).then(res => {
if (res) {
let mapData = []
res.data.forEach(item => {
let point = []
for (let k in geoCoordMap) {
if (k.indexOf(item.value) != -1) {
point = geoCoordMap[k]
}
}
item.data.forEach(i => {
let num;
let name;
i.forEach(j => {
if (j.key == "二级单位") {
name = j.value
}
if (j.key == "员工总数") {
num = j.value
}
})
let obj = {
itemStyle: {
color: "#fff"
},
name: item.value,
value: [...point, num, name]
}
mapData.push(obj)
})
})
let el = this.$refs.container
// this.initProvinceChart(el)
this.initMap2(el, mapData)
// let map = []
// res.data.forEach(item => {
// let obj = {}
// item.forEach(i => {
// if (i.key == "区域") {
// obj.name = i.value
// }
// if (i.key == "员工总数") {
// obj.value = i.value
// }
// if (i.key == "二级单位") {
// obj.level = i.value
// }
// })
// map.push(obj)
// })
// map.forEach(i => {
// let obj = {
// name: "",
// value: []
// }
// for (let k in geoCoordMap) {
// if (k.indexOf(i.name) != -1) {
// obj.name = k
// obj.value[0] = geoCoordMap[k][0]
// obj.value[1] = geoCoordMap[k][1]
// obj.value[2] = i.value
// obj.value[3] = i.level
// }
// }
// mapData.push(obj)
// })
// let el = this.$refs.container
// // this.initProvinceChart(el)
// this.initMap2(el, mapData)
}
})
},
getPersonnelResource() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/PersonnelResource", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "用工总数") {
that.PersonnelResource[0].value = item.value
}
if (item.key == "男性员工") {
that.PersonnelResource[1].value = item.value
}
if (item.key == "女性员工") {
that.PersonnelResource[2].value = item.value
}
})
}
})
},
getEduStructure() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/EduStructure", data).then(res => {
if (res) {
let arr = []
res.data.forEach(item => {
let obj = {
name: item.key,
y: item.value,
sliced: false,
selected: false
}
arr.push(obj)
})
this.initChartsBig(arr)
} else {
this.initChartsBig()
}
})
},
getSkillLevel() {
let that = this;
let data = {
flag: that.dataFlag
}
let level = this.$refs.level
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/SkillLevel", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "技能名称") {
levelList.x = item.value
}
if (item.key == "数量") {
levelList.y = item.value
}
})
let sum = 0
levelList.y.forEach(item => {
sum = sum + item
})
that.levelListX = spArr(levelList.x, 4)
that.levelListY = spArr(levelList.y, 4)
if (levelList.x.length > 5) {
that.initLineElseEcharts(level, { x: that.levelListX[0], y: that.levelListY[0] }, sum)
that.timeLevel()
} else {
that.initLineElseEcharts(level, { x: that.levelListX[0], y: that.levelListY[0] }, sum)
}
} else {
let sum = 0
levelList.y.forEach(item => {
sum = sum + item
})
that.levelListX = spArr(levelList.x, 4)
that.levelListY = spArr(levelList.y, 4)
that.initLineElseEcharts(level, { x: that.levelListX[0], y: that.levelListY[0] }, sum)
}
})
},
getRankLevel() {
let that = this;
let data = {
flag: that.dataFlag
}
let initChartR1 = this.$refs.initChartR1
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/RankLevel", data).then(res => {
if (res) {
let nameList = []
let valueList = []
let rankLevelList = []
res.data.forEach(item => {
if (item.key == "技能名称") {
nameList = item.value
}
if (item.key == "数量") {
valueList = item.value
}
})
nameList.forEach((item, index) => {
let obj = {
name: item,
value: valueList[index]
}
rankLevelList.push(obj)
})
if(this.technical != null){
this.technical.dispose()
}
this.initChartR1(initChartR1, rankLevelList)
}
})
},
getFrontLine() {
let that = this;
let data = {
flag: that.dataFlag
}
let efficiency = this.$refs.efficiency
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/FrontLine", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "组织") {
downhole.x = item.value
}
if (item.key == "井下一线") {
downhole.y[4] = item.value
}
if (item.key == "井下辅助") {
downhole.y[5] = item.value
}
})
// this.initDownholeEcharts(efficiency, { x: downhole.x, y: [downhole.y[4], downhole.y[5]] }, 1)
} else {
// this.initDownholeEcharts(efficiency, { x: downhole.x, y: [downhole.y[4], downhole.y[5]] }, 1)
}
})
},
getGrassRoots() {
let that = this;
let data = {
flag: that.dataFlag
}
let efficiency = this.$refs.efficiency
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/SelectTraining", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "组织名称") {
downhole.x = item.value
}
if (item.key == "一级专员") {
downhole.y[0] = item.value
}
if (item.key == "二级专员") {
downhole.y[1] = item.value
}
if (item.key == "一级技工") {
downhole.y[2] = item.value
}
if (item.key == "二级技工") {
downhole.y[3] = item.value
}
if (item.key == "选拔培训") {
that.downholeObj = {
key: "选拔培养",
value: item.value
}
that.selectTraining = item.value
}
})
this.initDownholeEcharts(efficiency, { x: downhole.x, y: [downhole.y[0], downhole.y[1], downhole.y[2], downhole.y[3]] }, 1)
this.getFrontLine()
}
})
this.downholeTimes()
},
getEmploysNums() {
let that = this;
let data = {
flag: that.dataFlag
};
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/EmploysNums", data).then(res => {
if (res) {
that.downholeObj = res
that.employsNums = res.value
}
})
},
getPositionSequence() {
let that = this;
let data = {
flag: that.dataFlag
};
let sequence = this.$refs.sequence
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/PositionSequence", data).then(res => {
if (res) {
let nameList = ["管理序列", "技术序列", "操作序列"];
let valueList = [];
let ratioList = [];
res.data.forEach(item => {
if (item.key == "管理序列人数") {
valueList[0] = item.value
}
if (item.key == "操作序列人数") {
valueList[1] = item.value
}
if (item.key == "技术序列人数") {
valueList[2] = item.value
}
if (item.key == "管理序列比例") {
ratioList[0] = item.value
}
if (item.key == "操作序列比例") {
ratioList[1] = item.value
}
if (item.key == "技术序列比例") {
ratioList[2] = item.value
}
})
let obj = {
x: nameList,
y1: valueList,
y2: ratioList,
}
this.initBarEcharts(sequence, obj, ["当前数"])
} else {
this.initBarEcharts(sequence, { x: ["管理序列", "技术序列", "操作序列"], y1: [34242, 18547, 134012], y2: [28993, 19411, 126807] }, ["当前数"])
}
})
},
getDownholeoperationTrue() {
let that = this;
let data = {
flagd: true,
flag: that.dataFlag
}
let echartTwo = this.$refs.echartTwo
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Downholeoperation", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "原煤人员数量") {
that.staffList.coal = item.value
}
if (item.key == "非原煤人员数量") {
that.staffList.noCoal = item.value
}
if (item.key == "岗位名称") {
that.echartTwoList.x = item.value
}
if (item.key == "人数") {
that.echartTwoList.y = item.value
}
})
that.nx1 = spArr(that.echartTwoList.x, 5)
that.ny1 = spArr(that.echartTwoList.y, 5)
that.initTwoBarEcharts(echartTwo, { x: that.nx1[0], y: that.ny1[0] })
that.twoTimeIndex = 0
that.timeTwo()
}
})
},
getDownholeoperationFlase() {
let that = this;
let data = {
flagd: false,
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Downholeoperation", data).then(res => {
if (res) {
res.data.forEach(item => {
if (item.key == "岗位名称") {
that.echartTwoList2.x = item.value
}
if (item.key == "人数") {
that.echartTwoList2.y = item.value
}
})
}
that.nx2 = spArr(that.echartTwoList2.x, 5)
that.ny2 = spArr(that.echartTwoList2.y, 5)
})
},
getStaffAge() {
let that = this;
let data = {
flag: that.dataFlag
};
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/StaffAge", data).then(res => {
if (res) {
let dataObj = {
x: [],
y: []
}
res.data.forEach(item => {
dataObj.x.push(item.key)
dataObj.y.push(item.value)
})
that.echartsTwoBar1 = JSON.parse(JSON.stringify(dataObj))
}
that.ageListX = spArr(that.echartsTwoBar1.x, 4)
that.ageListY = spArr(that.echartsTwoBar1.y, 4)
let serviceAge = that.$refs.serviceAge
that.initLineEcharts(serviceAge, { x: that.ageListX[that.saTimeIndex], y: that.ageListY[that.saTimeIndex] })
that.SAtimeFun()
that.getStaffSeniority()
})
},
getStaffSeniority() {
let that = this;
let data = {
flag: that.dataFlag
};
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/StaffSeniority", data).then(res => {
if (res) {
let obj = {
x: [],
y: []
}
res.data.forEach(item => {
obj.x.push(item.key)
obj.y.push(item.value)
})
that.echartsTwoBar2 = JSON.parse(JSON.stringify(obj))
that.seniorityListX = spArr(that.echartsTwoBar2.x, 4)
that.seniorityListY = spArr(that.echartsTwoBar2.y, 4)
}
})
},
getCalSalary() {
let that = this;
let data = {
flag: that.dataFlag,
month: parseInt(that.selectInfo.average)
};
let leftEnd = that.$refs.leftEnd
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/getCalSalary", data).then(res => {
if (res) {
leftEndList = res.data
}
that.initBarEchartsElse(leftEnd, leftEndList, ["累计月平均工资", "同期累计月平均工资"])
})
},
getCalSalary1() {
let that = this;
let data = {
flag: that.dataFlag,
month: parseInt(that.selectInfo.total)
}
let echarts90 = that.$refs.echarts90
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/getCalSalary1", data).then(res => {
if (res) {
salaryList = res.data
}
that.sx = spArr(salaryList.x, 6)
that.sy = spArr(salaryList.y, 6)
that.initLineElseEchartsR(echarts90, { x: that.sx[0], y: that.sy[0] })
})
},
getCalSalary2() {
let that = this;
let data = {
flag: that.dataFlag
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/getCalSalary2", data).then(res => {
if (res) {
that.configMark.data = res
}
})
},
addArray(arr) {
let newArr = [...arr]
if (newArr.length <= 5) {
newArr.push(...arr)
this.addArray(newArr)
} else {
return newArr
}
},
addArray(arr, newArr = []) {
newArr = newArr.concat(arr); // 将原数组添加到新数组中
if (newArr.length <= 4) {
return this.addArray(arr, newArr); // 递归调用方法
} else {
return newArr;
}
},
getCmasterstudio(level) {
let that = this;
let data = {
flag: that.dataFlag,
level
}
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Cmasterstudio", data).then(res => {
if (res) {
let skillObj = []
let list1 = []
let list2 = []
let list3 = []
let list4 = []
res.data.forEach(item => {
if (item.key == "工作室总数") {
skillList[level - 1].blue = item.value
}
if (item.key == "工作室成员人数") {
skillList[level - 1].green = item.value
}
if (item.key == "工作室名称") {
skillObj[0] = that.addArray(item.value)
}
if (item.key == "工作室所在单位") {
skillObj[1] = that.addArray(item.value)
}
if (item.key == "颁发单位及时间") {
skillObj[2] = that.addArray(item.value)
}
if (item.key == "成员人数") {
skillObj[3] = that.addArray(item.value)
}
if (item.key == "平均年龄") {
skillObj[4] = that.addArray(item.value)
}
if (item.key == "主要成果") {
skillObj[5] = that.addArray(item.value)
}
if (item.key == "出生年月") {
skillObj[6] = that.addArray(item.value)
}
if (item.key == "从事事业") {
skillObj[7] = that.addArray(item.value)
}
if (item.key == "职业技能等级") {
skillObj[8] = that.addArray(item.value)
}
if (item.key == "担任职务") {
skillObj[9] = that.addArray(item.value)
}
if (item.key == "曾获荣誉") {
skillObj[10] = that.addArray(item.value)
}
})
skillObj.forEach((item, index) => {
if (index == 0) {
item.forEach((i, z) => {
list1.push([i, skillObj[1][z], skillObj[2][z], skillObj[3][z], skillObj[4][z]])
list3.push([skillObj[6][z], skillObj[7][z], skillObj[8][z], skillObj[9][z]])
})
}
if (index == 5) {
list2 = item
}
if (index == skillObj.length - 1) {
list4 = item
}
})
that.newSkillList[level - 1] = [list1, list2, list3, list4]
}
})
},
getTurnOverDetail(orgName = null) {
let that = this;
let data = {
flag: that.dataFlag,
orgName,
}
that.showChange = false
// fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/TurnOverDetail", data).then(res => {
// // console.log(res);
// if (res) {
// let list = []
// let nameList = []
// let outList = []
// let inList = []
// let timeList = []
// let flagList = []
// // header: ["姓名", "调出单位", "调入单位", "调动时间", '变动状态',],
// res.data.forEach((item) => {
// if (item.key == "姓名") {
// item.value.forEach((i) => {
// nameList.push(i)
// })
// }
// if (item.key == "调出单位") {
// item.value.forEach((i) => {
// outList.push(i)
// })
// }
// if (item.key == "调入单位") {
// item.value.forEach((i) => {
// inList.push(i)
// })
// }
// if (item.key == "调动时间") {
// item.value.forEach((i) => {
// timeList.push(i)
// })
// }
// if (item.key == "变动状态") {
// item.value.forEach((i) => {
// flagList.push(i)
// })
// }
// })
// nameList.forEach((item, index) => {
// list.push([item, outList[index], inList[index], timeList[index], flagList[index],])
// })
// that.configChange.data = list
setTimeout(()=>{
that.showChange = true
},10)
// }
// })
},
getDept(flag) {
let that = this;
let data = {
flag: that.dataFlag
}
if (!flag) {
data.flag = false
}
let index = 0
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Dept", data).then(res => {
if (res) {
res.data.forEach(item => {
item.flag = false
item.name = item.key
if (item.value == 0) {
index = index + 1
}
})
if(that.fetchIndex == 3){
return
}
if (index == 3) {
that.fetchIndex += 1
that.getDept(false)
return
}
res.data[0].flag = true
that.organizationList = res.data
that.getDistributionInfo()
}
})
},
getDistributionAttachment() {
let that = this;
let data = {
flag: that.dataFlag
};
fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/DistributionAttachment", data).then(res => {
if (res) {
that.imageUrl = res.url
}
})
},
},
})