jobfairout.blade.php 19 KB

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