jobfair.blade.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. <link rel="stylesheet" href="{{ theme_asset('app/css/jobfair/DrawingManager_min.css') }}"/>
  2. <meta name="csrf-token" content="{{ csrf_token() }}">
  3. <div class="row">
  4. <div class="col-md-12">
  5. {{--<div class="box box-info">--}}
  6. {{--<div class="box-header with-border">--}}
  7. {{--招聘会--}}
  8. {{--</div>--}}
  9. {{--<div class="box-body">--}}
  10. {!! $content !!}
  11. {{--</div>--}}
  12. {{--</div>--}}
  13. </div>
  14. </div>
  15. <style type="text/css">
  16. .clearfix:after{display:block;clear:both;content:"";visibility:hidden;height:0;}
  17. .clearfix{zoom:1; /*为了兼容IE*/}
  18. .content .jobfair-item{width: 190px;height: 227px;border:1px solid #ddd;padding: 10px;float: left;text-align: center;margin-left: 20px;margin-bottom: 20px;}
  19. .content .jobfair-item .imgbox{width: 170px;height: 140px;margin-bottom: 10px;border: 1px solid #ddd;padding: 2px;}
  20. .content .jobfair-item img{width: 170px;height: 140px;}
  21. .content .jobfair-item .jobfair-name{margin-bottom: 5px;}
  22. .content .jobfair-item .jobfair-name input{height: 30px;line-height: 30px;width:170px;border:1px solid #ddd;color: #2282D9;}
  23. .content .jobfair-item .edit{color: #2282D9;cursor:pointer;margin-right: 30px;}
  24. .content .jobfair-item .delete{color: #666666;cursor:pointer;}
  25. .modal-dialog{width: 1030px !important;}
  26. .modal-dialog .modal-footer{text-align: center;}
  27. .modal-dialog .modal-title{text-align: center;color: #2282D9;}
  28. .batch-operation .tips{float: left; color: #999999;line-height: 34px;margin-left: 10px;}
  29. .jobfairbox{width: 1002px;height: auto;min-height: 800px;border: 1px solid #ccc;background-color: #fff;position: relative;}
  30. .jobfairbox .floorplanImg{max-width: 1000px;}
  31. .jobfairbox .del{background:#ffffff url("{{ theme_asset('app/images/252.png') }}")no-repeat center;width: 18px;height: 18px;border-radius: 10px;display: inline-block;background-size: 16px;position: absolute;left: 22px; top: -12px;cursor: default;display: none;}
  32. .jobfairbox .sign{position: absolute;left: 6px;bottom: -15px;width: 20px;text-align: center;font-size: 12px;color: #3c8dbc;}
  33. .jobfairbox .status-edit{background:#ffffff url("{{ theme_asset('app/images/253.png') }}")no-repeat center;width: 18px;height: 18px;border-radius: 10px;display: inline-block;background-size: 16px;position: absolute;left: -8px; top: -12px;cursor: default;display: none;}
  34. .jobfairbox .zw-box:hover .del,.jobfairbox .zw-box:hover .status-edit{display: block;}
  35. .jobfairbox .zw-box{display:inline-block;width: 30px;height: 30px;position: absolute;}
  36. .jobfairbox .zw-box.zw-lock{background: url("{{ theme_asset('app/images/jobfair/zw-stayLock.png') }}")no-repeat;}
  37. .jobfairbox .zw-box.zw-order{background: url("{{ theme_asset('app/images/jobfair/zw-order.png') }}")no-repeat;}
  38. .jobfairbox .zw-box.zw-audit{background: url("{{ theme_asset('app/images/jobfair/zw-audit.png') }}")no-repeat;}
  39. .jobfairbox .zw-box.zw-success{background: url("{{ theme_asset('app/images/jobfair/zw-success.png') }}")no-repeat;}
  40. .jobfairbox .zw-box .zw-num{position: absolute;left: 0px;top: 5px;width: 30px;height: 16px;background: transparent;border: none;text-align: center;}
  41. .jobfairbox .zw-box.zw-lock .zw-num{color: #fff;}
  42. .jobfairbox .zw-box.zw-order .zw-num{color: #333;}
  43. .jobfairbox .zw-box.zw-audit .zw-num{color: #333;}
  44. .jobfairbox .zw-box.zw-success .zw-num{color: #333;}
  45. </style>
  46. <!-- Modal -->
  47. <div class="modal fade bs-example-modal-lg" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
  48. <div class="modal-dialog" role="document">
  49. <div class="modal-content">
  50. <div class="modal-header">
  51. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  52. <h4 class="modal-title" id="myModalLabel"></h4>
  53. </div>
  54. <div class="modal-body">
  55. <div class="clearfix batch-operation">
  56. <label class="col-sm-2 control-label" style="width: 158px;line-height: 34px;">批量修改展位状态:</label>
  57. <div class="input-group" style="float: left;width: 400px;">
  58. <span class="input-group-addon"><i class="fa fa-pencil fa-fw"></i></span>
  59. <input type="text" class="form-control" id="batch_reserved" placeholder="请用 - 分隔输入展位区间">
  60. </div>
  61. <div class="btn-group pull-left">
  62. <button type="button" class="btn btn-primary batch_order_btn">改为预定</button>
  63. </div>
  64. <div class="btn-group pull-left" style="margin-left: 20px;">
  65. <button type="button" class="btn btn-primary batch_lock_btn">改为锁定</button>
  66. </div>
  67. <div class="tips">请输入展位图下方编号,用"-"分隔,例如 5-20 ,则修改 5 到 20 的所有展位状态</div>
  68. </div>
  69. <div class="jobfairbox" id="jobfairShow" oncontextmenu="return false" data-jobfairmanage="true">
  70. </div>
  71. </div>
  72. <div class="modal-footer">
  73. <button type="button" class="btn btn-primary save">保存</button>
  74. <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  75. <input type="hidden" value="" />
  76. </div>
  77. </div>
  78. </div>
  79. </div>
  80. <script type="text/javascript" src="{{ theme_asset('app/js/drag.js') }}"></script>
  81. <script type="text/javascript" src="{{ theme_asset('app/js/jobfair.js') }}"></script>
  82. <script type="text/javascript" src="{{ theme_asset('app/js/jobfair/DrawingManager_min.js') }}"></script>
  83. <script>
  84. // 百度地图API功能
  85. function G(id) {
  86. return document.getElementById(id);
  87. }
  88. var map = new BMap.Map("container");
  89. var map_x = $("#x").val();
  90. var map_y = $("#y").val();
  91. var map_zoom = $("#zoom").val();
  92. var address_id = $("#address").val();
  93. var mPoint = new BMap.Point(map_x,map_y);
  94. map.centerAndZoom(mPoint,map_zoom);
  95. map.enableScrollWheelZoom(true);
  96. map.addControl(new BMap.NavigationControl());
  97. if(address_id){
  98. sear(address_id);
  99. $("#address").focus(function () {
  100. var ac = new BMap.Autocomplete( //建立一个自动完成的对象
  101. {"input" : "address"
  102. ,"location" : map
  103. });
  104. var myValue;
  105. ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
  106. var _value = e.item.value;
  107. console.log(_value);
  108. myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
  109. $("#address").val(myValue);
  110. G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
  111. sear(myValue);
  112. });
  113. })
  114. } else {
  115. var ac = new BMap.Autocomplete( //建立一个自动完成的对象
  116. {"input" : "address"
  117. ,"location" : map
  118. });
  119. ac.addEventListener("onhighlight", function(e) { //鼠标放在下拉列表上的事件
  120. var str = "";
  121. var _value = e.fromitem.value;
  122. var value = "";
  123. if (e.fromitem.index > -1) {
  124. value = _value.province + _value.city + _value.district + _value.street + _value.business;
  125. }
  126. str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;
  127. value = "";
  128. if (e.toitem.index > -1) {
  129. _value = e.toitem.value;
  130. value = _value.province + _value.city + _value.district + _value.street + _value.business;
  131. }
  132. str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
  133. G("searchResultPanel").innerHTML = str;
  134. });
  135. var myValue;
  136. ac.addEventListener("onconfirm", function(e) { //鼠标点击下拉列表后的事件
  137. var _value = e.item.value;
  138. myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
  139. G("searchResultPanel").innerHTML ="onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;
  140. sear(myValue);
  141. });
  142. }
  143. function setPlace(){
  144. map.clearOverlays(); //清除地图上所有覆盖物
  145. function myFun(){
  146. var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果
  147. map.centerAndZoom(pp, map_zoom);
  148. map.addOverlay(new BMap.Marker(pp)); //添加标注
  149. }
  150. var local = new BMap.LocalSearch(map, { //智能搜索
  151. onSearchComplete: myFun
  152. });
  153. local.search(myValue);
  154. }
  155. function sear(result){//地图搜索
  156. var local = new BMap.LocalSearch(map, {
  157. renderOptions:{map: map}
  158. });
  159. local.search(result);
  160. }
  161. $(document).ready(function() {
  162. $('.is_commonweal').on('ifCreated', function(){
  163. if(true == $(this).is(':checked')){
  164. var commonweal = $(this).val();
  165. if(commonweal == 3){
  166. $('#predetermined_point').closest(".form-group").css('display','none');
  167. $('#jobsfair_num').closest(".form-group").css('display','none');
  168. $('#nosign_point').closest(".form-group").css('display','none');
  169. $('#late_point').closest(".form-group").css('display','none');
  170. }else{
  171. $('#predetermined_point').closest(".form-group").css('display','block');
  172. $('#jobsfair_num').closest(".form-group").css('display','block');
  173. $('#nosign_point').closest(".form-group").css('display','block');
  174. $('#late_point').closest(".form-group").css('display','block');
  175. }
  176. }
  177. });
  178. $('.is_commonweal').on('ifChecked', function(){
  179. var commonweal = $(this).val();
  180. if(commonweal == 3){
  181. $('#predetermined_point').closest(".form-group").css('display','none');
  182. $('#jobsfair_num').closest(".form-group").css('display','none');
  183. $('#nosign_point').closest(".form-group").css('display','none');
  184. $('#late_point').closest(".form-group").css('display','none');
  185. }else{
  186. $('#predetermined_point').closest(".form-group").css('display','block');
  187. $('#jobsfair_num').closest(".form-group").css('display','block');
  188. $('#nosign_point').closest(".form-group").css('display','block');
  189. $('#late_point').closest(".form-group").css('display','block');
  190. }
  191. });
  192. });
  193. $(function () {
  194. var tpl = document.getElementById('thumbnailTpl');
  195. $("select[name='areaid']").change(function () {
  196. var id = $(this).val();
  197. $.ajax({
  198. headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
  199. url:"{{route('jobfair.add')}}",
  200. type:'post',
  201. data:{
  202. id:id,
  203. },
  204. dataType: 'json',
  205. success:function(result){
  206. console.log(result);
  207. if(result.code==0){
  208. swal(result.info, '', 'error');
  209. }else{
  210. tpl.content.querySelector('[name="jobfairName[]"]').value=result.data.name;
  211. tpl.content.querySelector('img').src='/storage/'+result.data.images;
  212. tpl.content.querySelector('strong').setAttribute("ls",result.data.id);
  213. tpl.content.querySelector('.jobfair-item').setAttribute("data-id",result.data.unique_id);
  214. tpl.content.querySelector('[name="thumbnailId[]"]').value=result.data.value;
  215. tpl.content.querySelector('[name="thumbnailImg[]"]').value=result.data.images;
  216. var clone = document.importNode(tpl.content, true);
  217. document.getElementById("position_id").appendChild(clone);
  218. }
  219. }
  220. });
  221. })
  222. //举办场地平面图编辑
  223. $("#position_id").on("click",".edit",function(){
  224. var $parent = $(this).closest(".jobfair-item");
  225. var thisId = $parent.data("id");
  226. //console.log(thisId)
  227. var positionArr = $parent.find('[name="thumbnailId[]"]').val();
  228. var imageUrl = $parent.find("img").attr("src");
  229. var name = $parent.find(".jobfair-name input").val();
  230. positionArr =JSON.parse(positionArr);
  231. //console.log(positionArr);
  232. for(var i = 0;i<positionArr.length;i++){
  233. var type = positionArr[i].type;
  234. var status = positionArr[i].status;
  235. var zwClass="";
  236. if(status ==undefined){
  237. status=0;
  238. }
  239. //type 1可预定,2预留
  240. //status 1可预定,2审核中,3预定成功,4预留
  241. if((type ==1 &&status ==1)||(type ==1 &&status ==0)){
  242. zwClass = "zw-order";
  243. }else if((type ==2 &&status ==4)||(type ==2 &&status ==0)){
  244. zwClass = "zw-lock";
  245. }else if(status ==2){
  246. zwClass = "zw-audit";
  247. }else if(status ==3){
  248. zwClass = "zw-success";
  249. }
  250. //var zwClass = positionArr[i].type==1?"zw-order":"zw-lock";
  251. var id = positionArr[i].id!=undefined?positionArr[i].id:0;
  252. var jobfairHtml= '<a class="zw-box '+zwClass+'" data-id="'+id+'" data-status="'+status+'" data-type="'+positionArr[i].type+'" data-index="'+positionArr[i].sortindex+'" data-equipment="'+positionArr[i].equipment_id+'" style="left:'+positionArr[i].left+';top:'+positionArr[i].top+';">'+
  253. '<span class="status-edit"><\/span>'+
  254. '<span class="del"><\/span>'+
  255. '<span class="sign">'+(i+1)+'<\/span>'+
  256. '<input type="text" class="zw-num" value="'+positionArr[i].name+'"\/><\/a>';
  257. $('.jobfairbox').append(jobfairHtml);
  258. }
  259. var bgImg = '<img class="floorplanImg" src="'+imageUrl+'" />';
  260. $('.jobfairbox').append(bgImg);;
  261. $("#myModalLabel").html(name);
  262. $(".modal-footer input:hidden").val(thisId);
  263. })
  264. //展位批量修改为预定
  265. $(".batch_order_btn").click(function () {
  266. batchOperation(2);
  267. })
  268. //展位批量修改为预留
  269. $(".batch_lock_btn").click(function () {
  270. batchOperation(1);
  271. })
  272. //批量操作
  273. function batchOperation(operaType) {
  274. var reservedValue = $("#batch_reserved").val();
  275. var reservedArr =reservedValue.split("-");
  276. var tempArr = [];
  277. for(var i=parseInt(reservedArr[0]) ;i<=parseInt(reservedArr[1]);i++){
  278. tempArr.push(i);
  279. }
  280. for(var i=0;i<$(".zw-box").length;i++){
  281. var parentZwbox= $(".zw-box").eq(i);
  282. var status = parentZwbox.data("status");
  283. var zwNum =parseInt(parentZwbox.find(".sign").text());
  284. for(var k= 0;k<tempArr.length;k++){
  285. if(zwNum ==tempArr[k]){
  286. if(status ==2||status ==3){
  287. swal('请重新输入', '审核中或已预定展位不能修改展位状态!', 'warning');
  288. return false;
  289. }else{
  290. if(operaType==1){
  291. parentZwbox.removeClass("zw-order").addClass("zw-lock");
  292. parentZwbox.data("type",2);
  293. parentZwbox.data("status",4);
  294. }else if(operaType==2){
  295. parentZwbox.removeClass("zw-lock").addClass("zw-order");
  296. parentZwbox.data("type",1);
  297. parentZwbox.data("status",1);
  298. }
  299. }
  300. }
  301. }
  302. }
  303. }
  304. //修改展位状态
  305. $(document).off("click",".status-edit").on("click",".status-edit",function(){
  306. var parentZwbox =$(this).closest(".zw-box");
  307. var type = parentZwbox.data("type");
  308. var status = parentZwbox.data("status");
  309. //type 1可预定,2已预留
  310. //status 1可预定,2审核中,3预定成功,4预留
  311. if(status ==2||status ==3){
  312. swal('审核中或已预定展位不能修改展位状态!', '', 'warning');
  313. return false;
  314. }
  315. if(type==1){
  316. swal({
  317. title:'确定修改为预留吗?',
  318. text:'',
  319. type:'warning',
  320. showCancelButton:true,
  321. confirmButtonText:'确定',
  322. cancelButtonText:'取消'
  323. }).then(function(isConfirm){
  324. if(isConfirm.value){
  325. parentZwbox.removeClass("zw-order").addClass("zw-lock");
  326. parentZwbox.data("type",2);
  327. parentZwbox.data("status",4);
  328. }
  329. })
  330. }
  331. if(type==2){
  332. swal({
  333. title:'确定修改为可预订吗?',
  334. text:'',
  335. type:'warning',
  336. showCancelButton:true,
  337. confirmButtonText:'确定',
  338. cancelButtonText:'取消'
  339. }).then(function(isConfirm){
  340. if(isConfirm.value){
  341. parentZwbox.removeClass("zw-lock").addClass("zw-order");
  342. parentZwbox.data("type",1);
  343. parentZwbox.data("status",1);
  344. }
  345. })
  346. }
  347. })
  348. //举办场地平面图删除
  349. $("#position_id").on("click",".delete",function(){
  350. $(this).closest(".jobfair-item").remove();
  351. })
  352. //模态框隐藏时清除数据
  353. $('#myModal').off('hidden.bs.modal').on("hidden.bs.modal", function() {
  354. $('#myModal .jobfairbox').html('');
  355. $('#myModal .modal-title').html('');
  356. $(this).removeData("bs.modal");
  357. })
  358. //模态框保存
  359. $(".modal .save").click(function(){
  360. var modalId = $(this).parent().find("input:hidden").val();
  361. var zwArr = [];
  362. $("#jobfairShow .zw-box").each(function(){
  363. var left = $(this).css("left");
  364. var top = $(this).css("top");
  365. var name = $.trim($(this).find(".zw-num").val());
  366. var type = $(this).data("type");
  367. var status = $(this).data("status");
  368. var id = $(this).data("id");
  369. var equipmentId = $(this).data("equipment");
  370. var sortindex = $(this).data("index");
  371. var positionObj = {
  372. id:id,
  373. name:name,
  374. type:type,
  375. status:status,
  376. left:left,
  377. top:top,
  378. equipment_id:equipmentId,
  379. sortindex:sortindex,
  380. }
  381. zwArr.push(positionObj);
  382. })
  383. $('.jobfair-item[data-id="'+modalId+'"]').find('[name="thumbnailId[]"]').val(JSON.stringify(zwArr));
  384. $('#myModal').modal('hide');
  385. })
  386. })
  387. </script>