diff --git a/modules/Develop/Support/ModuleInstall.php b/modules/Develop/Support/ModuleInstall.php
index e903388..0d47ab4 100644
--- a/modules/Develop/Support/ModuleInstall.php
+++ b/modules/Develop/Support/ModuleInstall.php
@@ -5,6 +5,7 @@ namespace Modules\Develop\Support;
use Catch\CatchAdmin;
use Catch\Exceptions\FailedException;
use Catch\Facade\Zipper;
+use Illuminate\Support\Facades\File;
/**
* module install
@@ -63,5 +64,7 @@ class ModuleInstall
$zipRepository->getArchive()->extractTo(CatchAdmin::getModulePath($title));
$this->installWithTitle($title);
+
+ File::delete($zip);
}
}
diff --git a/modules/Permissions/Models/Permissions.php b/modules/Permissions/Models/Permissions.php
index 238600a..2130799 100644
--- a/modules/Permissions/Models/Permissions.php
+++ b/modules/Permissions/Models/Permissions.php
@@ -7,6 +7,7 @@ namespace Modules\Permissions\Models;
use Catch\Base\CatchModel as Model;
use Catch\CatchAdmin;
use Catch\Enums\Status;
+use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Modules\Permissions\Enums\MenuStatus;
use Modules\Permissions\Enums\MenuType;
@@ -34,19 +35,19 @@ class Permissions extends Model
{
protected $table = 'permissions';
- protected $fillable = ['id', 'parent_id', 'permission_name', 'route', 'icon', 'module', 'permission_mark', 'component', 'redirect', 'keepalive', 'type', 'hidden', 'sort', 'creator_id', 'created_at', 'updated_at', 'deleted_at'];
+ protected $fillable = ['id', 'parent_id', 'permission_name', 'route', 'icon', 'module', 'permission_mark', 'component', 'redirect', 'keepalive', 'type', 'hidden', 'is_inner', 'sort', 'creator_id', 'created_at', 'updated_at', 'deleted_at'];
/**
* @var array
*/
- protected array $fields = ['id','parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','hidden','sort','created_at','updated_at'];
+ protected array $fields = ['id','parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','hidden','is_inner','sort','created_at','updated_at'];
protected bool $isPaginate = false;
/**
* @var array
*/
- protected array $form = ['parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','hidden','sort'];
+ protected array $form = ['parent_id','permission_name','route','icon','module','permission_mark','component','redirect','keepalive','type','is_inner', 'hidden','sort'];
/**
* @var array
@@ -89,6 +90,17 @@ class Permissions extends Model
'status' => MenuStatus::class
];
+ /**
+ * is inner
+ *
+ * @return Attribute
+ */
+ public function isInner(): Attribute
+ {
+ return Attribute::make(
+ get: fn($value) => $value == 1
+ );
+ }
/**
* is hidden
diff --git a/modules/Permissions/Providers/Installer.php b/modules/Permissions/Providers/Installer.php
index 2b79edb..d82aa1f 100644
--- a/modules/Permissions/Providers/Installer.php
+++ b/modules/Permissions/Providers/Installer.php
@@ -10,8 +10,9 @@ class Installer extends ModuleInstaller
{
// TODO: Implement info() method.
return [
- 'name' => '权限管理',
- 'path' => 'Permissions',
+ 'title' => '权限管理',
+ 'name' => 'permissions',
+ 'path' => 'permissions',
'keywords' => '权限, 角色, 部门',
'description' => '权限管理模块',
'provider' => PermissionsServiceProvider::class
diff --git a/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php b/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php
index d723bfe..e34eccd 100644
--- a/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php
+++ b/modules/Permissions/database/migrations/2022_12_07_103318_create_permissions.php
@@ -26,10 +26,11 @@ return new class () extends Migration {
$table->string('permission_mark', 100)->default('')->comment('权限标识,使用 @ 分割');
$table->string('component')->comment('组件');
$table->string('redirect')->nullable()->comment('跳转地址');
- $table->tinyInteger('keepalive')->default('1')->comment('1 缓存 2 不缓存');
- $table->tinyInteger('type')->default('1')->comment('1 目录 2 菜单 3 按钮');
- $table->tinyInteger('hidden')->default('1')->comment('1 显示 2 隐藏');
- $table->integer('sort')->default('1')->comment('排序');
+ $table->tinyInteger('keepalive')->default(1)->comment('1 缓存 2 不缓存');
+ $table->tinyInteger('type')->default(1)->comment('1 目录 2 菜单 3 按钮');
+ $table->tinyInteger('is_inner')->default(2)->comment('1 是 2 否');
+ $table->tinyInteger('hidden')->default(1)->comment('1 显示 2 隐藏');
+ $table->integer('sort')->default(1)->comment('排序');
$table->creatorId();
$table->createdAt();
$table->updatedAt();
diff --git a/modules/Permissions/database/seeder/PermissionsMenusSeeder.php b/modules/Permissions/database/seeder/PermissionsMenusSeeder.php
new file mode 100644
index 0000000..27bde15
--- /dev/null
+++ b/modules/Permissions/database/seeder/PermissionsMenusSeeder.php
@@ -0,0 +1,601 @@
+menus();
+
+ importTreeData($menus, 'permissions');
+ }
+
+
+ public function menus(): array
+ {
+ return array (
+ 0 =>
+ array (
+ 'id' => 1,
+ 'parent_id' => 0,
+ 'permission_name' => '权限管理',
+ 'route' => '/permission',
+ 'icon' => 'arrow-down-on-square-stack',
+ 'module' => 'permissions',
+ 'permission_mark' => '',
+ 'component' => '/admin/layout/index.vue',
+ 'redirect' => NULL,
+ 'keepalive' => 1,
+ 'type' => 1,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 0,
+ 'created_at' => 1670579928,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ 'children' =>
+ array (
+ 0 =>
+ array (
+ 'id' => 2,
+ 'parent_id' => 1,
+ 'permission_name' => '角色管理',
+ 'route' => 'roles',
+ 'icon' => 'arrow-left-circle',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Roles',
+ 'component' => '/Permissions/views/roles/index.vue',
+ 'redirect' => NULL,
+ 'keepalive' => 1,
+ 'type' => 2,
+ 'hidden' => 1,
+ 'sort' => 6,
+ 'creator_id' => 0,
+ 'created_at' => 1670579968,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ 'children' =>
+ array (
+ 0 =>
+ array (
+ 'id' => 53,
+ 'parent_id' => 2,
+ 'permission_name' => '列表',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Roles@index',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671526858,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 1 =>
+ array (
+ 'id' => 54,
+ 'parent_id' => 2,
+ 'permission_name' => '新增',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Roles@store',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 2,
+ 'creator_id' => 1,
+ 'created_at' => 1671526858,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 2 =>
+ array (
+ 'id' => 55,
+ 'parent_id' => 2,
+ 'permission_name' => '读取',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Roles@show',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 3,
+ 'creator_id' => 1,
+ 'created_at' => 1671526858,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 3 =>
+ array (
+ 'id' => 56,
+ 'parent_id' => 2,
+ 'permission_name' => '更新',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Roles@update',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 4,
+ 'creator_id' => 1,
+ 'created_at' => 1671526858,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 4 =>
+ array (
+ 'id' => 57,
+ 'parent_id' => 2,
+ 'permission_name' => '删除',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Roles@destroy',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 5,
+ 'creator_id' => 1,
+ 'created_at' => 1671526858,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ ),
+ ),
+ 1 =>
+ array (
+ 'id' => 3,
+ 'parent_id' => 1,
+ 'permission_name' => '菜单管理',
+ 'route' => 'permissions',
+ 'icon' => 'finger-print',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Permissions',
+ 'component' => '/Permissions/views/permissions/index.vue',
+ 'redirect' => NULL,
+ 'keepalive' => 1,
+ 'type' => 2,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 0,
+ 'created_at' => 1670641371,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ 'children' =>
+ array (
+ 0 =>
+ array (
+ 'id' => 27,
+ 'parent_id' => 3,
+ 'permission_name' => '列表',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Permissions@index',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671524755,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 1 =>
+ array (
+ 'id' => 28,
+ 'parent_id' => 3,
+ 'permission_name' => '新增',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Permissions@store',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 2,
+ 'creator_id' => 1,
+ 'created_at' => 1671524755,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 2 =>
+ array (
+ 'id' => 29,
+ 'parent_id' => 3,
+ 'permission_name' => '读取',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Permissions@show',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 3,
+ 'creator_id' => 1,
+ 'created_at' => 1671524755,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 3 =>
+ array (
+ 'id' => 30,
+ 'parent_id' => 3,
+ 'permission_name' => '更新',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Permissions@update',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 4,
+ 'creator_id' => 1,
+ 'created_at' => 1671524756,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 4 =>
+ array (
+ 'id' => 31,
+ 'parent_id' => 3,
+ 'permission_name' => '删除',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Permissions@destroy',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 5,
+ 'creator_id' => 1,
+ 'created_at' => 1671524756,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 5 =>
+ array (
+ 'id' => 32,
+ 'parent_id' => 3,
+ 'permission_name' => '禁用/启用',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Permissions@enable',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 6,
+ 'creator_id' => 1,
+ 'created_at' => 1671524756,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ ),
+ ),
+ 2 =>
+ array (
+ 'id' => 4,
+ 'parent_id' => 1,
+ 'permission_name' => '岗位管理',
+ 'route' => 'jobs',
+ 'icon' => 'globe-americas',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Jobs',
+ 'component' => '/Permissions/views/jobs/index.vue',
+ 'redirect' => NULL,
+ 'keepalive' => 1,
+ 'type' => 2,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 0,
+ 'created_at' => 1670641399,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ 'children' =>
+ array (
+ 0 =>
+ array (
+ 'id' => 21,
+ 'parent_id' => 4,
+ 'permission_name' => '列表',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Jobs@index',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671524747,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 1 =>
+ array (
+ 'id' => 22,
+ 'parent_id' => 4,
+ 'permission_name' => '新增',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Jobs@store',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 2,
+ 'creator_id' => 1,
+ 'created_at' => 1671524747,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 2 =>
+ array (
+ 'id' => 23,
+ 'parent_id' => 4,
+ 'permission_name' => '读取',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Jobs@show',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 3,
+ 'creator_id' => 1,
+ 'created_at' => 1671524747,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 3 =>
+ array (
+ 'id' => 24,
+ 'parent_id' => 4,
+ 'permission_name' => '更新',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Jobs@update',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 4,
+ 'creator_id' => 1,
+ 'created_at' => 1671524747,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 4 =>
+ array (
+ 'id' => 25,
+ 'parent_id' => 4,
+ 'permission_name' => '删除',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Jobs@destroy',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 5,
+ 'creator_id' => 1,
+ 'created_at' => 1671524747,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 5 =>
+ array (
+ 'id' => 26,
+ 'parent_id' => 4,
+ 'permission_name' => '禁用/启用',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Jobs@enable',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 6,
+ 'creator_id' => 1,
+ 'created_at' => 1671524747,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ ),
+ ),
+ 3 =>
+ array (
+ 'id' => 5,
+ 'parent_id' => 1,
+ 'permission_name' => '部门管理',
+ 'route' => 'departments',
+ 'icon' => 'table-cells',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Departments',
+ 'component' => '/Permissions/views/departments/index.vue',
+ 'redirect' => NULL,
+ 'keepalive' => 1,
+ 'type' => 2,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 0,
+ 'created_at' => 1670641426,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ 'children' =>
+ array (
+ 0 =>
+ array (
+ 'id' => 12,
+ 'parent_id' => 5,
+ 'permission_name' => '列表',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Departments@index',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671501850,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 1 =>
+ array (
+ 'id' => 13,
+ 'parent_id' => 5,
+ 'permission_name' => '新增',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Departments@store',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671501861,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 2 =>
+ array (
+ 'id' => 14,
+ 'parent_id' => 5,
+ 'permission_name' => '读取',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Departments@show',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671501872,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 3 =>
+ array (
+ 'id' => 15,
+ 'parent_id' => 5,
+ 'permission_name' => '更新',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Departments@update',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671517311,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 4 =>
+ array (
+ 'id' => 16,
+ 'parent_id' => 5,
+ 'permission_name' => '删除',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Departments@destroy',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 1,
+ 'creator_id' => 1,
+ 'created_at' => 1671517324,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ 5 =>
+ array (
+ 'id' => 17,
+ 'parent_id' => 5,
+ 'permission_name' => '禁用/启用',
+ 'route' => '',
+ 'icon' => '',
+ 'module' => 'permissions',
+ 'permission_mark' => 'Departments@enable',
+ 'component' => '',
+ 'redirect' => '',
+ 'keepalive' => 1,
+ 'type' => 3,
+ 'hidden' => 1,
+ 'sort' => 6,
+ 'creator_id' => 1,
+ 'created_at' => 1671524493,
+ 'updated_at' => 1672798090,
+ 'deleted_at' => 0,
+ ),
+ ),
+ ),
+ ),
+ ),
+);
+ }
+};
diff --git a/modules/Permissions/views/permissions/form/create.vue b/modules/Permissions/views/permissions/form/create.vue
index f39013d..a8e9d78 100644
--- a/modules/Permissions/views/permissions/form/create.vue
+++ b/modules/Permissions/views/permissions/form/create.vue
@@ -32,6 +32,20 @@