jobfair_com.blade.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  1. @extends('module.layouts.content')
  2. @push('meta')
  3. @endpush
  4. @push('css')
  5. <link href="{{ theme_asset('app/css/common.css') }}" rel="stylesheet">
  6. <link href="{{theme_asset('app/css/jobfair/newjobfair.css')}}" rel="stylesheet"/>
  7. <link rel="stylesheet" type="text/css" href="{{ theme_asset('app/css/company/company_ajax_dialog.css')}}"/>
  8. <link rel="stylesheet" type="text/css" href="{{ theme_asset('app/css/common_ajax_dialog.css')}}"/>
  9. @endpush
  10. @push('js')
  11. <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak={{ subsite_config('aix.system.map.map.map_ak') }}&s=1"></script>
  12. @endpush
  13. @section('content')
  14. <div class="newjobfair">
  15. {{--banner信息--}}
  16. <div class="jobfairshow_top_info">
  17. <div class="top_info_des">
  18. <div class="j_name">{{ $jobfair->title }}</div>
  19. <div class="top_info_l">
  20. <div class="t1">举办时间:{{date('Y年m月d日',$jobfair->holddate_start)}} - {{date('Y年m月d日',$jobfair->holddate_end)}}({{date('H:i',$jobfair->holddate_start)}}-{{date('H:i',$jobfair->holddate_end)}})</div>
  21. <div class="t2">举办地点:{{ $jobfair->address }}</div>
  22. <div class="t3">联系方式:{{ $jobfair->phone }}</div>
  23. <div class="t3">预订时间:{{date('Y年m月d日 H:i',$jobfair->predetermined_start)}} - {{date('Y年m月d日 H:i',$jobfair->predetermined_end)}}</div>
  24. </div>
  25. <div class="top_info_r">
  26. <div class="online_order_btn">
  27. @if($jobfair->predetermined_end > time())
  28. <a class="">在线预订</a>
  29. @else
  30. <a class="btn_disabled">停止预订</a>
  31. @endif
  32. </div>
  33. <div class="other_info">
  34. <div class="t1">参会企业:<span>{{ $companyCount->count() }}</span>家</div>
  35. <div class="t2">需求人数:<span>{{$needPersonCount}}</span>人</div>
  36. </div>
  37. </div>
  38. <div class="clear"></div>
  39. </div>
  40. @if(get_subsite_open())
  41. <span class="subsite">来源:{{$jobfair->sitename or '总站'}}</span>
  42. @endif
  43. </div>
  44. <div class="jobfair_detail_show">
  45. <div class="tabs"><ul>
  46. <li @if(!$reserve)class="active"@endif>招聘会信息</li>
  47. <li>参会企业</li>
  48. <li @if($reserve)class="active"@endif>在线预订</li>
  49. <li>交通线路</li>
  50. </ul>
  51. <div class="search_box"><input type="text" class="search_input" placeholder="请输入企业或职位"><input type="button" class="search_btn" value="搜索"></div>
  52. <div class="clear"></div>
  53. </div>
  54. <div class="tabs_show">
  55. {{--招聘会信息--}}
  56. <div class="tabs_show_item newjobfairitem" style="display:{{$reserve ? 'none' : 'block'}};">
  57. <div class="txt">
  58. {!! nl2br($jobfair->jobfair_introduction) !!}
  59. </div>
  60. <div class="stit">招聘会时间,地点</div>
  61. <div class="txt">
  62. 举办时间:{{date('Y年m月d日 H:i',$jobfair->holddate_start)}} - {{date('Y年m月d日 H:i',$jobfair->holddate_end)}}<br />
  63. 预定时间:{{date('Y年m月d日 H:i',$jobfair->predetermined_start)}} - {{date('Y年m月d日 H:i',$jobfair->predetermined_end)}}<br />
  64. 举办地点:{{ $jobfair->address }}
  65. </div>
  66. <div class="stit">摊位设置及费用</div>
  67. <div class="txt">
  68. 展位数量/剩余:{{ $jobfair->standsTotal->count() }}/{{ $jobfair->standsSurplus }}<br />
  69. 摊位设置及费用:@if($jobfair->is_commonweal ==3) 免费 @elseif ($jobfair->is_commonweal ==2) {{ $jobfair->predetermined_point }}积分 @else {{ $jobfair->jobsfair_num }}场次 @endif
  70. </div>
  71. <div class="stit">参会报名办法</div>
  72. <div class="txt">官网报名</div>
  73. </div>
  74. {{--参会企业--}}
  75. <div class="tabs_show_item" id="join_com" data-v="false">
  76. @if($jobfairCompany->isNotEmpty())
  77. <div id="waterfall_main" class="waterfall_main list load_more_body">
  78. @foreach($jobfairCompany as $key=>$val)
  79. <div class="wf_box wf_element">
  80. <div>
  81. <span class="position_id">展位号:{{ $val->position or '' }}</span>
  82. <a href="{{ route('jobfair.company',['jobfair_id'=>$val->jobfair_id,'company_id'=>$val->company_id]) }}" target="_blank" class="comName">{{ $val->companys->companyname or '' }}</a>
  83. </div>
  84. <p>
  85. @if(!$val->jobfairPutJob->isEmpty())
  86. @foreach($val->jobfairPutJob as $ke => $va)
  87. <a href="{{ route('jobfair.show.quarters',['id'=>$va->id]) }}" target="_blank" title="{{ $va->jobs->jobs_name }}">{{ $va->jobs->jobs_name }}({{ $va->jobs->amount or '若干' }})</a>
  88. @endforeach
  89. @else
  90. <a href="javascript:;" style="color:#999">暂无职位</a>
  91. @endif
  92. </p>
  93. </div>
  94. @endforeach
  95. </div>
  96. @if($more)
  97. <div class="load_more_footer">
  98. <span page="1" jobfair_id="{{ $jobfair->id }}">加载更多</span>
  99. </div>
  100. @endif
  101. @endif
  102. </div>
  103. {{--在线预订--}}
  104. <div class="tabs_show_item" id="order_jofair_item" style="display:{{$reserve ? 'block' : 'none'}}">
  105. <div class="jobfairshow_5 reserve_1">
  106. <div class="ptit">
  107. <div class="selectbox" style="@if(count($jobfair->floorPlan)<2)opacity:0 @endif">
  108. 招聘会场地:
  109. <select name="selectImg">
  110. @foreach($jobfair->floorPlan as $key=>$val)
  111. <option value="{{ $val->id }}">{{ $val->name }}</option>
  112. @endforeach
  113. </select>
  114. </div>
  115. 招聘会展位图
  116. </div>
  117. <hr width="1080" class="zw_hr" style="">
  118. <div style="width:1080px;margin:0px auto;border:1px solid #15bcc2;text-align:center;line-height:40px; border-radius:7px;margin-top:30px;">
  119. 现参加该现场招聘的商家有<span style="color:#F00;">{{ $comCount }}</span>家,招聘岗位有<span style="color:#F00;">{{ $jobsCount }}</span>个,需求人才数<span style="color:#F00;">{{$needPersonCount}}</span>个,还剩<span style="color:#F00;">{{$jobfair->standsSurplus}}</span>个空余展位,用人单位可点击申请展位
  120. </div>
  121. <div class="reserve_img booth">
  122. <ul class="zw_tip">
  123. <li><span>可以预定</span><div class="zw_tip_icon_order"></div></li>
  124. <li><span>审核中</span><div class="zw_tip_icon_audit"></div></li>
  125. <li><span>预定成功</span><div class="zw_tip_icon_success"></div></li>
  126. <li><span>预留已锁定</span><div class="zw_tip_icon_stayLock"></div></li>
  127. </ul>
  128. </div>
  129. <div class="reserve1_img">
  130. <div class="ajax_loading"><div class="ajaxloadtxt"></div></div>
  131. <img src="" class="jobfairImg">
  132. <ul class="reserve_main booth">
  133. </ul>
  134. </div>
  135. </div>
  136. </div>
  137. {{--交通线路--}}
  138. <div class="tabs_show_item" id="map_item" data-v="false">
  139. @if($jobfair->bus)<div style="margin-left: 15px;margin-bottom: 15px;">交通路线:{{$jobfair->bus}}</div>@endif
  140. <div class="map" id="container" style="width:1130px;margin: 0 auto;height:400px;"></div>
  141. </div>
  142. </div>
  143. </div>
  144. </div>
  145. @endsection
  146. @section('script')
  147. <script type="text/javascript" src="{{ theme_asset('app/js/jquery.disappear.tooltip.js') }}"></script>
  148. <script type="text/javascript" src="{{theme_asset('app/js/jquery.cxscroll.js')}}"></script>
  149. <script>
  150. var filter = {
  151. expr: function(o){
  152. var cls = this.replace(o.item || ".wf_element"),
  153. leftCls = this.replace(o.leftItem || ".wf_temp"),
  154. rightCls = this.replace(o.rightItem || ".wf_rank");
  155. $.extend($.expr[':'],{
  156. node:function(a){
  157. return $(a).hasClass(cls);
  158. },
  159. leftNode: function(a){
  160. return $(a).hasClass(leftCls);
  161. },
  162. rightNode: function(a){
  163. return $(a).hasClass(rightCls);
  164. }
  165. });
  166. },
  167. replace: function(cls){
  168. var regExp = /[.#]/g,
  169. whitespace = /\s/g;
  170. if(whitespace.test(cls)){
  171. cls = cls.split(' ')[0];
  172. }
  173. return cls.replace(regExp, '');
  174. }
  175. }
  176. function Waterfall(o){
  177. this.target = o.target || $('#waterfall_main');
  178. this.targetItem = o.targetItem || '.wf_box';
  179. this.colWidth = o.colWidth || 0;
  180. this.colCount = o.colCount || 4;
  181. filter.expr(o);
  182. this.init();
  183. }
  184. Waterfall.prototype = {
  185. init:function(){
  186. var self = this,
  187. col = [],
  188. nodes = self.target.find(":node"),
  189. leftNodes = self.target.find(":leftNode"),
  190. rightNodes = self.target.find(":rightNode"),
  191. nodeLen = nodes.length,
  192. leftLen = leftNodes.length,
  193. rightLen = rightNodes.length;
  194. for(var i = 0; i < self.colCount; i++){
  195. col[i] = 0;
  196. if(i == 0 && leftLen){
  197. for(var j = 0; j < leftLen; j++){
  198. col[i] += leftNodes.eq(j).outerHeight(true);
  199. }
  200. }
  201. if(i == self.colCount - 1 && rightLen){
  202. for(var j = 0; j < rightLen; j++){
  203. col[i] += rightNodes.eq(j).outerHeight(true);
  204. }
  205. }
  206. }
  207. nodes.each(function(){
  208. this.h = $(this).outerHeight(true);
  209. if($(this).hasClass(filter.replace(self.targetItem))){
  210. var ming = self.getMinCol(col);
  211. $(this).css({"left": ming * self.colWidth, "top": col[ming]});
  212. col[ming] += this.h;
  213. }
  214. });
  215. self.target.css('height', self.maxHeight(col));
  216. },
  217. setColWidth:function(wid){
  218. this.colWidth = wid;
  219. },
  220. setColCount:function(col){
  221. this.colCount = col;
  222. },
  223. maxHeight:function(arr){
  224. var len = arr.length,temp = arr[0];
  225. for(var i= 1; i < len; i++){
  226. if(temp < arr[i]){
  227. temp = arr[i];
  228. }
  229. }
  230. return temp;
  231. },
  232. getMinCol:function(arr){
  233. var ca = arr,cl = ca.length,temp = ca[0],minc = 0;
  234. for(var ci = 0; ci < cl; ci++){
  235. if(temp > ca[ci]){
  236. temp = ca[ci];
  237. minc = ci;
  238. }
  239. }
  240. return minc;
  241. }
  242. };
  243. var content = $('#waterfall_main');
  244. var item = content.find('.wf_element'),
  245. itemWidth = item.outerWidth(),/*取瀑布流元素宽*/
  246. contentWidth = 1162, /*取容器宽*/
  247. list_sum = parseInt(contentWidth / itemWidth),
  248. list_sum_margin = list_sum - 1, /*取元素间距的值*/
  249. left = (contentWidth - itemWidth * list_sum) / list_sum_margin;
  250. if(itemWidth * list_sum > contentWidth){
  251. list_sum -= 1;
  252. left = contentWidth - itemWidth * list_sum;
  253. }
  254. var colWidth = itemWidth + left;
  255. var waterfall = new Waterfall({
  256. //设定列宽度
  257. "colWidth": colWidth,
  258. //设定显示列数
  259. "colCount": 2
  260. });
  261. content.on('mouseenter', '.wf_box', function(){
  262. $(this).addClass('wf_hov');
  263. }).on('mouseleave', '.wf_box', function(){
  264. $(this).removeClass('wf_hov');
  265. });
  266. $(function () {
  267. function map() {
  268. var map = new BMap.Map("container"); // 创建地图实例
  269. var opts = {
  270. width : 300, // 信息窗口宽度
  271. height: 60, // 信息窗口高度
  272. }
  273. var infoWindow = new BMap.InfoWindow("举办地址:{{ $jobfair->address }}<br />举办开始时间:{{date('Y年m月d日 H:i:s',$jobfair->holddate_start)}}", opts); // 创建信息窗口对象
  274. var point = new BMap.Point('{{ $jobfair->map_x }}','{{ $jobfair->map_y }}'); // 创建点坐标
  275. map.centerAndZoom(point, 16);
  276. var qs_marker = new BMap.Marker(point); // 创建标注
  277. map.addOverlay(qs_marker);
  278. map.openInfoWindow(infoWindow,point);
  279. map.setCenter(point);
  280. map.addControl(new BMap.NavigationControl());//添加鱼骨
  281. map.enableScrollWheelZoom();//启用滚轮放大缩小,默认禁用。
  282. }
  283. //banner上在线预订按钮
  284. $(".online_order_btn a").click(function () {
  285. if($(this).hasClass("btn_disabled")){
  286. return false;
  287. }else {
  288. $(".jobfair_detail_show .tabs li").removeClass("active").eq(2).addClass("active");
  289. $(".tabs_show_item").eq(2).slideDown().siblings().slideUp();
  290. }
  291. })
  292. // 招聘会tab切换
  293. $(".jobfair_detail_show .tabs li").click(function () {
  294. var index = $(this).index();
  295. $(this).addClass("active").siblings().removeClass("active");
  296. $(".tabs_show .tabs_show_item").eq(index).slideDown(function () {
  297. $(".search_box").hide();
  298. }).siblings().slideUp(
  299. function () {
  300. if($("#join_com").is(":visible")){
  301. $(".search_box").show();
  302. }
  303. }
  304. );
  305. if($("#join_com").is(":visible") && !$("#join_com").data("v")){
  306. waterfall.init();
  307. $("#join_com").data("v","true");
  308. }
  309. if($("#map_item").is(":visible") && !$("#map_item").data("v")){
  310. map();
  311. $("#map_item").data("v","true");
  312. }
  313. })
  314. // 预订展位
  315. var floorplan_id= $("select[name='selectImg']").val();
  316. var jobfair_id = "{{ $jobfair->id }}";
  317. jobfairShow(floorplan_id, jobfair_id);
  318. $("select[name='selectImg']").change(function(){
  319. floorplan_id = $(this).val();
  320. jobfairShow(floorplan_id, jobfair_id);
  321. })
  322. function jobfairShow (floorplan_id, jobfair_id){
  323. $.ajax({
  324. type:"get",
  325. url:"{{ route('jobfair.ajax.get.data') }}",
  326. data:{jobfair_id:jobfair_id,floorplan_id:floorplan_id},
  327. async:true,
  328. beforeSend:function(){
  329. $(".reserve1_img .ajax_loading").show();
  330. },
  331. success:function(result){
  332. if(result.status==1){
  333. $(".jobfairImg").attr("src",result.imageUrl);
  334. $(".reserve_main").html("");
  335. for (var i = 0; i < result.value.length; i++) {
  336. var statusClass,statusTxt,restxt='';
  337. var jobslist='';
  338. switch(result.value[i].status){
  339. case 1://可预订
  340. statusClass = "order";
  341. statusTxt = "可预订";
  342. restxt = "展位号:"+result.value[i].name;
  343. break;
  344. case 2://预留已锁定
  345. statusClass = "stayLock";
  346. statusTxt = "预留已锁定";
  347. restxt = "展位号:"+result.value[i].name;
  348. break;
  349. case 3://审核中
  350. statusClass = "audit";
  351. statusTxt = "审核中";
  352. restxt = result.value[i].company.companys.companyname;
  353. break;
  354. case 4://已预订
  355. statusClass = "succeed";
  356. statusTxt = "已预订";
  357. var jobfairArr = result.value[i].company.jobfair_put_job;
  358. for(var k =0 ;k<jobfairArr.length;k++){
  359. if(jobfairArr[k].jobs.audit != 1 || jobfairArr[k].jobs.display != 1){
  360. continue;
  361. }
  362. var amount ='';
  363. if(jobfairArr[k].jobs.amount) {
  364. amount = jobfairArr[k].jobs.amount;
  365. } else {
  366. amount = '若干'
  367. }
  368. jobslist+='<li><div class="jname">职位:<a href="/content/jobfair/show/quarters/'+jobfairArr[k].id+'">'+ jobfairArr[k].jobs.jobs_name +'</a></div><div class="jnum">人数:'+ amount +'</div></span></li>';
  369. }
  370. if(result.value[i].company.companys){
  371. restxt = result.value[i].company.companys.companyname+'<ul style="overflow-y: auto;max-height:300px;">'+ jobslist +'</ul>';
  372. }else{
  373. //console.log("企业不存在")
  374. }
  375. break;
  376. }
  377. var html='<li data-id="zw-'+ i +'" class="li zw-box '+ statusClass +'" positionid="'+ result.value[i].id +'" style="left:'+ result.value[i].left +';top:'+ result.value[i].top +'">' +
  378. '<span class="zw-name">'+ result.value[i].name +'</span>' +
  379. '<div class="tip '+ statusClass +'">' +
  380. '<div class="arrow"></div>' +
  381. '<div class="box">' +
  382. '<div class="t">展位状态:'+ statusTxt +'</div>' +
  383. '<div class="restxt link_gray6">'+ restxt +'</div>' +
  384. '</div>' +
  385. '</div>' +
  386. '</li>';
  387. $(".reserve_main").append(html);
  388. if($(".reserve_main .zw-box").length>320){
  389. var n1 = Math.ceil(($(".reserve_main .zw-box").length-320)/20);
  390. $(".reserve1_img").css("min-height",800+n1*50);
  391. }
  392. }
  393. }
  394. },
  395. complete:function () {
  396. $(".reserve1_img .ajax_loading").hide();
  397. }
  398. });
  399. }
  400. $(".reserve_main").on("mouseenter",".li",function(){
  401. $(this).find(".tip").show();
  402. })
  403. $(".reserve_main").on("mouseleave",".li",function(){
  404. $(this).find(".tip").hide();
  405. })
  406. $(".reserve_main").on('click','.zw-box.order',function(){
  407. var status = "{{$jobfair->predetermined_ok}}";
  408. if(status == 0){
  409. disapperTooltip("remind", '该招聘会已停止预定');
  410. return false;
  411. }
  412. var $this = $(this);
  413. var position_id = $(this).attr("positionid");
  414. var url = "{{ route('jobfair.appoint.save') }}";
  415. $.getJSON(url,{jobfair_id:jobfair_id,position_id:position_id,floorplan_id:floorplan_id},function (res) {
  416. if (res.status == 1) {
  417. var qsDialog = $(this).dialog({
  418. title: '预定招聘会',
  419. loading: true,
  420. border: false,
  421. footer:true,
  422. yes: function() {
  423. $.post(url,{position_id:position_id,jobfair_id:jobfair_id,floorplan_id:floorplan_id,_token:"{{ csrf_token() }}"},function(result){
  424. if(result.status==1){
  425. disapperTooltip("success", result.msg);
  426. $this.removeClass("order").addClass("audit");
  427. $this.find(".t").text("展位状态:审核中");
  428. $this.find(".restxt").text(result.data.companyname);
  429. }else{
  430. disapperTooltip("remind", result.msg);
  431. }
  432. });
  433. }
  434. });
  435. qsDialog.setContent(res.msg);
  436. } else {
  437. disapperTooltip("remind", res.msg);
  438. if(res.type == 1){
  439. var qsDialogSon = $(this).dialog({
  440. title: '企业会员登录',
  441. loading: true,
  442. border: false,
  443. footer:false,
  444. });
  445. qsDialogSon.setContent(res.html);
  446. }
  447. }
  448. })
  449. });
  450. $(document).on('click','.search_btn',function () {
  451. var keyinput = $('.search_input').val();
  452. $.getJSON("{{ route('jobfair.ajax.jobs') }}",{jobfair_id:"{{ $jobfair->id }}",keyinput:keyinput},function(result){
  453. if(result.status==1){
  454. $("#waterfall_main").html(result.data);
  455. waterfall.init();
  456. }else{
  457. disapperTooltip("remind", result.msg);
  458. }
  459. });
  460. });
  461. @if($more)
  462. /**
  463. * 监听网页滚动事件
  464. */
  465. var f = true;
  466. $(window).on("scroll",function () {
  467. var isShow = $("#join_com").is(":visible");
  468. if($(".load_more_footer span").hasClass("end")){
  469. return false;
  470. }
  471. var h = document.documentElement.clientHeight || document.body.clientHeight;
  472. var sh = document.documentElement.scrollTop || document.body.scrollTop;
  473. var t1 = document.querySelector(".load_more_footer").offsetTop- sh;
  474. //可视区域
  475. if (t1 < h && isShow && f ) {
  476. s();
  477. }
  478. });
  479. var s = function () {
  480. var page = $(".load_more_footer span").attr('page');
  481. $.ajax({
  482. type:"get",
  483. url:"{{ route('jobfair.show.com',['id'=>$jobfair->id]) }}",
  484. data:{
  485. page:page
  486. },
  487. beforeSend:function () {
  488. f = false;
  489. $(".load_more_footer span").html('正在加载').addClass("loading");
  490. },
  491. success:function (result) {
  492. if(result.status==1){
  493. $(".load_more_body").append(result.data);
  494. $(".load_more_footer span").attr('page',parseInt(page)+1);
  495. $(".load_more_footer span").html('加载更多').removeClass("loading");
  496. waterfall.init();
  497. }else {
  498. $(".load_more_footer span").html('-----没有更多了-----').removeClass("loading").addClass("end");
  499. }
  500. },
  501. complete:function () {
  502. f = true;
  503. }
  504. })
  505. }
  506. @endif
  507. })
  508. </script>
  509. @endsection