Переглянути джерело

人才购房系统和人才疗休养

linwu 3 роки тому
батько
коміт
3108ce1c68

+ 32 - 0
app/Admin/Controllers/Content/BuyHouseController.php

@@ -10,6 +10,7 @@ use Encore\Admin\Controllers\HasResourceActions;
 use Encore\Admin\Form;
 use Encore\Admin\Grid;
 use Encore\Admin\Layout\Content;
+use Illuminate\Http\Request;
 
 class BuyHouseController extends Controller
 {
@@ -107,6 +108,9 @@ class BuyHouseController extends Controller
         $grid->actions(function ($actions) {
             $actions->disableEdit(false);
             $actions->disableDelete(false);
+            if ($actions->row['is_sock'] == 1) {
+                $actions->append("&nbsp;<button class='btn btn-primary btn-xs sock' data-id=" . $actions->row['id'] . ">释放名额</button>");
+            }
         });
 
         $grid->filter(function ($filter) {
@@ -134,6 +138,7 @@ class BuyHouseController extends Controller
         $form->datetime('declare_time', '申报时间')->rules('required', ['required' => '申报时间不能为空。'])->setWidth(4)->setMustMark();
         $form->datetime('apply_time_start', '报名开始时间')->rules('required', ['required' => '报名开始时间不能为空。'])->setWidth(4)->setMustMark();
         $form->datetime('apply_time_end', '报名结束时间')->rules('required', ['required' => '报名结束时间不能为空。'])->setWidth(4)->setMustMark();
+        $form->datetime('supply_time', '补件截止时间')->rules('required', ['required' => '补件截止时间不能为空。'])->setWidth(4)->setMustMark();
         $form->text('address', '地址')->rules('required|max:100', ['required' => '地址不能为空。', 'max' => '地址长度不能大于100。'])->setWidth(8)->setMustMark();
         $form->radio('status', '状态')->rules('required', ['required' => '请选择状态。'])->options([1 => '未开始', 2 => '申报中', 3 => '已结束'])->setWidth(8)->setMustMark();
         $form->image('small_img', '缩略图')->uniqueName()->rules('image|mimes:jpeg,bmp,png', ['image' => '缩略图请选择图片文件。', 'mimes' => '请选择jpeg,bmp,png格式的缩略图上传。'])->setWidth(4);
@@ -165,6 +170,7 @@ class BuyHouseController extends Controller
         $form->datetime('declare_time', '申报时间')->rules('required', ['required' => '申报时间不能为空。'])->setWidth(4)->setMustMark();
         $form->datetime('apply_time_start', '报名开始时间')->rules('required', ['required' => '报名开始时间不能为空。'])->setWidth(4)->setMustMark();
         $form->datetime('apply_time_end', '报名结束时间')->rules('required', ['required' => '报名结束时间不能为空。'])->setWidth(4)->setMustMark();
+        $form->datetime('supply_time', '补件截止时间')->rules('required', ['required' => '补件截止时间不能为空。'])->setWidth(4)->setMustMark();
         $form->text('address', '地址')->rules('required|max:100', ['required' => '地址不能为空。', 'max' => '地址长度不能大于100。'])->setWidth(8)->setMustMark();
         $form->radio('status', '状态')->rules('required', ['required' => '请选择状态。'])->options([1 => '未开始', 2 => '申报中', 3 => '已结束'])->setWidth(8)->setMustMark();
         $form->image('small_img', '缩略图')->uniqueName()->rules('image|mimes:jpeg,bmp,png', ['image' => '缩略图请选择图片文件。', 'mimes' => '请选择jpeg,bmp,png格式的缩略图上传。'])->setWidth(4);
@@ -223,4 +229,30 @@ class BuyHouseController extends Controller
         }
         return response()->json($data);
     }
+
+    /**
+     * 释放名额
+     */
+    public function sock(Request $request)
+    {
+        $id = $request->id;
+
+        if (empty($id)) {
+            return response()->json(['code' => 0, 'content' => '数据异常']);
+        }
+
+        $house = TalentHouse::find($id);
+        if (strtotime($house['supply_time']) > time()) {
+            return response()->json(['code' => 0, 'content' => '报名还未结束']);
+        }
+        if ($house['is_sock'] == 2) {
+            return response()->json(['code' => 1]);
+        }
+
+        //释放名额
+        TalentHouse::where('id', $id)->update(['is_sock' => 2]);
+        TalentHouseApply::where('house_id', $id)->update(['is_sock' => 2]);
+
+        return response()->json(['code' => 1]);
+    }
 }

+ 203 - 0
app/Admin/Controllers/Content/BuyHouseJcController.php

@@ -0,0 +1,203 @@
+<?php
+
+namespace App\Admin\Controllers\Content;
+
+use App\Http\Controllers\Controller;
+use App\Models\TalentHouse;
+use App\Models\TalentHouseApply;
+use Encore\Admin\Controllers\HasResourceActions;
+use Encore\Admin\Grid;
+use Encore\Admin\Layout\Content;
+use Illuminate\Http\Request;
+
+class BuyHouseJcController extends Controller
+{
+    use HasResourceActions;
+
+    private $status = ['未知', '待审核', '审核通过', '审核不通过'];
+    private $marry = ['未知', '未婚', '已婚', '离异', '丧偶'];
+
+    /**
+     * Index interface.
+     *
+     * @param Content $content
+     * @return Content
+     */
+    public function index(Content $content)
+    {
+        return $content
+            ->header('申报列表')
+            ->description(' ')
+            ->body(view('admin.content.buy_house_jc')->with(['grid' => $this->grid()]));
+    }
+
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        $grid = new Grid(new TalentHouseApply());
+
+        $grid->model()->with('house')->where('type',2)->where('is_back',2)->where('is_draft',2)->orderBy('rs_check_status', 'ASC');
+
+        $status_text = $this->status;
+        $grid->id('ID');
+        $grid->name('姓名');
+        $grid->mobile('联系电话');
+        $grid->talent_level('人才层次');
+        $grid->column('房源')->display(function () {
+            return $this->house->name;
+        });
+        $grid->rs_check_status('状态')->display(function () use ($status_text) {
+            return $status_text[$this->rs_check_status];
+        });
+        $grid->rs_check_comment('备注');
+
+        $grid->actions(function ($actions) {
+            if ($actions->row['rs_check_status'] == 1) {
+                $actions->append("<button class='btn btn-primary btn-xs applyaudit' data-code=" . $actions->row['id'] . ">审核</button>");
+            }
+            $actions->append("&nbsp;<button class='btn btn-primary btn-xs detail' id=" . $actions->row['id'] . ">详情</button>");
+        });
+
+        $grid->filter(function ($filter) {
+            $filter->disableIdFilter();
+            $filter->equal('house_id', '房源')->select(TalentHouse::all()->pluck('name', 'id'));
+            $status_option = ['全部', '待审核', '审核通过', '审核不通过'];
+            $filter->where(function ($query) {
+                if ($this->input > 0) {
+                    $query->where('status', '=', $this->input);
+                }
+            }, '状态', 'status')->radio($status_option);
+        });
+        return $grid;
+    }
+
+    /**
+     * 审核
+     */
+    public function audit(Request $request)
+    {
+        $id     = $request->id;
+        $status = $request->status;
+        $reason = $request->reason;
+        $url    = empty($request->url) ? admin_base_path('content/buy_house_jc') : $request->url;
+        if (empty($id)) {
+            admin_toastr('数据异常', 'error');
+            return redirect(admin_base_path('content/buy_house_jc'));
+        }
+        $result = TalentHouseApply::where('id', '=', $id)
+            ->update([
+                'rs_check_status'  => $status,
+                'rs_check_comment' => $reason,
+                'rs_check_time'    => date('Y-m-d H:i:s'),
+                'status'           => $status == 2 ? 1 : 3,
+            ]);
+        if ($result) {
+            admin_toastr('审核成功', 'success');
+        } else {
+            admin_toastr('该信息不存在或已审核', 'error');
+        }
+
+        return redirect($url);
+    }
+
+    /**
+     * 详情
+     */
+    public function detail(Request $request)
+    {
+        $id   = $request->id;
+        $info = TalentHouseApply::find($id);;
+        $info->family     = json_decode($info->family);
+        $info->marry_text = $this->marry[$info->marry];
+
+        //layer相册层
+        $photos = [
+            'certificates'       => [],
+            'marry_prove'        => [],
+            'household_register' => [],
+            'work_prove'         => [],
+        ];
+        if (!empty(json_decode($info->certificates))) {
+            $info->certificates = json_decode($info->certificates);
+            $photo_data         = [];
+            foreach ($info->certificates as $k => $v) {
+                $photo_data[] = [
+                    'alt' => $v->name,
+                    'pid' => $v->uid,
+                    'src' => $v->response->path,
+                ];
+            }
+            $photos['certificates'] = [
+                'title' => '证件信息',
+                'id'    => 1,
+                'start' => 0,
+                'data'  => $photo_data,
+            ];
+        } else {
+            $info->certificates = [];
+        }
+        if (!empty(json_decode($info->marry_prove))) {
+            $info->marry_prove = json_decode($info->marry_prove);
+            $photo_data        = [];
+            foreach ($info->marry_prove as $k => $v) {
+                $photo_data[] = [
+                    'alt' => $v->name,
+                    'pid' => $v->uid,
+                    'src' => $v->response->path,
+                ];
+            }
+            $photos['marry_prove'] = [
+                'title' => '婚姻证明',
+                'id'    => 1,
+                'start' => 0,
+                'data'  => $photo_data,
+            ];
+        } else {
+            $info->marry_prove = [];
+        }
+        if (!empty(json_decode($info->household_register))) {
+            $info->household_register = json_decode($info->household_register);
+            $photo_data               = [];
+            foreach ($info->household_register as $k => $v) {
+                $photo_data[] = [
+                    'alt' => $v->name,
+                    'pid' => $v->uid,
+                    'src' => $v->response->path,
+                ];
+            }
+            $photos['household_register'] = [
+                'title' => '户口本',
+                'id'    => 1,
+                'start' => 0,
+                'data'  => $photo_data,
+            ];
+        } else {
+            $info->household_register = [];
+        }
+        if (!empty(json_decode($info->work_prove))) {
+            $info->work_prove = json_decode($info->work_prove);
+            $photo_data       = [];
+            foreach ($info->work_prove as $k => $v) {
+                $photo_data[] = [
+                    'alt' => $v->name,
+                    'pid' => $v->uid,
+                    'src' => $v->response->path,
+                ];
+            }
+            $photos['work_prove'] = [
+                'title' => '在职证明',
+                'id'    => 1,
+                'start' => 0,
+                'data'  => $photo_data,
+            ];
+        } else {
+            $info->work_prove = [];
+        }
+        $html = view('admin.ajax.buy_house_detail')->with(['info' => $info, 'photos' => $photos])->render();
+        return response()->json(['code' => 1, 'data' => $html]);
+    }
+}

+ 3 - 3
app/Admin/Controllers/Content/BuyHouseRsController.php

@@ -40,7 +40,7 @@ class BuyHouseRsController extends Controller
     {
         $grid = new Grid(new TalentHouseApply());
 
-        $grid->model()->with('house')->where('is_draft',2)->orderBy('rs_check_status', 'ASC');
+        $grid->model()->with('house')->where('type',1)->where('is_back',2)->where('is_draft',2)->orderBy('rs_check_status', 'ASC');
 
         $status_text = $this->status;
         $grid->id('ID');
@@ -83,10 +83,10 @@ class BuyHouseRsController extends Controller
         $id     = $request->id;
         $status = $request->status;
         $reason = $request->reason;
-        $url    = empty($request->url) ? '/ST3IXxKlOa4eGEv0eTw0CfORI9444Mgj/content/buy_house_rs' : $request->url;
+        $url    = empty($request->url) ? admin_base_path('content/buy_house_rs') : $request->url;
         if (empty($id)) {
             admin_toastr('数据异常', 'error');
-            return redirect('/ST3IXxKlOa4eGEv0eTw0CfORI9444Mgj/content/buy_house_rs');
+            return redirect(admin_base_path('content/buy_house_rs'));
         }
         $result = TalentHouseApply::where('id', '=', $id)
             ->update([

+ 1 - 1
app/Admin/Controllers/Content/BuyHouseZjController.php

@@ -40,7 +40,7 @@ class BuyHouseZjController extends Controller
     {
         $grid = new Grid(new TalentHouseApply());
 
-        $grid->model()->with('house')->where('rs_check_status',2)->orderBy('zj_check_status', 'ASC');
+        $grid->model()->with('house')->where('is_back',2)->where('rs_check_status',2)->orderBy('zj_check_status', 'ASC');
 
         $status_text = $this->status;
         $grid->id('ID');

+ 4 - 0
app/Admin/routes.php

@@ -322,12 +322,16 @@ Route::group([
 
         //人才购房
         $router->resource('buy_house', BuyHouseController::class)->names('content.buy_house');
+        $router->any('buy_house/sock', 'BuyHouseController@sock')->name('content.buy_house.sock');
         $router->get('buy_house_rs', 'BuyHouseRsController@index')->name('content.buy_house_rs');
         $router->get('buy_house_rs/detail', 'BuyHouseRsController@detail')->name('content.buy_house_rs.detail');
         $router->post('buy_house_rs/audit', 'BuyHouseRsController@audit')->name('content.buy_house_rs.audit');
         $router->get('buy_house_zj', 'BuyHouseZjController@index')->name('content.buy_house_zj');
         $router->get('buy_house_zj/detail', 'BuyHouseZjController@detail')->name('content.buy_house_zj.detail');
         $router->post('buy_house_zj/audit', 'BuyHouseZjController@audit')->name('content.buy_house_zj.audit');
+        $router->get('buy_house_jc', 'BuyHouseJcController@index')->name('content.buy_house_jc');
+        $router->get('buy_house_jc/detail', 'BuyHouseJcController@detail')->name('content.buy_house_jc.detail');
+        $router->post('buy_house_jc/audit', 'BuyHouseJcController@audit')->name('content.buy_house_jc.audit');
         $router->resource('buy_house_news', BuyHouseNewsController::class)->names('content.buy_house_news');
     });
 

+ 2 - 2
app/Http/Controllers/Web/Auth/RegisterController.php

@@ -121,7 +121,7 @@ class RegisterController extends WebBaseController
 
     public function registerPersonPost(RegisterValidatorRequest $registerValidatorRequest)
     {
-        /*if (!$this->geetestService->checkGeetest()) {
+        if (!$this->geetestService->checkGeetest()) {
             return $this->sendErrorResponse("验证码不通过,请重新验证");
         }
 
@@ -129,7 +129,7 @@ class RegisterController extends WebBaseController
             if (!$this->smsService->checkAuthSms($registerValidatorRequest->mobile, Smser::TEMPLATE_AUTH_REGISTER, $registerValidatorRequest->mobile_vcode)) {
                 return $this->sendErrorResponse("短信验证码不通过,请重新输入");
             }
-        }*/
+        }
         $member = $this->registerService->registerPerson($registerValidatorRequest->all());
         $this->authService->login($member);
         if ($registerValidatorRequest->reg_type == 1) {

+ 124 - 13
app/Http/Controllers/Web/Content/BuyhouseController.php

@@ -8,6 +8,7 @@ use App\Models\MemberInfo;
 use App\Models\Resume;
 use App\Models\TalentHouse;
 use App\Models\TalentHouseApply;
+use App\Models\TalentHousePeople;
 use App\Services\Content\ArticleService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
@@ -48,10 +49,11 @@ class BuyhouseController extends WebBaseController
         //房源
         $house = TalentHouse::orderBy('updated_at', 'desc')->orderByRaw(DB::raw("FIELD(status,2,1,3)"))->limit(8)->get();
         foreach ($house as $v) {
-            $v['declare_time_text'] = date('Y-m-d', strtotime($v['declare_time']));
-            $v['status_text']       = $this->house_status[$v['status']];
-            $v['status_tag']        = $this->tag_status[$v['status']];
-            $v['url']               = route('buyhouse.list', ['id' => $v['id']]);
+            $v['apply_time_start'] = date('Y-m-d', strtotime($v['apply_time_start']));
+            $v['apply_time_end']   = date('Y-m-d', strtotime($v['apply_time_end']));
+            $v['status_text']      = $this->house_status[$v['status']];
+            $v['status_tag']       = $this->tag_status[$v['status']];
+            $v['url']              = route('buyhouse.list', ['id' => $v['id']]);
         }
         $return_data['house'] = $house;
 
@@ -68,6 +70,7 @@ class BuyhouseController extends WebBaseController
             $apply = TalentHouseApply::with('house')
                 ->select(['id', 'house_id', 'status'])
                 ->where('is_draft', 2)
+                ->where('is_back', 2)
                 ->where('user_id', $user_id)
                 ->get();
             foreach ($apply as $v) {
@@ -88,8 +91,10 @@ class BuyhouseController extends WebBaseController
     {
         $lists = TalentHouse::orderByRaw(DB::raw("FIELD(status,2,1,3)"))->paginate(10);
         foreach ($lists as $v) {
-            $v['status_text'] = $this->house_status[$v['status']];
-            $v['status_tag']  = $this->tag_status[$v['status']];
+            $v['apply_time_start'] = date('Y-m-d', strtotime($v['apply_time_start']));
+            $v['apply_time_end']   = date('Y-m-d', strtotime($v['apply_time_end']));
+            $v['status_text']      = $this->house_status[$v['status']];
+            $v['status_tag']       = $this->tag_status[$v['status']];
         }
 
         $return_data = [
@@ -114,6 +119,33 @@ class BuyhouseController extends WebBaseController
         return view('app.content.buyhouse.news', $return_data);
     }
 
+    public function detail(Request $request)
+    {
+        $id = $request->get('id');
+        if (empty($id)) {
+            $back_url = \Illuminate\Support\Facades\URL::previous();
+            return $this->showMessage('该房源不存在或已删除', $back_url, true, '上一页', '3');
+        }
+
+        //房源信息
+        $house = TalentHouse::where('id', $id)->first();
+        if (empty($house)) {
+            $back_url = \Illuminate\Support\Facades\URL::previous();
+            return $this->showMessage('该房源不存在或已删除', $back_url, true, '上一页', '3');
+        }
+
+        $house['status_text'] = $this->house_status[$house['status']];
+        $house['status_tag']  = $this->tag_status[$house['status']];
+        $house['url']         = route('buyhouse.list', ['id' => $house['id']]);
+        $house['apply_time']  = date('Y-m-d', strtotime($house['apply_time_start'])) . ' - ' . date('Y-m-d', strtotime($house['apply_time_end']));
+
+        $return_data = [
+            'info' => $house,
+        ];
+
+        return view('app.content.buyhouse.detail', $return_data);
+    }
+
     /**
      * 报名列表
      */
@@ -131,6 +163,13 @@ class BuyhouseController extends WebBaseController
             return $this->showMessage('该房源不存在或已删除', $back_url, true, '上一页', '3');
         }
 
+        //是否报名其他
+        $sock = TalentHouseApply::where('user_id', $user_id)->where('house_id', '<>', $id)->where('is_sock', 1)->where('is_draft', 2)->first();
+        if (!empty($sock)) {
+            $back_url = \Illuminate\Support\Facades\URL::previous();
+            return $this->showMessage('不可以同时申报多个房源', $back_url, true, '上一页', '3');
+        }
+
         //房源信息
         $house = TalentHouse::where('id', $id)->first();
         if (empty($house)) {
@@ -143,8 +182,9 @@ class BuyhouseController extends WebBaseController
         $house['apply_time']        = date('Y-m-d', strtotime($house['apply_time_start'])) . ' - ' . date('Y-m-d', strtotime($house['apply_time_end']));
 
         //报名信息
-        $apply = TalentHouseApply::where('house_id', $id)->where('user_id', $user_id)->first();
+        $apply = TalentHouseApply::where('house_id', $id)->where('is_back', 2)->where('user_id', $user_id)->first();
         $check = [];
+        $time  = time();
         if ($apply) {
             if ($house['status'] != 2 && $apply['is_draft'] == 1) {
                 $back_url = \Illuminate\Support\Facades\URL::previous();
@@ -173,7 +213,6 @@ class BuyhouseController extends WebBaseController
                 return $this->showMessage('该房源未在申报时间', $back_url, true, '上一页', '3');
             }
 
-            $time   = time();
             $resume = Resume::where('uid', $user_id)->where('def', 1)->first();
             if (empty($resume)) {
                 $back_url = route('person.resume');
@@ -200,6 +239,10 @@ class BuyhouseController extends WebBaseController
                 $back_url = \Illuminate\Support\Facades\URL::previous();
                 return $this->showMessage('目前仅支持一到五层次人才申报', $back_url, true, '上一页', '3');
             }
+            if ($talent['type'] > 2) {
+                $back_url = \Illuminate\Support\Facades\URL::previous();
+                return $this->showMessage('其他人才暂不支持', $back_url, true, '上一页', '3');
+            }
             $add   = [
                 'user_id'              => $user_id,
                 'house_id'             => $id,
@@ -222,6 +265,12 @@ class BuyhouseController extends WebBaseController
             ];
             $id    = TalentHouseApply::insertGetId($add);
             $apply = TalentHouseApply::find($id);
+
+            //报名人员列表
+            $people = TalentHousePeople::where('user_id',$user_id)->first();
+            if (empty($people)) {
+                TalentHousePeople::create(['user_id'=>$user_id]);
+            }
         }
 
         $apply['family']             = json_decode($apply['family'], true);
@@ -233,13 +282,18 @@ class BuyhouseController extends WebBaseController
 
         //是否可填表格
         $formDisable = 'true';
-        if ($house['status'] == 2) {
-            if ($apply['is_draft'] == 1) {
+        if ($apply['is_draft'] == 1) {
+            //草稿
+            $formDisable = 'false';
+        } else {
+            if ($time < $house['apply_time_end'] && $apply['status'] != 2) {
                 $formDisable = 'false';
+            } else {
+                if ($time < $house['supply_time'] && ($apply['rs_check_status'] == 3 || $apply['zj_check_status'] == 3)) {
+                    $formDisable = 'false';
+                }
             }
-        }
-        if ($apply['rs_check_status'] == 3 || $apply['zj_check_status'] == 3) {
-            $formDisable = 'false';
+
         }
 
         $return_data = [
@@ -253,6 +307,9 @@ class BuyhouseController extends WebBaseController
         return view('app.content.buyhouse.list', $return_data);
     }
 
+    /**
+     * 申报提交
+     */
     public function listPost(Request $request)
     {
         //数据校验
@@ -328,11 +385,46 @@ class BuyhouseController extends WebBaseController
         if ($info->is_draft == 1) {
             $info->is_draft = 2;
         }
+        if ($info->is_sock == 2) {
+            $info->is_sock = 1;
+        }
         $info->save();
 
         return response()->json(['status' => 1]);
     }
 
+    /**
+     * 撤消
+     */
+    public function back(Request $request)
+    {
+        $id = $request->get('id');
+        if (empty($id)) {
+            return response()->json(['status' => 1]);
+        }
+
+        $apply = TalentHouseApply::find($id);
+        if (empty($apply) || $apply['user_id'] != auth('web-member')->id() || $apply['is_back'] == 1) {
+            return response()->json(['status' => 1]);
+        }
+        if ($apply['status'] == 2) {
+            return response()->json(['status' => 0, 'msg' => '已通过审核的申报无法撤消']);
+        }
+
+        $house = TalentHouse::find($apply['house_id']);
+        if (strtotime($house['apply_time_end']) > time()) {
+            return response()->json(['status' => 0, 'msg' => '报名结束的申报无法撤消']);
+        }
+
+        $apply->is_back = 1;
+        $apply->is_sock = 2;
+        $apply->save();
+        return response()->json(['status' => 1]);
+    }
+
+    /**
+     * 图片上传
+     */
     public function upload(Request $request)
     {
         header('Access-Control-Allow-Origin:*');
@@ -372,6 +464,25 @@ class BuyhouseController extends WebBaseController
         return response()->json($res);
     }
 
+    /**
+     * 清除名额锁定
+     */
+    public function clearSock()
+    {
+        $list = TalentHouse::where('is_end',2)->where('supply_time','>=',date('Y-m-d H:i:s'))->get();
+        if ($list->isEmpty()) {
+            return false;
+        }
+
+        foreach ($list as $v) {
+            TalentHouseApply::where('house_id',$v['id'])->where('status','<>',2)->update(['is_sock'=>2]);
+            $v->is_end = 1;
+            $v->save();
+        }
+
+        return true;
+    }
+
     /**
      * 登录状态
      */

+ 15 - 0
app/Models/TalentHousePeople.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class TalentHousePeople extends Model
+{
+    protected $table = 'talent_house_people';
+
+    public function memberInfo()
+    {
+        return $this->hasOne(MemberInfo::class,'uid','user_id');
+    }
+}

+ 94 - 0
public/themes/default/views/app/content/buyhouse/detail.blade.php

@@ -0,0 +1,94 @@
+@extends('module.layouts.content')
+
+@push('meta')
+
+@endpush
+
+@push('css')
+    <link href="{{ theme_asset('app/css/common.css') }}" rel="stylesheet">
+    <link rel="stylesheet" type="text/css" href="{{ theme_asset('app/css/article/article.css') }}"/>
+    <link rel="stylesheet" type="text/css" href="{{theme_asset('app/css/elementui.min.css')}}">
+    <style>
+        .recruit_button{
+            display: inline-block;
+            line-height: 1;
+            white-space: nowrap;
+            cursor: pointer;
+            -webkit-appearance: none;
+            text-align: center;
+            box-sizing: border-box;
+            outline: none;
+            margin: 10px auto;
+            transition: .1s;
+            font-weight: 500;
+            -moz-user-select: none;
+            -webkit-user-select: none;
+            -ms-user-select: none;
+            padding: 12px 20px;
+            font-size: 14px;
+            border-radius: 4px;
+            color: #fff;
+            background-color: #409eff;
+            border-color: #409eff;
+        }
+    </style>
+@endpush
+
+@push('js')
+
+@endpush
+
+{{--@include('module.section.header_min')--}}
+{{--@include('module.section.content_header')--}}
+@section('content')
+    <div id="app">
+        <div class="newsshow">
+            <div class="l">
+                <div class="main">
+                    <div class="ntitle">{{$info->name}}</div>
+                    <div class="time">
+                        <span>报名时间:{{$info->apply_time_start}} 至 {{$info->apply_time_end}}</span>
+                        <span>补建截止时间:{{$info->supply_time}}</span>
+                    </div>
+                    <div class="time">
+                        <el-tag :type="info.status_tag" effect="dark" size="mini">
+                            @{{ info.status_text }}
+                        </el-tag>
+                        <span>地址:{{$info->address}}</span>
+                    </div>
+                    <div class="txt">
+                        {!! $info->content !!}
+                    </div>
+                </div>
+            </div>
+
+            <div class="r">
+                <div class="listbox">
+                    <div class="ntit"><div class="tlh">报名入口</div></div>
+                    <div style="text-align:center;">
+                        <a href="{{$info->url}}"><button class="recruit_button">点击报名</button></a>
+                    </div>
+                </div>
+            </div>
+            <div class="clear"></div>
+        </div>
+    </div>
+@endsection
+
+@section('script')
+    <script type="text/javascript" src="{{theme_asset('app/js/vue.min.js')}}"></script>
+    <script src="{{theme_asset('app/js/axios.js')}}"></script>
+    <script type="text/javascript" src="{{theme_asset('app/js/elementui.min.js')}}"></script>
+    <script>
+
+        new Vue({
+            el: '#app',
+            data() {
+                return {
+                    info: {!! $info !!}
+                };
+            },
+            methods: {},
+        })
+    </script>
+@endsection

+ 1 - 1
public/themes/default/views/app/content/buyhouse/house.blade.php

@@ -49,7 +49,7 @@
                             </div>
                             <div class="time substring">
                                 <span class="tag">{{$v->status_text}}</span>
-                                <span class="time1">{{date('Y-m-d',strtotime($v->declare_time))}}</span>
+                                <span class="time1">{{$v->apply_time_start}} 至 {{$v->apply_time_end}}</span>
                             </div>
                             <div class="clear"></div>
                             <div class="summary">{!!  $v->describe !!}</div>

+ 29 - 1
public/themes/default/views/app/content/buyhouse/list.blade.php

@@ -510,7 +510,7 @@
                         <td height="52" colspan="12" style="padding: 10px 0">
                             <p>
                                 <el-form-item prop="checked">
-                                    本人承诺<a href="" style="color: blue;">《承诺书》</a>:
+                                    本人承诺<a href="javascript:void(0);" @click="promise" style="color: blue;">《承诺书》</a>:
                                     <el-checkbox v-model="user.checked"></el-checkbox>
                                 </el-form-item>
                             </p>
@@ -523,6 +523,7 @@
             </el-form>
         </div>
         <div style="text-align:center;padding-top:20px;">
+            <el-button type="danger" @click="back">撤消</el-button>
             <el-button type="info" @click="location.href = '{{route("buyhouse.login")}}'">返回</el-button>
         </div>
         <el-dialog :visible.sync="imageDialogVisible">
@@ -584,6 +585,33 @@
                 };
             },
             methods: {
+                //承诺书
+                promise() {
+                    this.$alert("<div style='color:#5A171A;'><p>1.本次申报的信息均真实有效,如有不实,本人愿意承担由此产生的全部责任。</p><p>2.同意审核部门按规定调查核实本人家庭住房和其他相关情况。</p></div>", '本人郑重承诺', {
+                        confirmButtonText: '确定',
+                        dangerouslyUseHTMLString: true,
+                    });
+                },
+                //撤消
+                back() {
+                    this.$confirm('此操作将永久撤消该申请, 是否继续?', '提示', {
+                        confirmButtonText: '确定',
+                        cancelButtonText: '取消',
+                        type: 'warning'
+                    }).then(() => {
+                        axios.get("{{route('buyhouse.back')}}?id="+this.user.id).then(response => {
+                            console.log(response.data);
+                            /*if(response.data.status){
+                                location.href = "{{route('buyhouse.login')}}";
+                            }else{
+                                this.$message.error(response.data.msg);
+                                this.loading.close();
+                                return false;
+                            }*/
+                        });
+                    });
+                },
+
                 //上传相关
                 beforeImageUpload(file) {
                     const isJPG = (file.type === 'image/jpeg' || file.type === 'image/png');

+ 1 - 1
public/themes/default/views/app/content/buyhouse/login.blade.php

@@ -133,7 +133,7 @@
                                     @{{ item.status_text }}
                                 </el-tag>
                             </a>
-                            <span style="float:right;">@{{ item.declare_time_text }}</span>
+                            <span style="float:right;">@{{ item.apply_time_start }} 至 @{{ item.apply_time_end }}</span>
                         </div>
                     </el-card>
                     <el-card class="box-card" style="margin-top:20px;">

+ 43 - 0
resources/views/admin/content/buy_house.blade.php

@@ -3,6 +3,25 @@
     p#vtip { display: none; position: absolute; padding: 10px; left: 5px; font-size: 0.8em; background-color: white; border: 1px solid #a6c9e2; -moz-border-radius: 5px; -webkit-border-radius: 5px; z-index: 9999 }
     p#vtip #vtipArrow { position: absolute; top: -10px; left: 5px }
 </style>
+<div class="modal fade" id="notice" tabindex="-1" role="dialog" aria-labelledby="ModalLabel">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <button type="button" class="close close_modal" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
+                </button>
+                <h4 class="modal-title" id="myModalLabel12">提示</h4>
+            </div>
+            <div class="modal-body">
+                <div class="modal-body" id="error_content">
+
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-default close_modal" data-dismiss="modal" aria-label="Close">确定</button>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
 <script>
     this.vtip = function() {
         this.xOffset = -10; // x distance from mouse
@@ -35,4 +54,28 @@
     $(document).ready(function() {
         vtip();
     });
+
+    //释放名额
+    $('.sock').on('click', function () {
+        let id = $(this).data('id');
+        $.ajax({
+            url: "{{admin_base_path('/content/buy_house/sock')}}",
+            data:{'id':id,'_token':'{{csrf_token()}}'},
+            method: 'POST',
+            dataType:'json',
+            success:function (res) {
+                if (res.code == 0) {
+                    $('#notice').addClass('in');
+                    $('#notice').css('display', 'block');
+                    $('#error_content').html(res.content);
+                } else {
+                    location.reload();
+                }
+            },
+        })
+    });
+    $('.close_modal').on('click',function () {
+        $('#notice').addClass('out');
+        $('#notice').css('display', 'none');
+    })
 </script>

+ 131 - 0
resources/views/admin/content/buy_house_jc.blade.php

@@ -0,0 +1,131 @@
+{!! $grid->render() !!}
+<style>
+    p#vtip { display: none; position: absolute; padding: 10px; left: 5px; font-size: 0.8em; background-color: white; border: 1px solid #a6c9e2; -moz-border-radius: 5px; -webkit-border-radius: 5px; z-index: 9999 }
+    p#vtip #vtipArrow { position: absolute; top: -10px; left: 5px }
+</style>
+<div class="modal fade" id="audit" tabindex="-1" role="dialog" aria-labelledby="ModalLabel">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
+                </button>
+                <h4 class="modal-title" id="myModalLabel12">申报审核</h4>
+            </div>
+            <div class="modal-body">
+                <div class="modal-body">
+                    <form method="POST" action="{{route('content.buy_house_jc.audit')}}" id="auditForm" class="form-horizontal" accept-charset="UTF-8" pjax-container="1" id="dialog-form-5cc19c85d0a5f">
+                        <div class="box-body fields-group">
+                            <div class="form-group  ">
+                                <label for="audit1" class="col-sm-2  control-label">审核状态</label>
+                                <div class="col-sm-8">
+                                    <label class="radio-inline">
+                                        <input type="radio" name="status" value="2" class="minimal audit1" checked>
+                                        &nbsp;审核通过&nbsp;&nbsp;
+                                    </label>
+                                    <label class="radio-inline">
+                                        <input type="radio" name="status" value="3" class="minimal audit1" >
+                                        &nbsp;审核不通过&nbsp;&nbsp;
+                                    </label>
+                                </div>
+                            </div>
+                            <div class="form-group  ">
+                                <label for="reason" class="col-sm-2  control-label">备注</label>
+                                <div class="col-sm-8">
+                                    <textarea name="reason" class="form-control reason" rows="5" placeholder="输入 备注"></textarea>
+                                </div>
+                            </div>
+                        </div>
+                        <input type="hidden" name="id" id="id" value="" />
+                        <input type="hidden" name="url" id="url" value="{{url()->full()}}" />
+                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
+                    </form>
+                </div>
+                <div class="modal-footer">
+                    {{--<button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span>取消</button>--}}
+                    <button type="button" id="dialog-submit-5cc19c85d0a5f" class="btn btn-primary" data-loading-text="提交中..."><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span>确认</button>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<div class="modal fade" id="dialog" tabindex="-1" role="dialog" aria-labelledby="ModalLabel">
+    <div class="modal-dialog" role="document" style="width:1200px;">
+        <div class="modal-content">
+            <div class="modal-header">
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
+                </button>
+                <h4 class="modal-title" id="myModalLabel1">业务</h4>
+            </div>
+            <div class="modal-body">
+
+                <div class="contentfade" style="height: 700px;overflow: auto;">
+
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script>
+    this.vtip = function() {
+        this.xOffset = -10; // x distance from mouse
+        this.yOffset = 15; // y distance from mouse
+        $(".vtip").unbind().hover(
+            function(e) {
+                this.t = $(this).attr("title");
+                this.title = '';
+                this.top = (e.pageY + yOffset);
+                this.left = (e.pageX + xOffset);
+                $('body').css("cursor","help");
+                $('p#vtip').width()>450?$('p#vtip').width(450):'';
+                $('body').append( '<p id="vtip">' + this.t + '</p>' );
+                $('p#vtip').css("top", this.top+"px").css("left", this.left+"px").fadeIn(0);
+            },
+            function() {
+                this.title = this.t;
+                $('body').css("cursor","");
+                $("p#vtip").fadeOut("slow").remove();
+            }
+        ).mousemove(
+            function(e) {
+                this.top = (e.pageY + yOffset);
+                this.left = (e.pageX + xOffset);
+                $("p#vtip").css("top", this.top+"px").css("left", this.left+"px");
+            }
+        );
+
+    };
+    $(document).ready(function() {
+        vtip();
+    });
+    $(document).off("click",'.applyaudit').on('click','.applyaudit',function () {
+        $('#id').val($(this).data('code'));
+        $('#audit').addClass('in');
+        $('#audit').css('display', 'block');
+        $(' #audit .contentfade').html('');
+    });
+    $(document).off("click","#audit .btn-primary").on('click',"#audit .btn-primary",function () {
+        $('#auditForm').submit();
+    });
+    $(".close").off().on('click', function () {
+        $(this).closest(".modal").removeClass('in');
+        $(this).closest(".modal").hide();
+    });
+
+    $('.detail').on('click', function () {
+        $("#myModalLabel1").html('详情');
+        var id = $(this).attr('id');
+        $('#dialog').addClass('in');
+        $('#dialog').css('display', 'block');
+        $('.contentfade').html('');
+        $.ajax({
+            url: "{{admin_base_path('/content/buy_house_jc/detail')}}",
+            data:{'id':id,'_token':'{{csrf_token()}}'},
+            // dataType:'json',
+            success:function (res) {
+                console.log(res);
+                $('.contentfade').html(res.data);
+            },
+        })
+    });
+</script>

+ 1 - 7
resources/views/admin/content/export_apply.blade.php

@@ -42,7 +42,7 @@
             <th>工作单位</th>
             <th>人才层次</th>
             <th>适用对象类型</th>
-            <th>2019年在晋江连续缴纳社保和个税</th>
+            <th>{{date('Y',strtotime("-1 year"))}}年在晋江连续缴纳社保和个税</th>
             <th>年工资是否超过130336元</th>
             <th>报名时间</th>
             <th>审核状态</th>
@@ -64,12 +64,6 @@
                 <td>{{$v['reason']}}</td>
             </tr>
         @endforeach
-        {{--<tr>
-            <td colspan="10">个税社保:2019年在晋江连续缴纳社保和个税</td>
-        </tr>
-        <tr>
-            <td colspan="10">年薪:年工资是否超过130336元</td>
-        </tr>--}}
         <tr>
             <td colspan="12">
                 1、海内外高等院校、科研院所或中央企业、跨国公司在我市设立的直属研发公共服务平台引进的优秀人才;<br style='mso-data-placement:same-cell;'/>

+ 3 - 0
routes/web.php

@@ -728,11 +728,14 @@ Route::group([
 
     //人才购房系统
     $router->any('buyhouse/login', "Web\Content\BuyhouseController@login")->name('buyhouse.login');
+    $router->any('buyhouse/detail', "Web\Content\BuyhouseController@detail")->name('buyhouse.detail');
     $router->any('buyhouse/list', "Web\Content\BuyhouseController@list")->name('buyhouse.list');
     $router->post('buyhouse/list_post', "Web\Content\BuyhouseController@listPost")->name('buyhouse.listPost');
+    $router->any('buyhouse/back', "Web\Content\BuyhouseController@back")->name('buyhouse.back');
     $router->post('buyhouse/upload', 'Web\Content\BuyhouseController@upload')->name('buyhouse.upload');
     $router->get('buyhouse/news', 'Web\Content\BuyhouseController@news')->name('buyhouse.news');
     $router->get('buyhouse/house', 'Web\Content\BuyhouseController@house')->name('buyhouse.house');
+    $router->get('buyhouse/clear_sock', 'Web\Content\BuyhouseController@clearSock')->name('buyhouse.clearSock');
 });
 
 /*硬件模块*/