改版
This commit is contained in:
@@ -25,7 +25,7 @@ class IndexController extends AdminController
|
|||||||
$filter->equal('categories.id', '所属分类')
|
$filter->equal('categories.id', '所属分类')
|
||||||
->select(Category::selectOptions(function ($model) {
|
->select(Category::selectOptions(function ($model) {
|
||||||
return $model->where('status', 1)
|
return $model->where('status', 1)
|
||||||
->whereIn('type', [Category::TYPE_ARTICLE, Category::TYPE_SHOW]);
|
->whereIn('type', [Category::TYPE_ARTICLE, Category::TYPE_SHOW,Category::TYPE_PERSON]);
|
||||||
}, '所有分类'));
|
}, '所有分类'));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class IndexController extends AdminController
|
|||||||
$payload .= " [ID:{$branch['id']}] - ";
|
$payload .= " [ID:{$branch['id']}] - ";
|
||||||
$payload .= " <strong>{$branch['title']}</strong> ";
|
$payload .= " <strong>{$branch['title']}</strong> ";
|
||||||
$payload .= " <small>{$branch['type']}</small> ";
|
$payload .= " <small>{$branch['type']}</small> ";
|
||||||
$payload .= " <small style='color:#999'>{$branch['description']}</small>";
|
$payload .= " <small style='color:#999'>{$branch['template']}</small>";
|
||||||
|
|
||||||
return $payload;
|
return $payload;
|
||||||
});
|
});
|
||||||
|
|||||||
43
app/Admin/Controllers/Resume/GroupController.php
Normal file
43
app/Admin/Controllers/Resume/GroupController.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin\Controllers\Resume;
|
||||||
|
|
||||||
|
use App\Models\ResumeGroup;
|
||||||
|
use Encore\Admin\Controllers\AdminController;
|
||||||
|
use Encore\Admin\Form;
|
||||||
|
use Encore\Admin\Grid;
|
||||||
|
|
||||||
|
class GroupController extends AdminController
|
||||||
|
{
|
||||||
|
|
||||||
|
protected $title = '科室管理';
|
||||||
|
|
||||||
|
public function grid()
|
||||||
|
{
|
||||||
|
$grid = new Grid(new ResumeGroup());
|
||||||
|
$grid->model()->orderBy('id', 'desc');
|
||||||
|
|
||||||
|
$grid->filter(function ($filter) {
|
||||||
|
$filter->column(1 / 2, function ($filter) {
|
||||||
|
$filter->like('name', '名称');
|
||||||
|
});
|
||||||
|
$filter->disableIdFilter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$grid->column('id', '#ID#');
|
||||||
|
$grid->column('name', '名称');
|
||||||
|
$grid->column('status', '状态')->switch();
|
||||||
|
$grid->column('created_at', '创建时间');
|
||||||
|
return $grid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function form(): Form
|
||||||
|
{
|
||||||
|
$form = new Form(new ResumeGroup);
|
||||||
|
|
||||||
|
$form->text('name', '名称')->rules('min:2')->required();
|
||||||
|
$form->switch('status', '状态')->default(1);
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
88
app/Admin/Controllers/Resume/IndexController.php
Normal file
88
app/Admin/Controllers/Resume/IndexController.php
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Admin\Controllers\Resume;
|
||||||
|
|
||||||
|
use App\Models\Category;
|
||||||
|
use App\Models\Resume;
|
||||||
|
use App\Models\ResumeGroup;
|
||||||
|
use Encore\Admin\Controllers\AdminController;
|
||||||
|
use Encore\Admin\Form;
|
||||||
|
use Encore\Admin\Grid;
|
||||||
|
|
||||||
|
class IndexController extends AdminController
|
||||||
|
{
|
||||||
|
|
||||||
|
protected $title = '简历管理';
|
||||||
|
|
||||||
|
public function grid()
|
||||||
|
{
|
||||||
|
$grid = new Grid(new Resume());
|
||||||
|
$grid->model()->orderBy('id', 'desc');
|
||||||
|
|
||||||
|
$grid->filter(function ($filter) {
|
||||||
|
$filter->column(1 / 2, function ($filter) {
|
||||||
|
$filter->like('name', '姓名');
|
||||||
|
$filter->equal('categories.id', '所属分类')
|
||||||
|
->select(Category::selectOptions(function ($model) {
|
||||||
|
return $model->where('status', 1)->whereIn('type', [Category::TYPE_PERSON]);
|
||||||
|
}, '所有分类'));
|
||||||
|
});
|
||||||
|
|
||||||
|
$filter->disableIdFilter();
|
||||||
|
});
|
||||||
|
|
||||||
|
$grid->column('id', '#ID#');
|
||||||
|
$grid->column('name', '姓名');
|
||||||
|
$grid->column('cover', '封面图片')->image('', 100);
|
||||||
|
$grid->column('category.title', '所属分类');
|
||||||
|
$grid->column('status', '状态')->switch();
|
||||||
|
$grid->column('created_at', '创建时间');
|
||||||
|
return $grid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function form(): Form
|
||||||
|
{
|
||||||
|
$form = new Form(new Resume());
|
||||||
|
|
||||||
|
$form->text('name', '姓名')->rules('min:2')->required();
|
||||||
|
$form->textarea('description', '简介');
|
||||||
|
$form->image('cover', '封面')
|
||||||
|
->move('person/'.date('Y/m/d'))
|
||||||
|
->removable()
|
||||||
|
->uniqueName()
|
||||||
|
->required();
|
||||||
|
|
||||||
|
$form->select('category_id', '所属分类')
|
||||||
|
->options(function () {
|
||||||
|
return Category::where('status', 1)->where('type', Category::TYPE_PERSON)->pluck('title', 'id');
|
||||||
|
})
|
||||||
|
->required();
|
||||||
|
|
||||||
|
$form->select('group_id', '所属科室')
|
||||||
|
->options(function () {
|
||||||
|
return ResumeGroup::where('status', 1)->pluck('name', 'id');
|
||||||
|
})
|
||||||
|
->required();
|
||||||
|
|
||||||
|
$form->embeds('information', '基本信息', function ($form) {
|
||||||
|
$form->text('duty', '职务');
|
||||||
|
$form->text('rank', '职称')->required();
|
||||||
|
$form->text('education', '学历')->required();
|
||||||
|
$form->text('mobile', '电话')->required();
|
||||||
|
$form->text('email', '电子邮件')->required();
|
||||||
|
$form->text('address', '通讯地址')->required();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$form->textarea('direction', '研究方向');
|
||||||
|
$form->ueditor('content', '简历')->rules('required', ['required' => '简历不能为空']);
|
||||||
|
$form->ueditor('outcome', '代表成果')->rules('required', ['required' => '代表成果不能为空']);
|
||||||
|
$form->ueditor('project', '承担科研项目情况')->rules('required', ['required' => '承担科研项目情况不能为空']);
|
||||||
|
$form->datetime('created_at', '发布时间');
|
||||||
|
|
||||||
|
$form->switch('status', '状态')->default(1);
|
||||||
|
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
12
app/Admin/Routes/resume.php
Normal file
12
app/Admin/Routes/resume.php
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Routing\Router;
|
||||||
|
|
||||||
|
Route::group([
|
||||||
|
'prefix' => config('admin.route.prefix'),
|
||||||
|
'namespace' => config('admin.route.namespace').'\\Resume',
|
||||||
|
'middleware' => config('admin.route.middleware'),
|
||||||
|
], function (Router $router) {
|
||||||
|
$router->resource('persons', 'IndexController');
|
||||||
|
$router->resource('groups', 'GroupController');
|
||||||
|
});
|
||||||
@@ -19,3 +19,4 @@ require __DIR__ . '/Routes/article.php';
|
|||||||
require __DIR__.'/Routes/category.php';
|
require __DIR__.'/Routes/category.php';
|
||||||
require __DIR__.'/Routes/link.php';
|
require __DIR__.'/Routes/link.php';
|
||||||
require __DIR__.'/Routes/advert.php';
|
require __DIR__.'/Routes/advert.php';
|
||||||
|
require __DIR__.'/Routes/resume.php';
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
use App\Models\Advert;
|
use App\Models\Advert;
|
||||||
use App\Models\Category;
|
use App\Models\Category;
|
||||||
use App\Models\Article;
|
use App\Models\Article;
|
||||||
|
use App\Models\Resume;
|
||||||
use Encore\Admin\Config\ConfigModel;
|
use Encore\Admin\Config\ConfigModel;
|
||||||
|
|
||||||
function getConfigList($name, $take = 8)
|
function getConfigList($name, $take = 8)
|
||||||
@@ -41,6 +42,7 @@ function getOneCategory($categoryId, $return = '')
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Notes: 获取文章分类详情
|
* Notes: 获取文章分类详情
|
||||||
|
*
|
||||||
* @Author: 玄尘
|
* @Author: 玄尘
|
||||||
* @Date : 2020/9/10 13:21
|
* @Date : 2020/9/10 13:21
|
||||||
* @param $categoryId
|
* @param $categoryId
|
||||||
@@ -67,21 +69,21 @@ function getOneArticleBYCate($categoryId, $result = '')
|
|||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Article;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notes: 获取分类下的文章
|
* Notes: 获取分类下的文章
|
||||||
|
*
|
||||||
* @Author: 玄尘
|
* @Author: 玄尘
|
||||||
* @Date : 2020/9/10 10:05
|
* @Date: 2021/12/1 13:27
|
||||||
* @param $categoryId
|
* @param $categoryId
|
||||||
* @param int $take
|
* @param int $take
|
||||||
* @param string $mark 显示多少当前分类还是当前分类+子分类
|
* @param string $mark
|
||||||
* @param bool $hasCover
|
* @param false $hasCover
|
||||||
* @param string $order
|
* @param string $order
|
||||||
* @return \App\Models\Article
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
function getArticlesBYCate($categoryId, $take = 8, $mark = 'one', $hasCover = false, $order = 'desc')
|
function getArticlesBYCate($categoryId, int $take = 8, string $mark = 'one', $hasCover = false, string $order = 'desc')
|
||||||
{
|
{
|
||||||
if ($mark == 'one') {
|
if ($mark == 'one') {
|
||||||
$articles = Article::where('status', 1)
|
$articles = Article::where('status', 1)
|
||||||
@@ -152,11 +154,18 @@ function getOneAdvertByCate($categoryId, $result = '')
|
|||||||
} else {
|
} else {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Advert;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAdvertsByCate($categoryId, $take = 8)
|
/**
|
||||||
|
* Notes: 获取广告
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2021/12/1 13:27
|
||||||
|
* @param $categoryId
|
||||||
|
* @param int $take
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
function getAdvertsByCate($categoryId, int $take = 8)
|
||||||
{
|
{
|
||||||
return Advert::where('category_id', $categoryId)
|
return Advert::where('category_id', $categoryId)
|
||||||
->latest('sort')
|
->latest('sort')
|
||||||
@@ -167,18 +176,19 @@ function getAdvertsByCate($categoryId, $take = 8)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Notes: 根据分类id 获取文章
|
* Notes: 根据分类id 获取文章
|
||||||
|
*
|
||||||
* @Author: 玄尘
|
* @Author: 玄尘
|
||||||
* @Date : 2021/5/21 9:45
|
* @Date : 2021/5/21 9:45
|
||||||
* @param int $take
|
* @param int $take
|
||||||
* @param false $hasCover
|
* @param false $hasCover
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
function getArticlesByCateIds($take = 8, $hasCover = false)
|
function getArticlesByCateIds(int $take = 8, $hasCover = false)
|
||||||
{
|
{
|
||||||
//分院新闻 媒体报道 科研动态 交流合作 党建文化 专题学习
|
//分院新闻 媒体报道 科研动态 交流合作 党建文化 专题学习
|
||||||
$ids = [7, 17, 8, 5, 12, 30];
|
$ids = [7, 17, 8, 5, 12, 30];
|
||||||
|
|
||||||
$articles = Article::query()->where('status', 1)
|
return Article::query()->where('status', 1)
|
||||||
->whereHas('categories', function ($q) use ($ids) {
|
->whereHas('categories', function ($q) use ($ids) {
|
||||||
$q->whereIn('id', $ids);
|
$q->whereIn('id', $ids);
|
||||||
})
|
})
|
||||||
@@ -190,12 +200,11 @@ function getArticlesByCateIds($take = 8, $hasCover = false)
|
|||||||
->take($take)
|
->take($take)
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
return $articles;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notes: 获取推荐文章
|
* Notes: 获取推荐文章
|
||||||
|
*
|
||||||
* @Author: 玄尘
|
* @Author: 玄尘
|
||||||
* @Date : 2021/4/16 13:31
|
* @Date : 2021/4/16 13:31
|
||||||
* @param $postion
|
* @param $postion
|
||||||
@@ -203,12 +212,27 @@ function getArticlesByCateIds($take = 8, $hasCover = false)
|
|||||||
*/
|
*/
|
||||||
function getArticlesByPosition($postion)
|
function getArticlesByPosition($postion)
|
||||||
{
|
{
|
||||||
$articles = Article::ofPosition($postion)
|
return Article::ofPosition($postion)
|
||||||
->latest('sort')
|
->latest('sort')
|
||||||
->latest('created_at')
|
->latest('created_at')
|
||||||
->take(5)
|
->take(5)
|
||||||
->get();
|
->get();
|
||||||
|
}
|
||||||
return $articles;
|
|
||||||
|
/**
|
||||||
|
* Notes: 根据分类获取简历
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2021/12/1 13:28
|
||||||
|
* @param $category_id
|
||||||
|
* @param int $take
|
||||||
|
*/
|
||||||
|
function getResumesByCate($category_id, $take = 8)
|
||||||
|
{
|
||||||
|
return Resume::query()
|
||||||
|
->where('status', 1)
|
||||||
|
->where('category_id', $category_id)
|
||||||
|
->take($take)
|
||||||
|
->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 显示分类
|
* 显示分类
|
||||||
|
*
|
||||||
* @param Category $category [description]
|
* @param Category $category [description]
|
||||||
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View [type] [description]
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View [type] [description]
|
||||||
*/
|
*/
|
||||||
@@ -18,10 +19,16 @@ class CategoryController extends Controller
|
|||||||
if ($category->type == Category::TYPE_SHOW && $category->article_id) {
|
if ($category->type == Category::TYPE_SHOW && $category->article_id) {
|
||||||
return redirect("articles/".$category->article_id);
|
return redirect("articles/".$category->article_id);
|
||||||
} else {
|
} else {
|
||||||
|
$directory = 'category';
|
||||||
$template = 'show';
|
$template = 'show';
|
||||||
if ($category->template) {
|
if ($category->template) {
|
||||||
$template = $category->template;
|
$template = $category->template;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($category->type == Category::TYPE_PERSON) {
|
||||||
|
$directory = 'resume';
|
||||||
|
}
|
||||||
|
|
||||||
$articles = $category->relations(Category::TYPE_ARTICLE)
|
$articles = $category->relations(Category::TYPE_ARTICLE)
|
||||||
->where('status', 1)
|
->where('status', 1)
|
||||||
->latest('sort')
|
->latest('sort')
|
||||||
@@ -35,7 +42,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
$advert = Advert::where('category_id', 73)->first();
|
$advert = Advert::where('category_id', 73)->first();
|
||||||
|
|
||||||
return view('category.' . $template, compact('articles', 'category', 'parent', 'advert'));
|
return view($directory.'.'.$template, compact('articles', 'category', 'parent', 'advert'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
33
app/Http/Controllers/ResumeController.php
Normal file
33
app/Http/Controllers/ResumeController.php
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Advert;
|
||||||
|
use App\Models\Article;
|
||||||
|
use App\Models\Resume;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class ResumeController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 显示详情
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2021/12/1 10:46
|
||||||
|
* @param \App\Models\Resume $resume
|
||||||
|
* @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||||
|
*/
|
||||||
|
public function show(Resume $resume)
|
||||||
|
{
|
||||||
|
$category = $resume->category;
|
||||||
|
$parent = $category;
|
||||||
|
if ($category->childrens->isEmpty() && $category->parent) {
|
||||||
|
$parent = $category->parent;
|
||||||
|
}
|
||||||
|
return view('resume.show', compact('resume', 'category','parent'));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -14,10 +14,12 @@ class Category extends Model
|
|||||||
public const TYPE_SHOW = 'show';
|
public const TYPE_SHOW = 'show';
|
||||||
public const TYPE_ARTICLE = 'article';
|
public const TYPE_ARTICLE = 'article';
|
||||||
public const TYPE_ADVERT = 'advert';
|
public const TYPE_ADVERT = 'advert';
|
||||||
|
public const TYPE_PERSON = 'person';
|
||||||
public const TYPES = [
|
public const TYPES = [
|
||||||
self::TYPE_ARTICLE => '文章列表',
|
self::TYPE_ARTICLE => '文章列表',
|
||||||
self::TYPE_SHOW => '文章详情',
|
self::TYPE_SHOW => '文章详情',
|
||||||
self::TYPE_ADVERT => '图片',
|
self::TYPE_ADVERT => '图片',
|
||||||
|
self::TYPE_PERSON => '简历',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function getLinkAttribute()
|
public function getLinkAttribute()
|
||||||
@@ -27,6 +29,7 @@ class Category extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 关联的数据
|
* 关联的数据
|
||||||
|
*
|
||||||
* @return [type] [description]
|
* @return [type] [description]
|
||||||
*/
|
*/
|
||||||
public function relations()
|
public function relations()
|
||||||
@@ -41,6 +44,9 @@ class Category extends Model
|
|||||||
case self::TYPE_ADVERT:
|
case self::TYPE_ADVERT:
|
||||||
return $this->hasMany(Advert::class);
|
return $this->hasMany(Advert::class);
|
||||||
break;
|
break;
|
||||||
|
case self::TYPE_PERSON:
|
||||||
|
return $this->hasMany(Resume::class);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -63,6 +69,7 @@ class Category extends Model
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Notes: 获取当前分类及子分类ID
|
* Notes: 获取当前分类及子分类ID
|
||||||
|
*
|
||||||
* @Author: <C.Jason>
|
* @Author: <C.Jason>
|
||||||
* @Date : 2020/4/6 3:12 下午
|
* @Date : 2020/4/6 3:12 下午
|
||||||
* @return array
|
* @return array
|
||||||
|
|||||||
65
app/Models/Resume.php
Normal file
65
app/Models/Resume.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use App\Models\Traits\HasOneCover;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
|
||||||
|
class Resume extends Model
|
||||||
|
{
|
||||||
|
use HasOneCover;
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'information' => 'json'
|
||||||
|
];
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Notes: 所属分类
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2021/12/1 9:57
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||||
|
*/
|
||||||
|
public function category(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Category::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 所属科室
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2021/12/1 9:58
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||||
|
*/
|
||||||
|
public function group(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this->belongsTo(ResumeGroup::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 跳转链接
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2021/12/1 13:11
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLinkAttribute(): string
|
||||||
|
{
|
||||||
|
return route('resume.show', $this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notes: 获取基础数据
|
||||||
|
*
|
||||||
|
* @Author: 玄尘
|
||||||
|
* @Date: 2021/12/1 13:11
|
||||||
|
* @param $key
|
||||||
|
* @param string $default
|
||||||
|
*/
|
||||||
|
public function getInformation($key, string $default = '')
|
||||||
|
{
|
||||||
|
return Arr::get($this->information, $key, $default);
|
||||||
|
}
|
||||||
|
}
|
||||||
8
app/Models/ResumeGroup.php
Normal file
8
app/Models/ResumeGroup.php
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
|
||||||
|
class ResumeGroup extends Model
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -27,8 +27,11 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
public function boot()
|
public function boot()
|
||||||
{
|
{
|
||||||
$table = config('admin.extensions.config.table', 'admin_config');
|
$table = config('admin.extensions.config.table', 'admin_config');
|
||||||
|
if (! $this->app->runningInConsole()) {
|
||||||
if (Schema::hasTable($table)) {
|
if (Schema::hasTable($table)) {
|
||||||
Config::load();
|
Config::load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateResumesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('resumes', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->unsignedBigInteger('category_id')->index();
|
||||||
|
$table->unsignedBigInteger('group_id')->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->string('cover');
|
||||||
|
$table->json('information')->comment('基本信息');
|
||||||
|
$table->text('content')->comment('简历');
|
||||||
|
$table->string('direction')->comment('研究方向');
|
||||||
|
$table->text('outcome')->comment('代表成果');
|
||||||
|
$table->text('project')->comment('承担科研项目情况');
|
||||||
|
$table->boolean('status')->default(1);
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('resumes');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class CreateResumeGroupsTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::create('resume_groups', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('name');
|
||||||
|
$table->boolean('status')->default(1);
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('resume_groups');
|
||||||
|
}
|
||||||
|
}
|
||||||
54
resources/views/category/cxtd.blade.php
Normal file
54
resources/views/category/cxtd.blade.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title', '首页')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<!-- 科学研究 -->
|
||||||
|
<div class="survey" style="background-image: url(/assets/index/images/studyBack.png);">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
@include('category.left')
|
||||||
|
<div class="col-xs-12 col-md-9 secondRight">
|
||||||
|
<!-- 科研动态 -->
|
||||||
|
<div class="surveyCont">
|
||||||
|
<div class="secondTop">
|
||||||
|
<div class="secondTop-name">
|
||||||
|
<img src="/assets/index/images/studyIcon_00.png"/>
|
||||||
|
{{ $category->title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if ($articles->isNotEmpty())
|
||||||
|
<ul class="dateExtend">
|
||||||
|
@foreach ($articles as $article)
|
||||||
|
<li>
|
||||||
|
<a href="{{ $article->link }}" target="_blank">
|
||||||
|
<div class="ce-img cxtdExtend-img">
|
||||||
|
<span style="background-image: url({{ $article->cover_path }});"></span>
|
||||||
|
</div>
|
||||||
|
<div class="dateExtend-right cxtdExtend-right">
|
||||||
|
<div class="ce-nowrap indexExtend-ul-name">
|
||||||
|
{{ $article->title }}
|
||||||
|
</div>
|
||||||
|
<div class="ce-nowrap-multi indexExtend-ul-text">
|
||||||
|
{{ $article->description }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
<!-- 分页 -->
|
||||||
|
{{ $articles->links('layouts.pagination') }}
|
||||||
|
@else
|
||||||
|
<div class="no-searchCont">
|
||||||
|
<img src="/assets/index/images/org55.png"/>
|
||||||
|
<span>抱歉,暂无数据</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
{{ $category->title }}
|
{{ $category->title }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul class="dateExtend">
|
|
||||||
@if ($articles->isNotEmpty())
|
@if ($articles->isNotEmpty())
|
||||||
|
<ul class="dateExtend">
|
||||||
@foreach ($articles as $article)
|
@foreach ($articles as $article)
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ $article->link }}" target="_blank">
|
<a href="{{ $article->link }}" target="_blank">
|
||||||
@@ -38,13 +38,14 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@endforeach
|
@endforeach
|
||||||
@endif
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
|
|
||||||
@if ($articles->isNotEmpty())
|
|
||||||
{{ $articles->links('layouts.pagination') }}
|
{{ $articles->links('layouts.pagination') }}
|
||||||
|
@else
|
||||||
|
<div class="no-searchCont">
|
||||||
|
<img src="/assets/index/images/org55.png"/>
|
||||||
|
<span>抱歉,暂无数据</span>
|
||||||
|
</div>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -57,10 +57,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="swiper-container indexBuild-swiper swiper-container-vertical">
|
<div class="swiper-container indexBuild-swiper swiper-container-vertical">
|
||||||
<div class="swiper-wrapper">
|
<div class="swiper-wrapper">
|
||||||
@if (getArticlesBYCate(28,36)->isNotEmpty())
|
@if (getResumesByCate(28,36)->isNotEmpty())
|
||||||
@foreach (getArticlesBYCate(28,36) as $article)
|
@foreach (getResumesByCate(28,36) as $resume)
|
||||||
<div class="swiper-slide">{{ $article->title }}
|
<div class="swiper-slide">{{ $resume->name }}
|
||||||
<span>{{ $article->description }}</span>
|
<span>{{ $resume->description }}</span>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
@endif
|
@endif
|
||||||
@@ -80,22 +80,14 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<ul class="second-IndexExpert IndexExpertNew" style="margin: 0">
|
<ul class="second-IndexExpert IndexExpertNew" style="margin: 0">
|
||||||
@if (getArticlesBYCate(29,6)->isNotEmpty())
|
@if (getResumesByCate(29,6)->isNotEmpty())
|
||||||
@foreach (getArticlesBYCate(29,6) as $article)
|
@foreach (getResumesByCate(29,6) as $resume)
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ $article->link }}" target="_blank">
|
<a href="{{ $resume->link }}" target="_blank">
|
||||||
<div class="IndexExpertNew-li">
|
<div class="IndexExpertNew-li">
|
||||||
<span class="IndexExpertNew-tips">客座教授</span>
|
<span class="IndexExpertNew-tips">客座教授</span>
|
||||||
<div class="IndexExpertNew-title">{{ $article->title }}</div>
|
<div class="IndexExpertNew-title">{{ $resume->name }}</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="ce-img IndexExpert-img">
|
|
||||||
<span style="background-image: url({{ $article->cover_path }});"></span>
|
|
||||||
</div>
|
|
||||||
<div class="IndexExpert-name">
|
|
||||||
<div class="IndexExpert-title">
|
|
||||||
<span>{{ $article->title }}</span>{{ $article->description }}
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|||||||
82
resources/views/resume/show.blade.php
Normal file
82
resources/views/resume/show.blade.php
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title', '详情')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<!-- 科学研究 -->
|
||||||
|
<div class="survey" style="background-image: url(/assets/index/images/studyBack.png);">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
@include('category.left')
|
||||||
|
<div class="col-xs-12 col-md-9 secondRight">
|
||||||
|
<!-- 科研动态 -->
|
||||||
|
<div class="surveyCont">
|
||||||
|
<div class="secondTop">
|
||||||
|
<div class="secondTop-name">
|
||||||
|
<img src="/assets/index/images/studyIcon_00.png"/>
|
||||||
|
{{ $category->title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tdrcTop">
|
||||||
|
<div class="tdrcBrief">
|
||||||
|
<div class="tdrcBrief-name"><span>{{ $resume->name }}</span></div>
|
||||||
|
<ul class="tdrcBrief-label">
|
||||||
|
@if($resume->getInformation('duty'))
|
||||||
|
<li>
|
||||||
|
<span>职务:</span>{{ $resume->getInformation('duty') }}
|
||||||
|
</li>
|
||||||
|
@endif
|
||||||
|
<li>
|
||||||
|
<span>职称:</span>{{ $resume->getInformation('rank') }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span>学历:</span>{{ $resume->getInformation('education') }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span>电话:</span>{{ $resume->getInformation('mobile') }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span>电子邮件:</span>{{ $resume->getInformation('email') }}
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span>通讯地址:</span>{{ $resume->getInformation('address') }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="ce-img tdrcImg">
|
||||||
|
<span style="background-image: url({{ $resume->cover_path }});"></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tdrcCont">
|
||||||
|
<div class="tdrcCont-label">
|
||||||
|
<div class="tdrcCont-title">简历</div>
|
||||||
|
<div class="tdrcCont-text">
|
||||||
|
{!! $resume->content !!}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tdrcCont-label">
|
||||||
|
<div class="tdrcCont-title">研究方向</div>
|
||||||
|
<div class="tdrcCont-text">
|
||||||
|
{{ $resume->direction }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tdrcCont-label">
|
||||||
|
<div class="tdrcCont-title">代表成果</div>
|
||||||
|
<div class="tdrcCont-text">
|
||||||
|
{!! $resume->outcome !!}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="tdrcCont-label">
|
||||||
|
<div class="tdrcCont-title">承担科研项目情况</div>
|
||||||
|
<div class="tdrcCont-text">
|
||||||
|
{!! $resume->project !!}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
46
resources/views/resume/tdrc.blade.php
Normal file
46
resources/views/resume/tdrc.blade.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title', '首页')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<!-- 科学研究 -->
|
||||||
|
<div class="survey" style="background-image: url(/assets/index/images/studyBack.png);">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
@include('category.left')
|
||||||
|
<div class="col-xs-12 col-md-9 secondRight">
|
||||||
|
<!-- 科研动态 -->
|
||||||
|
<div class="surveyCont">
|
||||||
|
<div class="secondTop">
|
||||||
|
<div class="secondTop-name">
|
||||||
|
<img src="/assets/index/images/studyIcon_00.png"/>
|
||||||
|
{{ $category->title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if ($articles->isNotEmpty())
|
||||||
|
@foreach($articles->groupBy('group_id') as $resumes)
|
||||||
|
<div class="tdrcList">
|
||||||
|
<div class="tdrcList-title">
|
||||||
|
{{ $resumes->first()->group->name }}
|
||||||
|
</div>
|
||||||
|
<ul class="row tdrcList-label">
|
||||||
|
@foreach($resumes as $resume)
|
||||||
|
<li class="col-xs-6 col-md-3">
|
||||||
|
<a href="{{ $resume->link }}">{{ $resume->name }}</a>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
<div class="no-searchCont">
|
||||||
|
<img src="/assets/index/images/org55.png"/>
|
||||||
|
<span>抱歉,暂无数据</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
49
resources/views/resume/zjzk.blade.php
Normal file
49
resources/views/resume/zjzk.blade.php
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title', '首页')
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
|
||||||
|
<!-- 科学研究 -->
|
||||||
|
<div class="survey" style="background-image: url(/assets/index/images/studyBack.png);">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
@include('category.left')
|
||||||
|
<div class="col-xs-12 col-md-9 secondRight">
|
||||||
|
<!-- 科研动态 -->
|
||||||
|
<div class="surveyCont">
|
||||||
|
<div class="secondTop">
|
||||||
|
<div class="secondTop-name">
|
||||||
|
<img src="/assets/index/images/studyIcon_00.png"/>
|
||||||
|
{{ $category->title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if ($articles->isNotEmpty())
|
||||||
|
<ul class="indexExtend-ul studyExtend">
|
||||||
|
@foreach ($articles as $article)
|
||||||
|
<li>
|
||||||
|
<a href="{{ $article->link }}" target="_blank">
|
||||||
|
<div class="ce-nowrap indexExtend-ul-name">
|
||||||
|
{{ $article->name }}
|
||||||
|
</div>
|
||||||
|
<div class="ce-nowrap-multi indexExtend-ul-text">
|
||||||
|
{{ $article->description }}
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
<!-- 分页 -->
|
||||||
|
{{ $articles->links('layouts.pagination') }}
|
||||||
|
@else
|
||||||
|
<div class="no-searchCont">
|
||||||
|
<img src="/assets/index/images/org55.png"/>
|
||||||
|
<span>抱歉,暂无数据</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
@@ -16,7 +16,10 @@ Route::get('search', 'ArticleController@search')->name('article.search');
|
|||||||
|
|
||||||
Route::get('category/{category}', 'CategoryController@index')->name('category.show');
|
Route::get('category/{category}', 'CategoryController@index')->name('category.show');
|
||||||
|
|
||||||
|
Route::get('resume/{resume}', 'ResumeController@show')->name('resume.show');
|
||||||
|
|
||||||
//以下为导入数据
|
//以下为导入数据
|
||||||
|
Route::get('test', 'TestController@index');
|
||||||
Route::get('test/set_category', 'TestController@set_category');
|
Route::get('test/set_category', 'TestController@set_category');
|
||||||
Route::get('test/set_article', 'TestController@set_article');
|
Route::get('test/set_article', 'TestController@set_article');
|
||||||
Route::get('test/set_cate_article', 'TestController@setCateArticle');
|
Route::get('test/set_cate_article', 'TestController@setCateArticle');
|
||||||
|
|||||||
Reference in New Issue
Block a user