liutk 2026-02-23 19:02:37 +08:00
parent f2df604eae
commit ea174e3b88
10 changed files with 137 additions and 2 deletions

View File

@ -83,6 +83,7 @@ class ArticleController extends AdminController
amis()->Grid()->columns([ amis()->Grid()->columns([
amis()->Wrapper()->body([ amis()->Wrapper()->body([
amis()->TextControl('title', __('admin.articles.title'))->required(true), amis()->TextControl('title', __('admin.articles.title'))->required(true),
amis()->TextareaControl('description', __('admin.articles.description')),
// Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key'), // Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key'),
// Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag'), // Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag'),
Components::make()->cropImageControl('cover', __('admin.articles.cover')), Components::make()->cropImageControl('cover', __('admin.articles.cover')),

View File

@ -0,0 +1,27 @@
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Traits\PaginatorTrait;
use App\Models\Filters\ArticleFilter;
use App\Http\Resources\NewsResource;
use App\Models\Article;
use App\Models\ProjectArticle;
class NewsController extends Controller
{
use PaginatorTrait;
public function index(Request $request){
$query = Article::filter($request->all(), ArticleFilter::class)->sort();
$list = $query->show()->sort()->paginate($this->resolvePerPage('per_page', 20));
return $this->json(NewsResource::collection($list));
}
public function show(Article $news){
request()->merge(['include_content' => true]);
return $this->json(NewsResource::make($news));
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Resources\{TimelineResource};
use App\Traits\PaginatorTrait;
use App\Models\Filters\TimelineFilter;
use App\Models\Timeline;
class TimelineController extends Controller
{
use PaginatorTrait;
public function index(Request $request){
$query = Timeline::filter($request->all(), TimelineFilter::class)->sort();
$list = $query->show()->sort()->paginate($this->resolvePerPage('per_page', 20));
return $this->json(TimelineResource::collection($list));
}
}

View File

@ -15,7 +15,7 @@ class HonorResource extends JsonResource
public function toArray($request) public function toArray($request)
{ {
return [ return [
'id' => $this->id, // 'id' => $this->id,
'title' => $this->title, 'title' => $this->title,
'cover' => $this->cover, 'cover' => $this->cover,
'awarded_date' => $this->awarded_date, 'awarded_date' => $this->awarded_date,

View File

@ -0,0 +1,25 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class NewsResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'cover' => $this->cover,
'description' => $this->description,
'content' => $this->when($request->boolean('include_content'), $this->content),
'published_at' => $this->published_at->toDateTimeString()
];
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace App\Http\Resources;
use App\Models\Keyword;
use Illuminate\Http\Resources\Json\JsonResource;
class TimelineResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/
public function toArray($request)
{
return [
// 'id' => $this->id,
'title' => $this->title,
'description' => $this->description,
'cover' => $this->cover,
'awarded_date' => $this->awarded_date,
];
}
}

View File

@ -32,6 +32,7 @@ class Article extends Model
protected $fillable = [ protected $fillable = [
'title', 'title',
'description',
'content', 'content',
'cover', 'cover',
'category', 'category',

View File

@ -0,0 +1,30 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('articles', function (Blueprint $table) {
//
$table->text('description')->nullable()->comment('简介');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
//
$table->dropColumn(['description']);
});
}
};

View File

@ -298,6 +298,7 @@ return [
'sort' => '排序', 'sort' => '排序',
'appendixes' => '附件', 'appendixes' => '附件',
'published_at_remark' => '*若未设置发布时间且操作设置为显示,则默认生成发布时间', 'published_at_remark' => '*若未设置发布时间且操作设置为显示,则默认生成发布时间',
'description' => '简述',
], ],
'ads' => [ 'ads' => [
'id' => 'ID', 'id' => 'ID',

View File

@ -38,8 +38,11 @@ Route::middleware('api')->group(function () {
Route::get('/case_studies', [CaseStudyController::class, 'index']); Route::get('/case_studies', [CaseStudyController::class, 'index']);
Route::get('/case_studies/{case_study}', [CaseStudyController::class, 'show']); Route::get('/case_studies/{case_study}', [CaseStudyController::class, 'show']);
//企业资讯 //企业资讯
Route::get('/news', [NewsController::class, 'index']);
Route::get('/news/{news}', [NewsController::class, 'show']);
//荣誉资质 //荣誉资质
Route::get('/honor_cates', [HonorController::class, 'cates']); Route::get('/honor_cates', [HonorController::class, 'cates']);
Route::get('/honors', [HonorController::class, 'index']); Route::get('/honors', [HonorController::class, 'index']);
//发展历程
Route::get('/timelines', [TimelineController::class, 'index']);
}); });