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: ["单位名称", "人员数量", "月份", "预警项"], header: ["单位名称", "月份", "人员数量", "预警项"], rowNum: 6, data: [ ["西山煤电", "71", "7月", "薪资低于4000元"], ["汾西矿业", "1896", "7月", "薪资低于4000元"], ["霍州煤电", "847", "7月", "薪资低于4000元"], ["山煤国际", "514", "7月", "薪资低于4000元"], ["华晋焦煤", "13", "7月", "薪资低于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: true, 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, IndustrydistributionIndex: 0, isShowFlag: false, setTypeFlag: null, gtTotle: 90, userColor: false, monthColor: false, } }, beforeCreate() { // 跳转地址 setTimeout(() => { let AddUrl = location.protocol + "//" + location.host + "/ierp" // return if (!window.location.search) { // alert("链接已失效,请重新打开") window.location.href = AddUrl } console.log(window.location); let arr = window.location.search.split("&") let dataList = [] arr.forEach(item => { dataList.push(item.split("=")[1]) }) window.user = dataList[0] let newDate = new Date().getTime() let authorityType = window.sessionStorage.getItem("authorityType") || false console.log(newDate); console.log(parseInt(dataList[1])); console.log(newDate - parseInt(dataList[1]) < 30000); var diff = Math.abs(newDate - parseInt(dataList[1])); // 获取两个时间戳的差值(以毫秒为单位) var diffInSeconds = Math.floor(diff / 1000); // 将差值转换为秒数 let effective = diffInSeconds <= 300; // 判断差值是否在30秒以内 console.log(diff); console.log(diffInSeconds); console.log(effective); debugger if (!authorityType) { if (!effective) { console.log("链接已失效,请重新打开"); window.location.href = AddUrl } else { console.log("链接未失效") window.sessionStorage.setItem("authorityType", true) } } }) }, beforeDestroy() { window.sessionStorage.removeItem("authorityType") }, 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() { let data if (new Date().getMonth() <= 9) { data = "0" + new Date().getMonth() } else { data = new Date().getMonth() } this.selectInfo = { total: data, average: data } 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("数据更新每五分钟一次"); }, 10000) 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.time4 && clearInterval(this.time4); 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.getSalaryCalProgDetail() 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.initBarEchartsElseJM(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 console.log(this.selectType); if (this.selectType == "average") { this.getCalSalary() } if (this.selectType == "total") { this.getCalSalary1() } }, 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 && 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 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.049248, 37.957014], 大同市: [113.595259, 39.89031], 阳泉市: [113.505474, 38.064652], 长治市: [112.913556, 36.591112], 晋城市: [112.551274, 35.577553], 朔州市: [112.433387, 39.531261], 晋中市: [112.936465, 37.486495], 运城市: [111.003957, 34.99], 忻州市: [112.333538, 38.7769], 临汾市: [111.517973, 36.48415], 吕梁市: [111.134335, 37.524366], } 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, 49047, "汾西矿业",] }, { itemStyle: { color: "#fff" }, name: "太原市", value: [111.949248, 37.957014, 65704, "西山煤电",] }, { itemStyle: { color: "#fff" }, name: "临汾市", 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, 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, 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) } 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 = `

区域:${params.name}

二级单位:${params.value[3]}

员工总数:${params.value[2]}

` if (params.value[2] == undefined) { return "" } callback(ticket, tipHtml) return tipHtml } if (params.componentSubType == 'effectScatter') { let tipHtml = `

区域:${params.name}

二级单位:${params.value[3]}

员工总数:${params.value[2]}

` 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, 160], symbolOffset: [0, -200], z: 999, 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: 3, 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: "10%", 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] = "" } if(list.length == 3){ list[3] = "" } 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(); // }); }, initBarEchartsElseJM(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}: ****
{a1}: ****', }, 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] = "" } if(list.length == 3){ list[3] = "" } 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', show: false, 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, 49047, "汾西矿业",] }, { itemStyle: { color: "#fff" }, name: "太原市", value: [111.949248, 37.957014, 65704, "西山煤电",] }, { itemStyle: { color: "#fff" }, name: "临汾市", 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, 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, 9960, "华晋焦煤",] }, ] 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 = `

区域:${params.name}

二级单位:${params.value[3]}

员工总数:${params.value[2]}

` 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); if (Array.isArray(data.x)) { data.x.forEach(item => { item = item.slice(0, -2) }) } else { return } 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 }, 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 this.showChange = 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 => { if(that.loginInfo.num != res.accumulatedLogin){ that.loginInfo.num = res.accumulatedLogin that.loginInfo.unit = res.unit that.userColor = true setTimeout(()=>{ that.userColor = !that.userColor },2000) } }) }, getMauInfo() { let that = this; let data = { flag: that.dataFlag } fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/MAU", data).then(res => { if (res) { if(that.mauInfo.mau != res.mau){ that.mauInfo.mau = res.mau that.mauInfo.unit = res.unit that.monthColor = true setTimeout(()=>{ that.monthColor = !that.monthColor },2000) } } }) }, 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 } let index = 0 that.setTypeFlag && clearInterval(that.setTypeFlag) this.orgIndex = 0 fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/Distribution", 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.organizationList.length == 3) { that.organizationList.push(...res.data) } if (index < 3) { let arr = this.organizationList.splice(0, this.organizationList.length - 3) this.organizationList = [] this.organizationList.push(...arr, ...res.data) } if (this.organizationList.length != 0) { that.setTypeFlag = 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) } else { this.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 }] that.setTypeFlag = 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) } } }) }, 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 } let industry = that.$refs.industry 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) { if (that.IndustrydistributionIndex >= 3) { that.industry = { x: ["矿井", "选煤厂", "火电厂", "清洁电厂", "焦化厂"], y: [151, 50, 6, 32, 4] } that.initOrganizationElse(industry, "", that.industry, "") return } that.getIndustrydistribution(false) that.IndustrydistributionIndex += 1 return } that.industry.x = x that.industry.y = y } 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 } 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 == "优化率") { console.log((item.value * 100)); that.optimizeValue = (item.value * 100).toFixed(2); } }) } }) }, getHumanOrgAllResources() { let that = this; let data = { flag: that.dataFlag } let buffer = that.$refs.buffer 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 } }) if (!userList.x) { return } that.userListX = spArr(userList.x, 9) that.userListy1 = spArr(userList.y1, 9) that.userListy2 = spArr(userList.y2, 9) that.userListy3 = spArr(userList.y3, 9) 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 let x = [] let y1 = [] let y2 = [] fetchPostMethods("/ierp/kapi/v2/mdnb/mdnb_control/getCalSalary", data).then(res => { if (res) { // leftEndList = res.data if (res.lastyear.x.length != 0) { x = res.lastyear.x } else { x = res.thisyear.x } y1 = res.thisyear.y y2 = res.lastyear.y leftEndList = { x, y1, y2, } if (!res.mdnb_encryption) { that.initBarEchartsElse(leftEnd, leftEndList, ["累计月平均工资", "同期累计月平均工资"]) } else { that.initBarEchartsElseJM(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 that.gtTotle = res.total if (salaryList.x.length < 6) { that.initLineElseEchartsR(echarts90, { x: salaryList.x, y: salaryList.y }) that.time4 && clearInterval(that.time4); } else { that.sx = spArr(salaryList.x, 6) that.sy = spArr(salaryList.y, 6) that.initLineElseEchartsR(echarts90, { x: that.sx[0], y: that.sy[0] }) that.time4 && clearInterval(that.time4); that.timeSy() } } }) }, 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 that.organizationList = [] 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) { this.organizationList = [{ name: "职能部门", flag: true, value: 18 }, { name: "共享中心", flag: false, value: 12 }, { name: "事业部", flag: false, value: 5 }] that.getDistributionInfo() that.fetchIndex = 0 return } if (index == 3) { that.fetchIndex += 1 that.getDept(false) return } res.data[0].flag = true that.organizationList.push(...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 && res.url) { that.imageUrl = res.url } }) }, }, })