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

周末大部分功能开发提交

yemeishu 1 місяць тому
батько
коміт
e4338f1f06

+ 61 - 69
app/Filament/Pages/KnowledgeGraphManagement.php

@@ -22,25 +22,7 @@ class KnowledgeGraphManagement extends Page
     protected static ?string $title = '知识图谱管理';
     protected string $view = 'filament.pages.knowledge-graph-management';
 
-    public array $knowledgePoints = [];
-
-    public function mount(KnowledgeGraphService $service): void
-    {
-        $result = $service->listKnowledgePoints(1, 1000);
-        $this->knowledgePoints = $result['data'] ?? [];
-    }
-
-    public function edit(string $code): void
-    {
-        $this->mountAction('edit', ['code' => $code]);
-    }
-
-    public function delete(string $code): void
-    {
-        $this->mountAction('delete', ['code' => $code]);
-    }
-
-    protected function getHeaderActions(): array
+    protected function getActions(): array
     {
         return [
             Action::make('create')
@@ -169,63 +151,73 @@ class KnowledgeGraphManagement extends Page
                             ->persistent()
                             ->send();
                     }
+                }),
+            Action::make('edit')
+                ->label('编辑')
+                ->icon('heroicon-o-pencil-square')
+                ->color('warning')
+                ->modalHeading('编辑知识点')
+                ->modalDescription('修改知识点的基本信息和属性')
+                ->form([
+                    TextInput::make('cn_name')->label('中文名称')->required(),
+                    TextInput::make('en_name')->label('英文名称'),
+                    Select::make('phase')->label('学段')->options([
+                        '小学' => '小学', '初中' => '初中', '高中' => '高中'
+                    ])->required(),
+                    Select::make('grade')->label('年级')->options([
+                        7 => '七年级', 8 => '八年级', 9 => '九年级'
+                    ]),
+                    TextInput::make('category')->label('分类'),
+                    TextInput::make('importance')->label('重要性')->numeric(),
+                    Textarea::make('description')->label('描述'),
+                ])
+                ->fillForm(function (array $arguments, KnowledgeGraphService $service) {
+                    $code = $arguments['code'];
+                    $data = $service->getKnowledgePoint($code);
+                    return $data ?? [];
                 })
+                ->action(function (array $data, array $arguments, KnowledgeGraphService $service) {
+                    if ($service->updateKnowledgePoint($arguments['code'], $data)) {
+                        Notification::make()->title('更新成功')->success()->send();
+                        $this->mount($service);
+                    } else {
+                        Notification::make()->title('更新失败')->danger()->send();
+                    }
+                }),
+            Action::make('delete')
+                ->label('删除')
+                ->icon('heroicon-o-trash')
+                ->color('error')
+                ->requiresConfirmation()
+                ->modalHeading('删除知识点')
+                ->modalDescription('此操作将永久删除该知识点及其所有关联数据,此操作不可恢复!')
+                ->modalSubmitActionLabel('确认删除')
+                ->action(function (array $arguments, KnowledgeGraphService $service) {
+                    if ($service->deleteKnowledgePoint($arguments['code'])) {
+                        Notification::make()->title('删除成功')->success()->send();
+                        $this->mount($service);
+                    } else {
+                        Notification::make()->title('删除失败')->danger()->send();
+                    }
+                }),
         ];
     }
 
-    public function editAction(): Action
+    public array $knowledgePoints = [];
+
+    public function mount(KnowledgeGraphService $service): void
+    {
+        $result = $service->listKnowledgePoints(1, 1000);
+        $this->knowledgePoints = $result['data'] ?? [];
+    }
+
+    public function edit(string $code): void
     {
-        return Action::make('edit')
-            ->label('编辑')
-            ->icon('heroicon-o-pencil-square')
-            ->color('warning')
-            ->modalHeading('编辑知识点')
-            ->modalDescription('修改知识点的基本信息和属性')
-            ->form([
-                TextInput::make('cn_name')->label('中文名称')->required(),
-                TextInput::make('en_name')->label('英文名称'),
-                Select::make('phase')->label('学段')->options([
-                    '小学' => '小学', '初中' => '初中', '高中' => '高中'
-                ])->required(),
-                Select::make('grade')->label('年级')->options([
-                    7 => '七年级', 8 => '八年级', 9 => '九年级'
-                ]),
-                TextInput::make('category')->label('分类'),
-                TextInput::make('importance')->label('重要性')->numeric(),
-                Textarea::make('description')->label('描述'),
-            ])
-            ->fillForm(function (array $arguments, KnowledgeGraphService $service) {
-                $code = $arguments['code'];
-                $data = $service->getKnowledgePoint($code);
-                return $data ?? [];
-            })
-            ->action(function (array $data, array $arguments, KnowledgeGraphService $service) {
-                if ($service->updateKnowledgePoint($arguments['code'], $data)) {
-                    Notification::make()->title('更新成功')->success()->send();
-                    $this->mount($service);
-                } else {
-                    Notification::make()->title('更新失败')->danger()->send();
-                }
-            });
+        $this->mountAction('edit', ['code' => $code]);
     }
 
-    public function deleteAction(): Action
+    public function delete(string $code): void
     {
-        return Action::make('delete')
-            ->label('删除')
-            ->icon('heroicon-o-trash')
-            ->color('error')
-            ->requiresConfirmation()
-            ->modalHeading('删除知识点')
-            ->modalDescription('此操作将永久删除该知识点及其所有关联数据,此操作不可恢复!')
-            ->modalConfirmButtonLabel('确认删除')
-            ->action(function (array $arguments, KnowledgeGraphService $service) {
-                if ($service->deleteKnowledgePoint($arguments['code'])) {
-                    Notification::make()->title('删除成功')->success()->send();
-                    $this->mount($service);
-                } else {
-                    Notification::make()->title('删除失败')->danger()->send();
-                }
-            });
+        $this->mountAction('delete', ['code' => $code]);
     }
 }

+ 4 - 4
resources/views/filament/pages/knowledge-graph-management.blade.php

@@ -28,7 +28,7 @@
                     </div>
                 </div>
                 <div class="stat-title">知识点总数</div>
-                <div class="stat-value text-primary text-3xl">{{ is_array($knowledgePoints) ? count($knowledgePoints) : 0 }}</div>
+                <div class="stat-value text-primary text-3xl">{{ is_array($this->knowledgePoints) ? count($this->knowledgePoints) : 0 }}</div>
                 <div class="stat-desc flex items-center gap-2">
                     <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-success" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                         <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
@@ -48,7 +48,7 @@
                     </div>
                 </div>
                 <div class="stat-title">学段覆盖</div>
-                <div class="stat-value text-secondary text-3xl">{{ is_array($knowledgePoints) ? collect($knowledgePoints)->pluck('phase')->unique()->count() : 0 }}</div>
+                <div class="stat-value text-secondary text-3xl">{{ is_array($this->knowledgePoints) ? collect($this->knowledgePoints)->pluck('phase')->unique()->count() : 0 }}</div>
                 <div class="stat-desc flex items-center gap-2">
                     <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-info" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                         <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" />
@@ -68,7 +68,7 @@
                     </div>
                 </div>
                 <div class="stat-title">学科分类</div>
-                <div class="stat-value text-accent text-3xl">{{ is_array($knowledgePoints) ? collect($knowledgePoints)->pluck('category')->unique()->count() : 0 }}</div>
+                <div class="stat-value text-accent text-3xl">{{ is_array($this->knowledgePoints) ? collect($this->knowledgePoints)->pluck('category')->unique()->count() : 0 }}</div>
                 <div class="stat-desc flex items-center gap-2">
                     <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 text-warning" fill="none" viewBox="0 0 24 24" stroke="currentColor">
                         <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
@@ -113,7 +113,7 @@
                     </tr>
                 </thead>
                 <tbody>
-                    @forelse($knowledgePoints as $point)
+                    @forelse($this->knowledgePoints as $point)
                     <tr class="hover transition-all duration-200 hover:bg-base-200/50">
                         <td>
                             <div class="font-mono text-xs opacity-60 bg-base-200/50 px-2 py-1 rounded">