1 Star 0 Fork 22

juzhengze/zhaopin-boss-chrome

forked from 荔枝来了/伯乐2号 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
render-20200912..js 22.92 KB
一键复制 编辑 原始数据 按行查看 历史
dasuiyuanhao 提交于 2020-09-26 11:55 . 首次代码提交
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685
//抓取页面的锚点
var $main=null;
const panel = document.createElement('div');
panel.id = 'extend_panel'
panel.innerHTML = `
<div class="left">
<h3 style="color:black;background-color: lightblue;">控制台</h3>
<div class="dashboard-edit-box">
<span>打开【推荐牛人】页面,先滚动到页面底部加载简历(快捷键Ctrl+End)</span>
<br/>
学校名称:<textarea id="input_sql_control" style="width:460px; height: 100px;" placeholder="清空不做筛选,多个以英文逗号分隔,或者以换行分隔">北京大学,中国人民大学,清华大学,北京交通大学,北京工业大学,北京航空航天大学,北京理工大学,北京科技大学,北京化工大学,北京邮电大学,中国农业大学,北京林业大学,北京中医药大学,北京师范大学,北京外国语大学,中国传媒大学,中央财经大学,对外经济贸易大学,北京体育大学,中央音乐学院,中央民族大学,中国政法大学,华北电力大学,南开大学,天津大学,天津医科大学,河北工业大学,太原理工大学,内蒙古大学,辽宁大学,大连理工大学,东北大学,大连海事大学,吉林大学,延边大学,东北师范大学,哈尔滨工业大学,哈尔滨工程大学,东北农业大学,东北林业大学,复旦大学,同济大学,上海交通大学,华东理工大学,东华大学,华东师范大学,上海外国语大学,上海财经大学,上海大学,第二军医大学,南京大学,苏州大学,东南大学,南京航空航天大学,南京理工大学,中国矿业大学,河海大学,江南大学,南京农业大学,中国药科大学,南京师范大学,浙江大学,安徽大学,中国科学技术大学,合肥工业大学,厦门大学,福州大学,南昌大学,山东大学,中国海洋大学,中国石油大学,郑州大学,武汉大学,华中科技大学,中国地质大学,武汉理工大学,华中农业大学,华中师范大学,中南财经政法大学,湖南大学,中南大学,湖南师范大学,国防科学技术大学,中山大学,暨南大学,华南理工大学,华南师范大学,广西大学,海南大学,四川大学,西南交通大学,电子科技大学,四川农业大学,西南财经大学,重庆大学,西南大学,贵州大学,云南大学,西藏大学,西北大学,西安交通大学,西北工业大学,西安电子科技大学,长安大学,西北农林科技大学,陕西师范大学,第四军医大学,兰州大学,青海大学,宁夏大学,新疆大学,石河子大学</textarea>
<br/>
年龄小于:<input id="input_2_control" type="text" style="width:80px;margin-right:8px;" value="34" />
<input id="input_3_control" type="checkbox" checked="checked" style="width: 20px;height: 18px;line-height: 24px;text-align: center;margin: 2px;" />过滤应届生
<br/>
求职岗位:<textarea id="input_4_control" style="width:460px; height: 28px;" placeholder="清空不做筛选,多个以英文逗号分隔,或者以换行分隔">Java,架构师,技术经理,JavaScript,web前端,前端开发,HTML5</textarea>
<br/>
<button id="search_btn1_control" style="float: left;width: 160px;height: 30px;margin-top:2px;margin-right:8px;">一键加载全部(Shift+e)</button>
<button id="search_btn2_control" style="float: left;width: 160px;height: 30px;margin-top:2px;">筛选全部(Shift+q)</button>
<br/>
<br/>
<button id="search_btn3_control" style="float: left;width: 160px;height: 30px;margin-top:2px;margin-right:8px;">上一个(Shift+a)</button>
<button id="search_btn4_control" style="float: left;width: 160px;height: 30px;margin-top:2px;">下一个(Shift+d)</button>
<br />
<br />
<div id="oneByOne_info_control"></div>
<div id="result_view" style="width:480px; height: 100px;overflow-y: auto;"></div>
</div>
</div>
`
document.body.appendChild(panel);
//当前视图
var current_view = 'dashboards';
//查询结果
var excuteResultFailedIds=[];
//是否执行中
var isExcuting=false;
var maxExcuteNum=5000;
//全部li元素
var $recommendLiList=[];
//符合条件的数据集合
var recommendData=[];
//当前数据
var currentItem=null;
init().then(apps=>{
var current_app = null;
//渲染按钮的视图
const render_view_buttons = (()=>{
var vnode = panel.querySelector('.views');
const render_fn = shown=>{
return patch(vnode, h('div.views', {
style: {
visibility: shown ? 'visible' : 'hidden'
}
}, [
h('a.button', {
class: {
active: current_view == 'dashboards'
}, on: {
click: ()=>{
if(current_view == 'dashboards') return;
current_view = 'dashboards';
vnode = render_fn();
refresh_apps_div();
refresh_view();
}
}
}, '仪表盘')
]));
}
return shown=>vnode = render_fn(shown);
})();
//渲染视图
const refresh_view = (()=>{
var metrics_buttons_vnode = panel.querySelector('.metrics-buttons');
return function(switch_view){
if(current_view == 'dashboards') {
return render_all_dashboards().then(()=>{
render_view_buttons(true)
metrics_buttons_vnode = patch(metrics_buttons_vnode, h('div.metrics-buttons'));
});
}
};
})();
refresh_view();
})
const btn = document.createElement('div');
btn.id = 'extend_toggle_button'
btn.innerText = '隐藏'
document.body.appendChild(btn);
btn.addEventListener('click', e=>{
if(panel.style.display == 'none'){
panel.style.display = 'block'
btn.innerText = '隐藏'
} else {
panel.style.display = 'none'
btn.innerText = '控制台'
}
});
//去除重复
function removeRepeatData(arr){
if(arr==null || arr.len()<1){
return arr;
}
var new_arr=[];
for(var i=0;i<arr.length;i++) {
var items=arr[i];
//判断元素是否存在于new_arr中,如果不存在则插入到new_arr的最后
if($.inArray(items,new_arr)==-1) {
new_arr.push(items);
}
}
}
/**筛选简历**/
//绑定快捷键
$(document).bind('keydown.shift_q', function(){
try {
doThings();
} catch (error) {
alert("筛选简历异常!");
console.error(error);
return;
}
});
$(document).bind('keydown.shift_a', function(){
selectPrev();
});
$(document).bind('keydown.shift_d', function(){
selectNext();
});
//绑定按钮事件
const btnSC1=document.getElementById("search_btn1_control");
btnSC1.addEventListener('click', e=>{
try {
scollLoadAll();
} catch (error) {
alert("一键加载全部异常!");
console.error(error);
return;
}
});
const btnSC2=document.getElementById("search_btn2_control");
btnSC2.addEventListener('click', e=>{
try {
doThings();
} catch (error) {
alert("筛选简历异常!");
console.error(error);
return;
}
});
const btnSC3=document.getElementById("search_btn3_control");
btnSC3.addEventListener('click', e=>{
selectPrev();
});
const btnSC4=document.getElementById("search_btn4_control");
btnSC4.addEventListener('click', e=>{
selectNext();
});
// function doThings(){
// if(isExcuting){
// alert("正在玩命处理中,请稍候...");
// return;
// }
// isExcuting=true;
// var universityNames=[];
// excuteResultFailedIds=[];
// var $result_view=$("#result_view");
// $result_view.text("正在玩命处理中,请等候...");
// var inputSql=$.trim($("#input_sql_control").val());
// if(inputSql!=''){
// //如果是带换行符
// inputSql=inputSql.replace(/\n/g,",");
// universityNames=inputSql.split(",");
// }
// if(universityNames==null || universityNames.length<1){
// $result_view.text("输入参数不能为空");
// isExcuting=false;
// return;
// }
// if(universityNames.length>maxExcuteNum){
// $result_view.text("输入参数不能为超过"+maxExcuteNum+"条");
// isExcuting=false;
// return;
// }
// for(var i=0;i<universityNames.length;i++){
// var id=universityNames[i];
// var r=requestDataOfRemove(id);
// if(r==null || !r){
// excuteResultFailedIds.push(id);
// }
// }
// var rText="执行完成";
// rText+=",共"+universityNames.length+"个。";
// if(excuteResultFailedIds!=null && excuteResultFailedIds.length>0){
// rText+="失败"+excuteResultFailedIds.length+"个:"+JSON.stringify(excuteResultFailedIds);
// }
// console.log(rText);
// $result_view.text(rText);
// isExcuting=false;
// function requestDataOfRemove(data){
// var result=null;
// var param={productId: "", applyNo: -1, productForm: 2};
// param.productId=data;
// console.log("开始调用接口,传参:"+JSON.stringify(param));
// jQuery.ajax({
// type:'POST',
// async:false,
// url:'',
// data:JSON.stringify(param),
// // dataType : "json",
// // contentType: 'application/x-www-form-urlencoded; charset=utf-8',
// contentType: 'application/json;charset=UTF-8',
// success:function(responseData){
// if(responseData==null){
// return false;
// }
// if(responseData.success==null || responseData.success==0){
// console.log("调用接口失败!接口返回结果:"+JSON.stringify(responseData));
// return;
// }
// console.log("调用接口成功!");
// console.log(JSON.stringify(responseData));
// result=true;
// },
// error:function(XMLHttpRequest,textStatus,errorThrown){
// alert("调用接口失败:"+XMLHttpRequest)
// }
// });
// return result;
// }
// }
var isExcutingScollLoad=false;
function scollLoadAll(){
if(isExcutingScollLoad){
//如果已经在执行,则停止
isExcutingScollLoad=false;
return;
}
isExcutingScollLoad=true;
//开始滚动加载
setTimeout(function(){
alert("123");
}, 2000);
}
function doThings(){
if(isExcuting){
alert("正在玩命处理中,请稍候...");
return;
}
var universityNames=[];
excuteResultFailedIds=[];
recommendData=[];
currentItem=null;
var $result_view=$("#result_view");
// $result_view.text("正在玩命处理中,请等候...");
//学校名称
var inputSql=$.trim($("#input_sql_control").val());
if(inputSql!=''){
//如果是带换行符
inputSql=inputSql.replace(/\n/g,",");
universityNames=inputSql.split(",");
}
if(universityNames!=null){
if (universityNames.length > maxExcuteNum) {
$result_view.text("输入参数不能为超过" + maxExcuteNum + "");
return;
}
}
//年龄
var ageLessThan=null;
var ageVal=$.trim($("#input_2_control").val());
if(ageVal!=""){
var reg=/[1-9]+\d*/;
if(!reg.test(ageVal)){
$result_view.text("输入年龄必须为正整数");
return;
}
ageLessThan=parseInt(ageVal);
}
//过滤应届毕业生
var filterYingJie=false;
if($("#input_3_control").prop("checked")){
filterYingJie=true;
}
//求职岗位
var filterExpects=[];
var input_4_val=$.trim($("#input_4_control").val());
if(input_4_val!=''){
//如果是带换行符
input_4_val=input_4_val.replace(/\n/g,",");
filterExpects=input_4_val.split(",");
if(filterExpects==null){
filterExpects=[];
}
filterExpects=trimArray(filterExpects);
}
// isExcuting=true;
//找到简历列表
// $main=$("#main").find("iframe").first();
$main=$(window.frames["syncFrame"].document).find("#main");
// var $recommend_card_list= $main.find("ul.recommend-card-list"); //$("ul.recommend-card-list");
var $recommend_card_list=$main.find("ul.recommend-card-list");
console.info("简历列表:"+$recommend_card_list.length);
if($recommend_card_list==null || $recommend_card_list.length<1){
alert("没有抓到页面数据,请重试!");
isExcuting=false;
return;
}
$recommendLiList=$recommend_card_list.children("li");
var rText="全部简历"+$recommendLiList.length+"";
console.info(rText);
var collectData=[];
for(var i=0;i<$recommendLiList.length;i++){
var $li=$($recommendLiList[i]);
var item = {
"domIndex": i,
"eduExpList": [],//教育经历
};
//标识
item.geek=$li.find(".card-inner").first().attr("data-geek");
//沟通情况
item.goutong="";
var $btn_doc=$li.find("span.btn-doc").children("button");
if($btn_doc!=null && $btn_doc.length>0){
if($btn_doc.hasClass("btn-continue")){
item.goutong="已沟通";
}
else if($btn_doc.hasClass("btn-greet")){
item.goutong="未沟通";
}
else{
item.goutong="";
}
}
//姓名
item.realName=$li.find("div.avatar-box").find("img").first().attr("alt");
var $info_labels=$li.find("div.info-labels").first().find("span.label-text");
if($info_labels){
$info_labels.each(function(index,element){
var $e=$(element);
if(index==0){
item.age = null;
var age = $.trim($e.text()).replace("", "");
if ($.isNumeric(age)) {
item.age = parseInt(age);
}
} else if(index==1){
item.jobAge=$.trim($e.text());
} else if(index==2){
item.education=$.trim($e.text());
} else if(index==3){
item.jobStatus=$.trim($e.text());
}
});
}
//教育经历
var $edu_exp_li_list=$li.find("ul.edu-exp-box").children("li");
if($edu_exp_li_list && $edu_exp_li_list.length>0){
$edu_exp_li_list.each(function(index,element){
var $e=$(element);
var $span= $e.children("span");
if($span){
var eduExpItem={"index":index};
if($span.length>0){
eduExpItem.year= $span.first().text();
}
if($span.length>1){
var eduContent= $.trim($($span[1]).text());
if(eduContent){
var splitEdu=eduContent.split("·");
if(splitEdu && splitEdu.length>0){
eduExpItem.universityName= $.trim(splitEdu[0]);
if(splitEdu.length>1){
//专业
eduExpItem.eduMajor= $.trim(splitEdu[1]);
}
if(splitEdu.length>2){
eduExpItem.eduDegree= $.trim(splitEdu[2]);
}
}
}
}
item.eduExpList.push(eduExpItem);
}
});
}
//求职期望
item.expect=null;
var $expectSpans=$li.find("div.expect-box").children("span");
if($expectSpans && $expectSpans.length>1){
var expectContent=$.trim($($expectSpans.get(1)).text());
var expectArr=expectContent.split("·");
if(expectArr && expectArr.length>1){
item.expect=$.trim(expectArr[1]);
}
}
collectData.push(item);
}
isExcuting=false;
//筛选符合条件的数据
for(var i=0;i<collectData.length;i++){
var item=collectData[i];
var checkResult="";
//过滤学校名称
if(item.eduExpList && item.eduExpList.length>0
&& universityNames.length>0){
var eduFilter=false;
for(var j=0;j<item.eduExpList.length;j++){
var eduItem=item.eduExpList[j];
//符合学校条件,并且不能是大专
if(checkStringOfLike(eduItem.universityName,universityNames)
&& eduItem.eduDegree.indexOf("大专")<0){
eduFilter=true;
break;
}
}
if(!eduFilter){
checkResult+="学校不符合条件。";
}
}
//判断年龄
if(ageLessThan!=null && item.age!=null ){
if(ageLessThan<=item.age){
checkResult+="年龄不符合条件。";
}
}
//过滤应届生
if(filterYingJie && item.jobAge.indexOf("应届生")>=0){
checkResult+="应届生不符合条件。";
}
//过滤求职期望
if(item.expect!=null && item.expect!=""
&& filterExpects!=null && filterExpects.length>0){
if(!checkStringOfLike(item.expect,filterExpects)){
checkResult+="求职职位不符合条件。";
}
}
item.checkResult=checkResult;
/**
* 校验通过的处理
*/
var $li=$($recommendLiList.get(item.domIndex));
$li.css("background-color","white");
if(checkResult==""){
recommendData.push(item);
//标记li元素的背景颜色
if($li!=null){
//如果未沟通比较橙色
if(item.goutong=="未沟通"){
$li.css("background-color","orange");
}
else if(item.goutong=="已沟通"){
$li.css("background-color","lightblue");
}
}
//点击按钮,绑定事件
var $btn_doc=$li.find("span.btn-doc").children("button");
$btn_doc.click(btnCommunicateRefresh);
}
}
rText+=",共"+recommendData.length+"个符合条件。";
if(recommendData.length>0){
rText+=JSON.stringify(recommendData);
}
console.log(rText);
$result_view.text(rText);
}
/**
* 判断是否包含字符串
*/
function checkStringOfLike(str,arr){
var result=false;
if(!arr || arr.length<1){
return result;
}
if(str==null){
return result;
}
$.each(arr,function(index,item){
if(str.indexOf(item)>=0){
result=true;
return true;
}
});
return result;
}
function selectNext(){
showInfoOfOneByOne();
if (recommendData == null || recommendData.length <= 0) {
alert("请先筛选");
return;
}
if (currentItem != null) {
var idx = recommendData.indexOf(currentItem);
if (idx < 0) {
alert("数据不存在");
return;
}
if (idx + 1 >= recommendData.length) {
//已经到最后了,从第一个开始
// alert("已经到最后了");
currentItem = recommendData[0];
}
else{
currentItem = recommendData[idx + 1];
}
}
else{
currentItem=recommendData[0];
}
console.info("找到了下一个:"+JSON.stringify(currentItem));
//滚动到这儿
scrollTo($recommendLiList[currentItem.domIndex]);
showInfoOfOneByOne(currentItem);
}
function selectPrev(){
showInfoOfOneByOne();
if (recommendData == null || recommendData.length <= 0) {
alert("请先筛选");
return;
}
if (currentItem != null) {
var idx = recommendData.indexOf(currentItem);
if (idx < 0) {
alert("数据不存在");
return;
}
if (idx ==0) {
//已经到第一个了,从倒数第一开始
// alert("已经到第一个了");
currentItem = recommendData[recommendData.length - 1];
}
else{
currentItem = recommendData[idx - 1];
}
}
else{
// alert("没有上一个");
//没有上一个,从倒数第一开始
currentItem = recommendData[recommendData.length - 1];
}
console.info("找到了上一个:"+JSON.stringify(currentItem));
//滚动到这儿
scrollTo($recommendLiList[currentItem.domIndex]);
showInfoOfOneByOne(currentItem);
}
function showInfoOfOneByOne(data){
var msg="";
if(data!=null){
msg="找到了第"+(recommendData.indexOf(data)+1)+"个,姓名:"+data.realName;
}
var $span_oneByOne=$("#oneByOne_info_control");
$span_oneByOne.text(msg);
}
//滚动到指定位置
function scrollTo(element, speed) {
try {
if (element == null) {
return;
}
if (!speed) {
speed = 300;
}
var $iframe_syncFrame = $(window.frames["syncFrame"]);
// $iframe_syncFrame.scrollTop(-10000);
if (!element) {
// $("html,body").animate({ scrollTop: 0 }, speed);
// $iframe_syncFrame.animate({ scrollTop: 0 });
$iframe_syncFrame.scrollTop(0);
} else {
var $e = $(element);
if ($e.length > 0) {
// $("html,body").animate({ scrollTop: $e.offset().top-200 + "px" }, speed);
var scrollTop=$e.offset().top;
$iframe_syncFrame.scrollTop(scrollTop-200);
}
}
} catch (error) {
console.error(error);
alert("滚动到指定位置,异常了");
}
}
//数组去除空
function trimArray(data){
if(data==null || data.length<1){
return data;
}
for (var i = data.length - 1; i >= 0; i--) {
var item = $.trim(data[i]);
if (item == null || item == "") {
data.splice(i, 1);
}
}
return data;
}
//打招呼之后切换背景颜色
function btnCommunicateRefresh(e){
var $btn_doc=$(this);
if($btn_doc!=null && $btn_doc.length>0){
var $li = $btn_doc.parents("li");
$li.css("background-color","lightblue");
// if($btn_doc.hasClass("btn-continue")){
// $li.css("background-color","orange");
// }
// else if($btn_doc.hasClass("btn-greet")){
// $li.css("background-color","lightblue");
// }
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/juzhengze/zhaopin-boss-chrome.git
git@gitee.com:juzhengze/zhaopin-boss-chrome.git
juzhengze
zhaopin-boss-chrome
zhaopin-boss-chrome
master

搜索帮助