补充操作显示时联动发布时间

mall
vine_liutk 2023-12-09 18:23:55 +08:00
parent e0bb6766a9
commit 4b6153f971
4 changed files with 70 additions and 4 deletions

View File

@ -23,6 +23,14 @@ class ArticleController extends AdminController
...$this->baseHeaderToolBar(),
])
->filter($this->baseFilter()->body())
->itemBadge([
'text' => __('admin.articles.is_recommend'),
'mode' => 'ribbon',
'position' => 'top-left',
'badgeLevel' => 'danger',
'visibleOn' => '${is_recommend > 0}',
'size' => 15
])
->columns([
amis()->TableColumn('id', __('admin.id')),
amis()->TableColumn('title', __('admin.articles.title'))->width('300px'),
@ -31,8 +39,9 @@ class ArticleController extends AdminController
->itemSchema(amis()->Tag()->label('${item}')->color(Admin::setting()->get('system_theme_setting')['theme_color'] ?? '#1677ff')),
amis()->TableColumn('tags', __('admin.articles.tags'))->type('mapping')->map(Keyword::tagsMap('article_tag')),
amis()->TableColumn('cover', __('admin.articles.cover'))->type('image')->height('50px')->width('50px')->enlargeAble(true),
amis()->TableColumn('published_at', __('admin.articles.published_at')),
amis()->TableColumn('published_at', __('admin.articles.published_at'))->remark('若无发布时间操作显示,则会自动生成当前发布时间'),
amis()->TableColumn('is_enable', __('admin.articles.is_enable'))->type('switch'),
amis()->TableColumn('is_recommend', __('admin.articles.is_recommend'))->type('switch'),
amis()->TableColumn('created_at', __('admin.created_at')),
amis()->Operation()->label(__('admin.actions'))->buttons([
$this->rowEditButton(),
@ -53,8 +62,9 @@ class ArticleController extends AdminController
Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag'),
Components::make()->cropImageControl('cover', __('admin.articles.cover')),
Components::make()->sortControl('sort', __('admin.articles.sort')),
amis()->DateTimeControl('published_at', __('admin.articles.published_at'))->value(now())->format('YYYY-MM-DD HH:mm:ss')->description('*不填写则默认为创建时间'),
amis()->SwitchControl('is_enable', __('admin.articles.is_enable'))->value(true),
amis()->DateTimeControl('published_at', __('admin.articles.published_at'))->format('YYYY-MM-DD HH:mm:ss')->description('*若创建时设置显示且未填写,则默认为创建时间'),
amis()->SwitchControl('is_enable', __('admin.articles.is_enable'))->value(false),
amis()->SwitchControl('is_recommend', __('admin.articles.is_recommend'))->value(false),
])->md(4),
amis()->Wrapper()->body([
Components::make()->fuEditorControl('content', __('admin.articles.content')),

View File

@ -42,6 +42,14 @@ class Article extends Model
'appendixes',
];
public function scopeSort($q)
{
$q->orderBy('is_recommend', 'desc')
->orderBy('sort', 'asc')
->orderBy('published_at', 'desc')
->orderBy('created_at', 'desc');
}
protected function tags():Attribute
{
return Attribute::make(

View File

@ -4,6 +4,7 @@ namespace App\Services\Admin;
use App\Models\Article;
use App\Models\Filters\ArticleFilter;
use Illuminate\Support\Arr;
/**
* @method Article getModel()
@ -14,4 +15,49 @@ class ArticleService extends BaseService
protected string $modelName = Article::class;
protected string $modelFilterName = ArticleFilter::class;
public function store($data): bool
{
$columns = $this->getTableColumns();
$model = $this->getModel();
$isEnable = Arr::get($data, 'is_enabled');
$publishedAt = Arr::get($data, 'published_at');
if ($isEnable && empty($publishedAt)) {
$data['published_at'] = now();
}
foreach ($data as $k => $v) {
if (!in_array($k, $columns)) {
continue;
}
$model->setAttribute($k, $v);
}
return $model->save();
}
public function update($primaryKey, $data): bool
{
$columns = $this->getTableColumns();
$model = $this->query()->whereKey($primaryKey)->first();
$isEnable = Arr::get($data, 'is_enable');
$publishedAt = Arr::get($data, 'published_at');
if ($isEnable && empty($publishedAt) && empty($model->published_at)) {
$data['published_at'] = now();
}
foreach ($data as $k => $v) {
if (!in_array($k, $columns)) {
continue;
}
$model->setAttribute($k, $v);
}
return $model->save();
}
}

View File

@ -280,8 +280,10 @@ return [
'category' => '分类',
'tags' => '标签',
't_ids' => '标签',
'published_at' => '发布时间',
'published_at' => '定时发布',
'published_at_g' => '发布时间',
'is_enable' => '显示',
'is_recommend' => '推荐',
'sort' => '排序',
'appendixes' => '附件'
]