|
@@ -0,0 +1,485 @@
|
|
|
+//自调用函数
|
|
|
+(function() {
|
|
|
+ // 1、页面一加载就要知道页面宽度计算
|
|
|
+ var setFont = function() {
|
|
|
+ // 因为要定义变量可能和别的变量相互冲突,污染,所有用自调用函数
|
|
|
+ var html = document.documentElement; // 获取html
|
|
|
+ // 获取宽度
|
|
|
+ var width = html.clientWidth;
|
|
|
+
|
|
|
+ // 判断
|
|
|
+ if (width < 1024) width = 1024
|
|
|
+ if (width > 1920) width = 1920
|
|
|
+ // 设置html的基准值
|
|
|
+ var fontSize = width / 80 + 'px';
|
|
|
+ // 设置给html
|
|
|
+ html.style.fontSize = fontSize;
|
|
|
+ }
|
|
|
+ setFont();
|
|
|
+ // 2、页面改变的时候也需要设置
|
|
|
+ // 尺寸改变事件
|
|
|
+ window.onresize = function() {
|
|
|
+ setFont();
|
|
|
+ }
|
|
|
+})();
|
|
|
+$.get('https://aggadmin.jucai.gov.cn/admin/api/bi_talent', (res) => {
|
|
|
+ init(res)
|
|
|
+});
|
|
|
+
|
|
|
+function init(data) {
|
|
|
+ $('#industry_enterprise_num').text(data.industry_enterprise_num);
|
|
|
+ $('#industry_institution_employee').text(data.industry_institution_employee);
|
|
|
+ $('#industry_institution_num').text(data.industry_institution_num);
|
|
|
+ $('#industry_institution_turnover').text(data.industry_institution_turnover);
|
|
|
+ $('#industry_service_num').text(data.industry_service_num);
|
|
|
+ $('#talent_problem_deal').text(data.talent_problem_deal);
|
|
|
+ $('#talent_problem_total').text(data.talent_problem_total);
|
|
|
+ $('#talent_total').text(data.talent_total);
|
|
|
+ this.talent_count(data);
|
|
|
+ this.talent_level(data.talent_level);
|
|
|
+ this.talent_problem(data.talent_problem_cate);
|
|
|
+ this.pieTalentChannel(data);
|
|
|
+ this.pieInstitutionType(data);
|
|
|
+}
|
|
|
+
|
|
|
+function talent_count(data) {
|
|
|
+ var htmlArr = [];
|
|
|
+ htmlArr['talent_industry'] = '';
|
|
|
+ htmlArr['talent_age'] = '';
|
|
|
+ htmlArr['talent_education'] = '';
|
|
|
+ data.talent_industry.forEach(function (item) {
|
|
|
+ htmlArr['talent_industry'] += `<li><span>${item.name}</span><span>${item.count} <s class="icon-up"></s></span></li>`;
|
|
|
+ });
|
|
|
+ data.talent_age.forEach(function (item) {
|
|
|
+ htmlArr['talent_age'] += `<li><span>${item.name}</span><span>${item.count} <s class="icon-up"></s></span></li>`;
|
|
|
+ });
|
|
|
+ data.talent_education.forEach(function (item) {
|
|
|
+ htmlArr['talent_education'] += `<li><span>${item.name}</span><span>${item.count} <s class="icon-up"></s></span></li>`;
|
|
|
+ });
|
|
|
+ $('.inner').on('mouseenter', '.sup li', function () {
|
|
|
+ $(this).addClass('active').siblings().removeClass('active');
|
|
|
+ //渲染
|
|
|
+ $('.sub').html(htmlArr[$(this).attr('data-type')]);
|
|
|
+ });
|
|
|
+ $('.province .sup li').eq(0).mouseenter();
|
|
|
+ var index = 0;
|
|
|
+ var timer = setInterval(() => {
|
|
|
+ index++;
|
|
|
+ if (index > 2) {
|
|
|
+ index = 0;
|
|
|
+ }
|
|
|
+ $('.sup li').eq(index).mouseenter();
|
|
|
+ }, 2000);
|
|
|
+}
|
|
|
+
|
|
|
+function talent_level(data) {
|
|
|
+ let titleArr = [];
|
|
|
+ let countArr = [];
|
|
|
+ let total = 0;
|
|
|
+ let count = data.length;
|
|
|
+ // 中间省略的数据 准备三项
|
|
|
+ var hiddenItem = {
|
|
|
+ name: '',
|
|
|
+ value: 10,
|
|
|
+ // 柱子颜色
|
|
|
+ itemStyle: {
|
|
|
+ color: '#254065'
|
|
|
+ },
|
|
|
+ // 鼠标经过柱子颜色
|
|
|
+ emphasis: {
|
|
|
+ itemStyle: {
|
|
|
+ color: '#254065'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 工具提示隐藏
|
|
|
+ tooltip: {
|
|
|
+ extraCssText: 'opacity:0'
|
|
|
+ }
|
|
|
+ };
|
|
|
+ data.forEach((item, index) => {
|
|
|
+ if (index < 7 || index + 7 >= count) {
|
|
|
+ titleArr.push(item.name)
|
|
|
+ countArr.push(item.count)
|
|
|
+ } else if (count > 12 && index == 7) {
|
|
|
+ //随机三个
|
|
|
+ let arr = []
|
|
|
+ for (let i = 7; i < count - 7; i++) {
|
|
|
+ arr.push(i)
|
|
|
+ }
|
|
|
+ let randomArr = [];
|
|
|
+ while (randomArr.length < 3) {
|
|
|
+ let temp = (Math.random() * arr.length) >> 0;
|
|
|
+ randomArr.push(arr.splice(temp, 1)[0]);
|
|
|
+ }
|
|
|
+ randomArr.forEach((randomIndex) => {
|
|
|
+ titleArr.push(data[randomIndex].name)
|
|
|
+ countArr.push(data[randomIndex].count)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ total += (item.count - 0)
|
|
|
+ });
|
|
|
+ $('.talent_level-total').text(total)
|
|
|
+
|
|
|
+ option = {
|
|
|
+ // 工具提示
|
|
|
+ tooltip: {
|
|
|
+ // 触发类型 经过轴触发axis 经过轴触发item
|
|
|
+ trigger: 'item',
|
|
|
+ // 轴触发提示才有效
|
|
|
+ axisPointer: {
|
|
|
+ // 默认为直线,可选为:'line' 线效果 | 'shadow' 阴影效果
|
|
|
+ type: 'shadow'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 图表边界控制
|
|
|
+ grid: {
|
|
|
+ // 距离 上右下左 的距离
|
|
|
+ left: '0',
|
|
|
+ right: '3%',
|
|
|
+ bottom: '3%',
|
|
|
+ top: '5%',
|
|
|
+ // 大小是否包含文本【类似于boxsizing】
|
|
|
+ containLabel: true,
|
|
|
+ //显示边框
|
|
|
+ show: true,
|
|
|
+ //边框颜色
|
|
|
+ borderColor: 'rgba(0, 240, 255, 0.3)'
|
|
|
+ },
|
|
|
+ // 控制x轴
|
|
|
+ xAxis: [{
|
|
|
+ // 使用类目,必须有data属性
|
|
|
+ type: 'category',
|
|
|
+ // 使用 data 中的数据设为刻度文字
|
|
|
+ data: titleArr,
|
|
|
+ // 刻度设置
|
|
|
+ axisTick: {
|
|
|
+ // true意思:图形在刻度中间
|
|
|
+ // false意思:图形在刻度之间
|
|
|
+ alignWithLabel: false,
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ //文字
|
|
|
+ axisLabel: {
|
|
|
+ color: '#4c9bfd'
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ // 控制y轴
|
|
|
+ yAxis: [{
|
|
|
+ // 使用数据的值设为刻度文字
|
|
|
+ type: 'value',
|
|
|
+ axisTick: {
|
|
|
+ // true意思:图形在刻度中间
|
|
|
+ // false意思:图形在刻度之间
|
|
|
+ alignWithLabel: false,
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ //文字
|
|
|
+ axisLabel: {
|
|
|
+ color: '#4c9bfd'
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: 'rgba(0, 240, 255, 0.3)'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }],
|
|
|
+ // 控制x轴
|
|
|
+ series: [
|
|
|
+
|
|
|
+ {
|
|
|
+ // series配置
|
|
|
+ // 颜色
|
|
|
+ itemStyle: {
|
|
|
+ // 提供的工具函数生成渐变颜色
|
|
|
+ color: new echarts.graphic.LinearGradient(
|
|
|
+ // (x1,y2) 点到点 (x2,y2) 之间进行渐变
|
|
|
+ 0, 0, 0, 1,
|
|
|
+ [{
|
|
|
+ offset: 0,
|
|
|
+ color: '#00fffb'
|
|
|
+ }, // 0 起始颜色
|
|
|
+ {
|
|
|
+ offset: 1,
|
|
|
+ color: '#0061ce'
|
|
|
+ } // 1 结束颜色
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ },
|
|
|
+ // 图表数据名称
|
|
|
+ name: '层次人数',
|
|
|
+ // 图表类型
|
|
|
+ type: 'bar',
|
|
|
+ // 柱子宽度
|
|
|
+ barWidth: '60%',
|
|
|
+ // 数据
|
|
|
+ data: countArr
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ };
|
|
|
+ var myechart = echarts.init($('.talent_level')[0]);
|
|
|
+ myechart.setOption(option);
|
|
|
+}
|
|
|
+
|
|
|
+function talent_problem(data) {
|
|
|
+ let titleArr = [];
|
|
|
+ let countArr = [];
|
|
|
+ let count = data.length;
|
|
|
+ // 中间省略的数据 准备三项
|
|
|
+ var hiddenItem = {
|
|
|
+ name: '',
|
|
|
+ value: 10,
|
|
|
+ // 柱子颜色
|
|
|
+ itemStyle: {
|
|
|
+ color: '#254065'
|
|
|
+ },
|
|
|
+ // 鼠标经过柱子颜色
|
|
|
+ emphasis: {
|
|
|
+ itemStyle: {
|
|
|
+ color: '#254065'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 工具提示隐藏
|
|
|
+ tooltip: {
|
|
|
+ extraCssText: 'opacity:0'
|
|
|
+ }
|
|
|
+ };
|
|
|
+ data.forEach((item, index) => {
|
|
|
+ titleArr.push(item.name)
|
|
|
+ countArr.push(item.count)
|
|
|
+ });
|
|
|
+
|
|
|
+ option = {
|
|
|
+ // 工具提示
|
|
|
+ tooltip: {
|
|
|
+ // 触发类型 经过轴触发axis 经过轴触发item
|
|
|
+ trigger: 'item',
|
|
|
+ // 轴触发提示才有效
|
|
|
+ axisPointer: {
|
|
|
+ // 默认为直线,可选为:'line' 线效果 | 'shadow' 阴影效果
|
|
|
+ type: 'shadow'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 图表边界控制
|
|
|
+ grid: {
|
|
|
+ // 距离 上右下左 的距离
|
|
|
+ left: '0',
|
|
|
+ right: '3%',
|
|
|
+ bottom: '3%',
|
|
|
+ top: '5%',
|
|
|
+ // 大小是否包含文本【类似于boxsizing】
|
|
|
+ containLabel: true,
|
|
|
+ //显示边框
|
|
|
+ show: true,
|
|
|
+ //边框颜色
|
|
|
+ borderColor: 'rgba(0, 240, 255, 0.3)'
|
|
|
+ },
|
|
|
+ // 控制x轴
|
|
|
+ xAxis: [{
|
|
|
+ // 使用类目,必须有data属性
|
|
|
+ type: 'category',
|
|
|
+ // 使用 data 中的数据设为刻度文字
|
|
|
+ data: titleArr,
|
|
|
+ // 刻度设置
|
|
|
+ axisTick: {
|
|
|
+ // true意思:图形在刻度中间
|
|
|
+ // false意思:图形在刻度之间
|
|
|
+ alignWithLabel: false,
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ //文字
|
|
|
+ axisLabel: {
|
|
|
+ interval: 0, // 强制显示所有标签
|
|
|
+ color: '#4c9bfd'
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ // 控制y轴
|
|
|
+ yAxis: [{
|
|
|
+ // 使用数据的值设为刻度文字
|
|
|
+ type: 'value',
|
|
|
+ axisTick: {
|
|
|
+ // true意思:图形在刻度中间
|
|
|
+ // false意思:图形在刻度之间
|
|
|
+ alignWithLabel: false,
|
|
|
+ show: false
|
|
|
+ },
|
|
|
+ //文字
|
|
|
+ axisLabel: {
|
|
|
+ color: '#4c9bfd'
|
|
|
+ },
|
|
|
+ splitLine: {
|
|
|
+ lineStyle: {
|
|
|
+ color: 'rgba(0, 240, 255, 0.3)'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }],
|
|
|
+ // 控制x轴
|
|
|
+ series: [
|
|
|
+
|
|
|
+ {
|
|
|
+ // series配置
|
|
|
+ // 颜色
|
|
|
+ itemStyle: {
|
|
|
+ // 提供的工具函数生成渐变颜色
|
|
|
+ color: new echarts.graphic.LinearGradient(
|
|
|
+ // (x1,y2) 点到点 (x2,y2) 之间进行渐变
|
|
|
+ 0, 0, 0, 1,
|
|
|
+ [{
|
|
|
+ offset: 0,
|
|
|
+ color: '#00fffb'
|
|
|
+ }, // 0 起始颜色
|
|
|
+ {
|
|
|
+ offset: 1,
|
|
|
+ color: '#0061ce'
|
|
|
+ } // 1 结束颜色
|
|
|
+ ]
|
|
|
+ )
|
|
|
+ },
|
|
|
+ // 图表数据名称
|
|
|
+ name: '咨询人数',
|
|
|
+ // 图表类型
|
|
|
+ type: 'bar',
|
|
|
+ // 柱子宽度
|
|
|
+ barWidth: '60%',
|
|
|
+ // 数据
|
|
|
+ data: countArr
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ };
|
|
|
+ var myechart = echarts.init($('.talent_problem')[0]);
|
|
|
+ myechart.setOption(option);
|
|
|
+}
|
|
|
+
|
|
|
+function pieTalentChannel(data) {
|
|
|
+ let recruit_age = data.talent_channel;
|
|
|
+ let total = 0;
|
|
|
+ let other = 0;
|
|
|
+ var myechartAge = echarts.init($('.talent_channel')[0]);
|
|
|
+ recruit_age.map((item, index) => {
|
|
|
+ if (item.name == '其他渠道') {
|
|
|
+ other = item.count;
|
|
|
+ } else {
|
|
|
+ total += item.count - 0;
|
|
|
+ }
|
|
|
+ item.value = item.count;
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ $('#talent_channel_total').text(total);
|
|
|
+ $('#talent_channel_other').text(other);
|
|
|
+ option = {
|
|
|
+ // 控制提示
|
|
|
+ tooltip: {
|
|
|
+ // 非轴图形,使用item的意思是放到数据对应图形上触发提示
|
|
|
+ trigger: 'item',
|
|
|
+ // 格式化提示内容:
|
|
|
+ // a 代表图表名称 b 代表数据名称 c 代表数据 d代表 当前数据/总数据的比例
|
|
|
+ formatter: "{b} : {c} ({d}%)"
|
|
|
+ },
|
|
|
+ // 控制图表
|
|
|
+ series: [{
|
|
|
+ // 图表名称
|
|
|
+ name: '咨询渠道',
|
|
|
+ // 图表类型
|
|
|
+ type: 'pie',
|
|
|
+ // 南丁格尔玫瑰图 有两个圆 内圆半径10% 外圆半径70%
|
|
|
+ // 百分比基于 图表DOM容器的半径
|
|
|
+ radius: ['10%', '70%'],
|
|
|
+ // 图表中心位置 left 50% top 50% 距离图表DOM容器
|
|
|
+ center: ['50%', '50%'],
|
|
|
+ // 半径模式,另外一种是 area 面积模式
|
|
|
+ roseType: 'radius',
|
|
|
+ // 数据集 value 数据的值 name 数据的名称
|
|
|
+ data: recruit_age,
|
|
|
+ //文字调整
|
|
|
+ label: {
|
|
|
+ fontSize: 10
|
|
|
+ },
|
|
|
+ //引导线
|
|
|
+ labelLine: {
|
|
|
+ length: 8,
|
|
|
+ length2: 10
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ color: ['#006cff', '#9fe6b8', '#32c5e9', '#1d9dff', '#60cda0', '#ed8884', '#ff9f7f', '#0096ff']
|
|
|
+ };
|
|
|
+ myechartAge.setOption(option);
|
|
|
+}
|
|
|
+
|
|
|
+function pieInstitutionType(data) {
|
|
|
+ let recruit_age = data.industry_institution_type;
|
|
|
+ let total = 0;
|
|
|
+ let other = 0;
|
|
|
+ var myechartAge = echarts.init($('.institution_type')[0]);
|
|
|
+ recruit_age.map((item, index) => {
|
|
|
+ if (item.name == '其他') {
|
|
|
+ other = item.count;
|
|
|
+ } else {
|
|
|
+ total += item.count - 0;
|
|
|
+ }
|
|
|
+ item.value = item.count;
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ $('#institution_type_total').text(total);
|
|
|
+ $('#institution_type_other').text(other);
|
|
|
+ option = {
|
|
|
+ // 控制提示
|
|
|
+ tooltip: {
|
|
|
+ // 非轴图形,使用item的意思是放到数据对应图形上触发提示
|
|
|
+ trigger: 'item',
|
|
|
+ // 格式化提示内容:
|
|
|
+ // a 代表图表名称 b 代表数据名称 c 代表数据 d代表 当前数据/总数据的比例
|
|
|
+ formatter: "{b} : {c} ({d}%)"
|
|
|
+ },
|
|
|
+ // 控制图表
|
|
|
+ series: [{
|
|
|
+ // 图表名称
|
|
|
+ name: '机构类型',
|
|
|
+ // 图表类型
|
|
|
+ type: 'pie',
|
|
|
+ // 南丁格尔玫瑰图 有两个圆 内圆半径10% 外圆半径70%
|
|
|
+ // 百分比基于 图表DOM容器的半径
|
|
|
+ radius: ['10%', '70%'],
|
|
|
+ // 图表中心位置 left 50% top 50% 距离图表DOM容器
|
|
|
+ center: ['50%', '50%'],
|
|
|
+ // 半径模式,另外一种是 area 面积模式
|
|
|
+ roseType: 'radius',
|
|
|
+ // 数据集 value 数据的值 name 数据的名称
|
|
|
+ data: recruit_age,
|
|
|
+ //文字调整
|
|
|
+ label: {
|
|
|
+ fontSize: 10
|
|
|
+ },
|
|
|
+ //引导线
|
|
|
+ labelLine: {
|
|
|
+ length: 8,
|
|
|
+ length2: 10
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ color: ['#006cff', '#9fe6b8', '#32c5e9', '#1d9dff', '#60cda0', '#ed8884', '#ff9f7f', '#0096ff']
|
|
|
+ };
|
|
|
+ myechartAge.setOption(option);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+let second = 10;
|
|
|
+let set = null;
|
|
|
+function countdown() {
|
|
|
+ set = setInterval(() => {
|
|
|
+ second--;
|
|
|
+ if (second == 0) {
|
|
|
+ location.href = "/bi";
|
|
|
+ }
|
|
|
+ $('#countdown').text(second);
|
|
|
+ },1000);
|
|
|
+}
|
|
|
+$(document).ready(() => {
|
|
|
+ countdown();
|
|
|
+});
|
|
|
+
|
|
|
+$('#countdown').click(() => {
|
|
|
+ if (set) {
|
|
|
+ clearInterval(set);
|
|
|
+ set = null;
|
|
|
+ } else {
|
|
|
+ countdown();
|
|
|
+ }
|
|
|
+});
|