Ver Fonte

修复用户安全密码管理页面枚举字段显示错误

- 修复Grid列表页面status字段的using()方法导致的TypeError错误
- 将using()方法改为display()方法,正确处理枚举对象作为数组键的问题
- 修复Show详情页面status字段的显示逻辑,确保枚举值正确转换
- 页面现在可以正常显示列表、详情和编辑功能
notfff há 7 meses atrás
pai
commit
ce59a3e2d0

+ 11 - 6
app/Module/User/AdminControllers/UserSecretPasswordController.php

@@ -57,11 +57,15 @@ class UserSecretPasswordController extends AdminController
 
             $grid->column('id', 'ID')->sortable();
             $grid->column('user_id', '用户ID')->sortable();
-            $grid->column('status', '状态')->using([
-                SECRET_PASSWORD_STATUS::BIND->value => '已绑定',
-                SECRET_PASSWORD_STATUS::UNBIND->value => '未绑定',
-                SECRET_PASSWORD_STATUS::WAIT_CHECK->value => '等待验证',
-            ])->label([
+            $grid->column('status', '状态')->display(function ($value) {
+                $statusMap = [
+                    SECRET_PASSWORD_STATUS::BIND->value => '已绑定',
+                    SECRET_PASSWORD_STATUS::UNBIND->value => '未绑定',
+                    SECRET_PASSWORD_STATUS::WAIT_CHECK->value => '等待验证',
+                ];
+                $statusValue = $value instanceof SECRET_PASSWORD_STATUS ? $value->value : $value;
+                return $statusMap[$statusValue] ?? '未知';
+            })->label([
                 SECRET_PASSWORD_STATUS::BIND->value => 'success',
                 SECRET_PASSWORD_STATUS::UNBIND->value => 'danger',
                 SECRET_PASSWORD_STATUS::WAIT_CHECK->value => 'warning',
@@ -108,7 +112,8 @@ class UserSecretPasswordController extends AdminController
                     SECRET_PASSWORD_STATUS::UNBIND->value => '未绑定',
                     SECRET_PASSWORD_STATUS::WAIT_CHECK->value => '等待验证',
                 ];
-                return $statusMap[$value] ?? '未知';
+                $statusValue = $value instanceof SECRET_PASSWORD_STATUS ? $value->value : $value;
+                return $statusMap[$statusValue] ?? '未知';
             });
             $show->field('secret_password', '安全密码')->as(function () {
                 return '******';