login.blade.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513
  1. @extends('module.layouts.empty')
  2. @push('meta')
  3. @endpush
  4. @push('css')
  5. <link href="{{ theme_asset('app/css/login.css') }}" rel="stylesheet">
  6. <link href="{{ theme_asset('app/css/common.css') }}" rel="stylesheet">
  7. <link rel="stylesheet" type="text/css" href="{{theme_asset('app/css/elementui.min.css')}}">
  8. <style>
  9. body {background: url({{theme_asset('app/images/buyhouse/login_bg.jpg')}}) no-repeat;}
  10. .login-box {margin-top:100px;width: 1200px;position:relative;}
  11. .login-box .jucai {position:absolute;left:-167px;bottom:-20px;}
  12. .login-box .login-box-per-body{width: 1200px;height:700px;}
  13. .login-box .login-form .form-r {width: 758px;box-sizing:border-box;padding:10px;}
  14. .login-box .login-box-header {width: 1200px;background: url({{theme_asset('app/images/buyhouse/login_header.jpg')}}) no-repeat;}
  15. .login-box .login-form .form-l {padding: 100px 20px 0 40px;margin-left: 0;height: 527px;}
  16. .news_item {text-decoration:none;color:#4689e2;width:500px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;}
  17. .news_item:hover {text-decoration:underline;}
  18. </style>
  19. @endpush
  20. @push('js')
  21. <script type="text/javascript" src="{{ theme_asset('gt/gt.js') }}"></script>
  22. <script type="text/javascript" src="{{ theme_asset('gt/gt.handle.js') }}"></script>
  23. @endpush
  24. @section('content')
  25. <div id="app">
  26. <div class="login-box">
  27. <!--个人会员登录-->
  28. <div class="login-box-per-body">
  29. <div class="login-box-header">
  30. <p class="header-title">人才刚需购房系统</p>
  31. </div>
  32. <div class="login-form">
  33. {{--未登录--}}
  34. <div class="form-l" v-if="user_id == 0">
  35. <div class="switch-title">
  36. <span class="active" data-type="1">普通账户登录</span>
  37. <span data-type="2">手机动态码登录</span>
  38. </div>
  39. <!--普通用户登录-->
  40. <div class="login-type user-login">
  41. <form id="form_account" action="{{route('login.account')}}" method="post">
  42. {{ csrf_field() }}
  43. <div id="account"></div>
  44. <div id="message_account"></div>
  45. <div class="form-group yhm">
  46. <div class="imgbg"></div>
  47. <input class="input-login" type="text" value="" name="account" placeholder="{{trans('auth.member.account.placeholder')}}"/>
  48. </div>
  49. <div id="password"></div>
  50. <div class="form-group mm">
  51. <div class="imgbg"></div>
  52. <input class="input-login" type="password" value="" name="password" placeholder="请输入密码"/>
  53. </div>
  54. <div class="txt-group">
  55. <input type="checkbox" name="autoLogin" value="1" checked />
  56. <span class="check-box yes" onclick="checkAutoLogin(this)">下次自动登录</span>
  57. <a class="txt-r" href="{{route('password.request')}}?utype=user" >忘记密码?</a>
  58. </div>
  59. <div>
  60. <input class="btn-group login-account" type="button" value="登录">
  61. </div>
  62. </form>
  63. </div>
  64. <!--手机登录-->
  65. <div class="login-type mob-login" style="display: none;">
  66. <form id="form_mobile" action="{{route('login.sms')}}" method="post">
  67. {{ csrf_field() }}
  68. <div id="mobile"></div>
  69. <div id="message_mobile"></div>
  70. <div class="form-group yhm">
  71. <div class="imgbg"></div>
  72. <input class="input-login" type="text" value="" name="mobile" placeholder="请输入手机号"/>
  73. </div>
  74. <div id="code"></div>
  75. <div class="form-group mm">
  76. <div class="imgbg"></div>
  77. <input class="input-login code" type="text" value="" name="code" placeholder="请输入手机验证码"/>
  78. <input type="button" class="btn-getcode" value="获取验证码"/>
  79. </div>
  80. <div class="txt-group">
  81. <input type="checkbox" name="autoLogin" value="1" checked />
  82. <span class="check-box yes" onclick="checkAutoLogin(this)">下次自动登录</span>
  83. <a class="txt-r" href="{{route('password.request')}}" >忘记密码?</a>
  84. </div>
  85. <div >
  86. <input class="btn-group login-mobile" type="button" value="登录">
  87. </div>
  88. </form>
  89. </div>
  90. <div class="reg-link-box">
  91. 还没有账号?<a class="reg-txt register_user" url="{{route('register.person')}}" href="javascript:;" >立刻注册</a>
  92. </div>
  93. </div>
  94. {{--已登录--}}
  95. <div class="form-l" v-if="user_id > 0" style="padding:10px 10px 0;width:420px;">
  96. <h1 style="text-align:center;">请点击右边房源信息进行申报</h1>
  97. <el-card class="box-card" style="margin-top:20px;">
  98. <div slot="header" class="clearfix">
  99. <span style="font-size:18px">我的申报</span>
  100. </div>
  101. <div v-for="item in apply" class="text item" @click="toHouse(item.url)">
  102. <a href="javascript:void(0)" class="news_item">
  103. <span class="news_title">@{{item.house.name}}</span>
  104. </a>
  105. <span style="float:right;">
  106. <el-tag :type="item.status_tag" effect="dark" size="mini">
  107. @{{ item.status_text }}
  108. </el-tag>
  109. </span>
  110. </div>
  111. </el-card>
  112. </div>
  113. {{--右侧--}}
  114. <div class="form-r">
  115. <el-card class="box-card">
  116. <div slot="header" class="clearfix">
  117. <span style="font-size:18px">房源信息</span>
  118. <el-button style="float: right; padding: 3px 0" type="text" @click="location.href='{{route('buyhouse.house')}}'">更多</el-button>
  119. </div>
  120. <div v-for="item in house" class="text item" @click="toHouse(item.url)" style="height:25px;">
  121. <a href="javascript:void(0)" class="news_item">
  122. <span class="news_title">@{{item.name}}</span>
  123. <el-tag :type="item.status_tag" effect="dark" size="mini">
  124. @{{ item.status_text }}
  125. </el-tag>
  126. </a>
  127. <span style="float:right;">@{{ item.apply_time_start }} 至 @{{ item.apply_time_end }}</span>
  128. </div>
  129. </el-card>
  130. <el-card class="box-card" style="margin-top:20px;">
  131. <div slot="header" class="clearfix">
  132. <span style="font-size:18px">公告</span>
  133. <el-button style="float: right; padding: 3px 0" type="text" @click="location.href='{{route('buyhouse.news')}}'">更多</el-button>
  134. </div>
  135. <div v-for="item in news" class="text item" @click="toNews(item.url)">
  136. <a href="javascript:void(0)" class="news_item">
  137. <span>@{{ item.title }}</span>
  138. </a>
  139. <span style="float:right;">@{{ item.updated_at_text }}</span>
  140. </div>
  141. </el-card>
  142. </div>
  143. <div class="clear"></div>
  144. </div>
  145. </div>
  146. <img src="{{theme_asset('app/images/buyhouse/login_jucai.png')}}" class="jucai">
  147. </div>
  148. </div>
  149. @endsection
  150. @section('script')
  151. <script type="text/javascript" src="{{theme_asset('app/js/jquery.disappear.tooltip.js ')}}"></script>
  152. <script>
  153. $(function () {
  154. var is_need_geetest=0;//全局,是否使用极验.
  155. var login_type=1;//登录模式,1用户账号登录,2用户手机登录,3企业登录.
  156. var gt_call_back=function(captchaObj) {
  157. captchaObj.onReady(function () {
  158. //极验加载完成
  159. });
  160. captchaObj.onSuccess(function () {
  161. ajax_login(login_type,captchaObj);
  162. });
  163. captchaObj.onError(function () {
  164. show_error(login_type,"请先进行验证");
  165. });
  166. captchaObj.onClose(function () {
  167. show_error(login_type,"请先进行验证");
  168. });
  169. $('.login-account').on('click', function () {
  170. login_type=1;
  171. //clean_message();
  172. if (is_need_geetest==1){
  173. captchaObj.bindForm("#form_account");
  174. captchaObj.verify();
  175. }
  176. else{
  177. ajax_login(login_type,captchaObj);
  178. }
  179. });
  180. $('.login-mobile').on('click', function () {
  181. login_type=2;
  182. //clean_message();
  183. if (is_need_geetest==1){
  184. captchaObj.bindForm("#form_mobile");
  185. captchaObj.verify();
  186. }
  187. else{
  188. ajax_login(login_type,captchaObj);
  189. }
  190. });
  191. $('.login-company').on('click', function () {
  192. login_type=3;
  193. //clean_message();
  194. if (is_need_geetest==1){
  195. captchaObj.bindForm("#form_company");
  196. captchaObj.verify();
  197. }
  198. else{
  199. ajax_login(login_type,captchaObj);
  200. }
  201. });
  202. };
  203. gt_init(gt_call_back);//初始化极验
  204. $(".input-login").keydown(function(ev){
  205. ev = ev || window.event;
  206. var code = (ev.keyCode || ev.which);
  207. if (code == 10 || code == 13) {
  208. $(this).closest("form").find(".btn-group").click();
  209. }
  210. });
  211. $(".switch-title span").click(function () {
  212. var index = $(this).index();
  213. $(this).addClass("active").siblings("span").removeClass("active");
  214. $(".login-type").eq(index).show().siblings(".login-type").hide();
  215. });
  216. $('.btn-getcode').on('click', function () {
  217. submit_data={
  218. "mobile":$("input[name='mobile']").val(),
  219. "type":"login"
  220. };
  221. $.ajax({
  222. method: 'post',
  223. url: '{{route('sms.send')}}',
  224. data: submit_data,
  225. beforeSend:function () {
  226. // console.log('请求开始');
  227. $(".errinfo").text("");
  228. $(".errinfo").removeClass("errinfo");
  229. },
  230. complete:function() {
  231. console.log('请求结束');
  232. },
  233. success: function (data) {
  234. // console.log(data);
  235. $("#message_mobile").addClass("successinfo");
  236. $("#message_mobile").text("发送成功,请注意查收");
  237. settime();
  238. },
  239. error: function (errorData) {
  240. // console.log(errorData);
  241. if (errorData.status==422) {//验证错误
  242. $.each(errorData.responseJSON.errors,function (key,val) {
  243. $("#"+key).addClass("errinfo");
  244. $("#"+key).text(val[0]);
  245. });
  246. }
  247. else if(errorData.status==400) {//业务错误
  248. $("#message_mobile").addClass("errinfo");
  249. $("#message_mobile").text(errorData.responseJSON.message);
  250. }
  251. }
  252. });
  253. });
  254. $(".register_user").click(function(){
  255. var url=$(this).attr("url")
  256. $.getJSON("{{route('register.status')}}", function (result) {
  257. if (result.status == 0) {
  258. disapperTooltip('remind', result.msg);
  259. } else{
  260. location.href=url;
  261. }
  262. });
  263. })
  264. function ajax_login(type, captchaObj) {
  265. if (type==1) {
  266. $.ajax({
  267. method: 'post',
  268. url: $("#form_account").attr('action'),
  269. data: $("#form_account").serialize(),
  270. beforeSend:function () {
  271. //console.log('请求开始');
  272. clean_message();
  273. $('.login-account').addClass("btn-disabled").prop('disabled', true);
  274. $('.login-account').val("登录中...");
  275. },
  276. complete:function() {
  277. //console.log('请求结束');
  278. $('.login-account').val("登录");
  279. $('.login-account').removeClass("btn-disabled").prop('disabled', false);
  280. },
  281. success: function (data) {
  282. //console.log(data);
  283. $("#message_account").addClass("successinfo");
  284. $("#message_account").text("登录成功, 正在跳转...");
  285. location.reload();
  286. },
  287. error: function (errorData) {
  288. if (is_need_geetest==1){
  289. captchaObj.reset();
  290. }
  291. if (errorData.status==422) {//验证错误
  292. $.each(errorData.responseJSON.errors,function (key,val) {
  293. $("#"+key).addClass("errinfo");
  294. $("#"+key).text(val[0]);
  295. });
  296. }
  297. else if(errorData.status==400) {//业务错误
  298. $("#message_account").addClass("errinfo");
  299. $("#message_account").text(errorData.responseJSON.message);
  300. is_need_geetest=errorData.responseJSON.errors.is_need_geetest;
  301. }
  302. }
  303. });
  304. }
  305. else if (type==2) {
  306. $.ajax({
  307. method: 'post',
  308. url: $("#form_mobile").attr('action'),
  309. data: $("#form_mobile").serialize(),
  310. beforeSend:function () {
  311. //console.log('请求开始');
  312. clean_message();
  313. $('.login-mobile').addClass("btn-disabled").prop('disabled', true);
  314. $('.login-mobile').val("登录中...");
  315. },
  316. complete:function() {
  317. //console.log('请求结束');
  318. $('.login-mobile').val("登录");
  319. $('.login-mobile').removeClass("btn-disabled").prop('disabled', false);
  320. },
  321. success: function (data) {
  322. //console.log(data);
  323. $("#message_mobile").addClass("successinfo");
  324. $("#message_mobile").text("登录成功, 正在跳转...");
  325. location.reload();
  326. },
  327. error: function (errorData) {
  328. //console.log(errorData);
  329. if (is_need_geetest==1){
  330. captchaObj.reset();
  331. }
  332. if (errorData.status==422) {//验证错误
  333. $.each(errorData.responseJSON.errors,function (key,val) {
  334. $("#"+key).addClass("errinfo");
  335. $("#"+key).text(val[0]);
  336. });
  337. }
  338. else if(errorData.status==400) {//业务错误
  339. $("#message_mobile").addClass("errinfo");
  340. $("#message_mobile").text(errorData.responseJSON.message);
  341. is_need_geetest=errorData.responseJSON.errors.is_need_geetest;
  342. }
  343. }
  344. });
  345. }
  346. else if (type==3){
  347. $.ajax({
  348. method: 'post',
  349. url: $("#form_company").attr('action'),
  350. data: $("#form_company").serialize(),
  351. beforeSend:function () {
  352. //console.log('请求开始');
  353. clean_message();
  354. $('.login-company').addClass("btn-disabled").prop('disabled', true);
  355. $('.login-company').val("登录中...");
  356. },
  357. complete:function() {
  358. //console.log('请求结束');
  359. $('.login-company').val("登录");
  360. $('.login-company').removeClass("btn-disabled").prop('disabled', false);
  361. },
  362. success: function (data) {
  363. //console.log(data);
  364. $("#message_company").addClass("successinfo");
  365. $("#message_company").text("登录成功, 正在跳转...");
  366. location.reload();
  367. },
  368. error: function (errorData) {
  369. //console.log(errorData);
  370. if (is_need_geetest==1){
  371. captchaObj.reset();
  372. }
  373. if (errorData.status==422) {//验证错误
  374. $.each(errorData.responseJSON.errors,function (key,val) {
  375. $("#"+key).addClass("errinfo");
  376. $("#"+key).text(val[0]);
  377. });
  378. }
  379. else if(errorData.status==400) {//业务错误
  380. $("#message_company").addClass("errinfo");
  381. $("#message_company").text(errorData.responseJSON.message);
  382. is_need_geetest=errorData.responseJSON.errors.is_need_geetest;
  383. }
  384. }
  385. });
  386. }
  387. };
  388. function show_error(type,message) {
  389. if (type==1) {
  390. $("#message_account").addClass("errinfo");
  391. $("#message_account").text(message);
  392. }
  393. else if (type==2) {
  394. $("#message_mobile").addClass("errinfo");
  395. $("#message_mobile").text(message);
  396. }
  397. else if (type==3){
  398. $("#message_company").addClass("errinfo");
  399. $("#message_company").text(message);
  400. }
  401. };
  402. function clean_message() {
  403. $(".errinfo").text("");
  404. $(".errinfo").removeClass("errinfo");
  405. $(".successinfo").text("");
  406. $(".successinfo").removeClass("successinfo");
  407. }
  408. });
  409. function checkAutoLogin(obj) {
  410. var isCheck = $(obj).hasClass("yes");
  411. if (isCheck) {
  412. $(obj).removeClass("yes");
  413. $(obj).closest(".txt-group").find("input[name=autoLogin]").prop("checked", false);
  414. } else {
  415. $(obj).addClass("yes");
  416. $(obj).closest(".txt-group").find("input[name=autoLogin]").prop("checked", true);
  417. }
  418. }
  419. // 倒计时
  420. var countdown = 60;
  421. function settime() {
  422. if (countdown == 0) {
  423. $('.btn-getcode').prop("disabled", false);
  424. $('.btn-getcode').removeClass('btn-disabled');
  425. $('.btn-getcode').val('获取验证码');
  426. countdown = 60;
  427. return;
  428. } else {
  429. $('.btn-getcode').prop("disabled", true);
  430. $('.btn-getcode').addClass('btn-disabled');
  431. $('.btn-getcode').val('重新发送' + countdown + '秒');
  432. countdown--;
  433. }
  434. setTimeout(function() {
  435. settime()
  436. },1000)
  437. }
  438. </script>
  439. <script type="text/javascript" src="{{theme_asset('app/js/vue.min.js')}}"></script>
  440. <script src="{{theme_asset('app/js/axios.js')}}"></script>
  441. <script type="text/javascript" src="{{theme_asset('app/js/elementui.min.js')}}"></script>
  442. <script>
  443. new Vue({
  444. el: '#app',
  445. data() {
  446. return {
  447. user_id: {{$user_id}},
  448. house: {!! $house !!},
  449. news: {!!$news!!},
  450. apply: {!! $apply !!}
  451. }
  452. },
  453. methods: {
  454. toHouse(url) {
  455. if (this.user_id == 0) {
  456. this.$message({
  457. type: 'info',
  458. message: `请先登录`
  459. });
  460. return false;
  461. }
  462. location.href = url;
  463. },
  464. toNews(url) {
  465. console.log(url);
  466. location.href = url;
  467. },
  468. }
  469. })
  470. </script>
  471. @endsection