diff --git a/agent/app/api/v2/quick_directory.go b/agent/app/api/v2/quick_directory.go new file mode 100644 index 000000000..13bd4f0f2 --- /dev/null +++ b/agent/app/api/v2/quick_directory.go @@ -0,0 +1,84 @@ +package v2 + +import ( + "github.com/1Panel-dev/1Panel/agent/app/api/v2/helper" + "github.com/1Panel-dev/1Panel/agent/app/dto" + "github.com/gin-gonic/gin" +) + +// @Tags Dashboard +// @Summary List quick directories +// @Success 200 {array} model.QuickDirectory +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /dashboard/quick/directory [get] +func (b *BaseApi) ListQuickDirectories(c *gin.Context) { + items, err := dashboardService.ListQuickDirectories() + if err != nil { + helper.InternalServer(c, err) + return + } + helper.SuccessWithData(c, items) +} + +// @Tags Dashboard +// @Summary Create quick directory +// @Accept json +// @Param request body dto.QuickDirectoryCreate true "request" +// @Success 200 +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /dashboard/quick/directory [post] +func (b *BaseApi) CreateQuickDirectory(c *gin.Context) { + var req dto.QuickDirectoryCreate + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + item, err := dashboardService.CreateQuickDirectory(req) + if err != nil { + helper.InternalServer(c, err) + return + } + helper.SuccessWithData(c, item) +} + +// @Tags Dashboard +// @Summary Update quick directory +// @Accept json +// @Param request body dto.QuickDirectoryUpdate true "request" +// @Success 200 +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /dashboard/quick/directory/update [post] +func (b *BaseApi) UpdateQuickDirectory(c *gin.Context) { + var req dto.QuickDirectoryUpdate + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + item, err := dashboardService.UpdateQuickDirectory(req) + if err != nil { + helper.InternalServer(c, err) + return + } + helper.SuccessWithData(c, item) +} + +// @Tags Dashboard +// @Summary Delete quick directory +// @Accept json +// @Param request body dto.QuickDirectoryDelete true "request" +// @Success 200 +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /dashboard/quick/directory/del [post] +func (b *BaseApi) DeleteQuickDirectory(c *gin.Context) { + var req dto.QuickDirectoryDelete + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + if err := dashboardService.DeleteQuickDirectory(req); err != nil { + helper.InternalServer(c, err) + return + } + helper.Success(c) +} diff --git a/agent/app/dto/dashboard.go b/agent/app/dto/dashboard.go index 0e36e3178..78596986e 100644 --- a/agent/app/dto/dashboard.go +++ b/agent/app/dto/dashboard.go @@ -31,7 +31,27 @@ type DashboardBase struct { } type ChangeQuicks struct { - Quicks []QuickJump `json:"quicks"` + Quicks []QuickVisibility `json:"quicks" validate:"required,dive"` +} + +type QuickVisibility struct { + ID uint `json:"id" validate:"required"` + IsShow bool `json:"isShow"` +} + +type QuickDirectoryCreate struct { + Path string `json:"path" validate:"required"` + Alias string `json:"alias"` +} + +type QuickDirectoryDelete struct { + ID uint `json:"id" validate:"required"` + Legacy bool `json:"legacy"` +} + +type QuickDirectoryUpdate struct { + QuickDirectoryDelete + QuickDirectoryCreate } type QuickJump struct { diff --git a/agent/app/model/app_launcher.go b/agent/app/model/app_launcher.go index a53a8f898..3b2db616a 100644 --- a/agent/app/model/app_launcher.go +++ b/agent/app/model/app_launcher.go @@ -5,6 +5,13 @@ type AppLauncher struct { Key string `json:"key"` } +type QuickDirectory struct { + BaseModel + Path string `json:"path"` + Alias string `json:"alias"` + Legacy bool `json:"legacy" gorm:"-"` +} + type QuickJump struct { BaseModel Name string `json:"name"` diff --git a/agent/app/repo/app_launcher.go b/agent/app/repo/app_launcher.go index dab6c6ce6..1bd575707 100644 --- a/agent/app/repo/app_launcher.go +++ b/agent/app/repo/app_launcher.go @@ -3,6 +3,7 @@ package repo import ( "github.com/1Panel-dev/1Panel/agent/app/model" "github.com/1Panel-dev/1Panel/agent/global" + "gorm.io/gorm" ) type LauncherRepo struct{} @@ -17,6 +18,11 @@ type ILauncherRepo interface { GetQuickJump(opts ...DBOption) (model.QuickJump, error) ListQuickJump(withAll bool) []model.QuickJump UpdateQuicks(quicks []model.QuickJump) error + ListQuickDirectories() ([]model.QuickDirectory, error) + CountQuickDirectories() (int64, error) + CreateQuickDirectory(item *model.QuickDirectory) error + UpdateQuickDirectory(item *model.QuickDirectory) error + DeleteQuickDirectory(id uint, legacy bool) error } func NewILauncherRepo() ILauncherRepo { @@ -95,13 +101,73 @@ func (u *LauncherRepo) UpdateQuicks(quicks []model.QuickJump) error { for _, item := range quicks { if err := tx.Model(&model.QuickJump{}).Where("id = ?", item.ID).Updates(map[string]interface{}{ "is_show": item.IsShow, - "detail": item.Detail, - "alias": item.Alias, }).Error; err != nil { tx.Rollback() return err } } - tx.Commit() + return tx.Commit().Error +} + +// Legacy entries remain in the overview configuration until explicitly deleted. +func legacyQuickDirectories(db *gorm.DB) *gorm.DB { + return db.Model(&model.QuickJump{}).Where("name = ? AND is_show = ? AND detail <> ?", "File", true, "") +} + +func (u *LauncherRepo) ListQuickDirectories() ([]model.QuickDirectory, error) { + items := make([]model.QuickDirectory, 0) + if err := global.DB.Order("id ASC").Find(&items).Error; err != nil { + return nil, err + } + var quicks []model.QuickJump + if err := legacyQuickDirectories(global.DB).Order("id ASC").Find(&quicks).Error; err != nil { + return nil, err + } + for _, quick := range quicks { + items = append(items, model.QuickDirectory{BaseModel: quick.BaseModel, Path: quick.Detail, Alias: quick.Alias, Legacy: true}) + } + return items, nil +} +func (u *LauncherRepo) CountQuickDirectories() (int64, error) { + var count, legacyCount int64 + if err := global.DB.Model(&model.QuickDirectory{}).Count(&count).Error; err != nil { + return 0, err + } + if err := legacyQuickDirectories(global.DB).Count(&legacyCount).Error; err != nil { + return 0, err + } + return count + legacyCount, nil +} +func (u *LauncherRepo) CreateQuickDirectory(item *model.QuickDirectory) error { + return global.DB.Create(item).Error +} +func (u *LauncherRepo) UpdateQuickDirectory(item *model.QuickDirectory) error { + var result *gorm.DB + if item.Legacy { + result = legacyQuickDirectories(global.DB).Where("id = ?", item.ID).Updates(map[string]interface{}{"detail": item.Path, "alias": item.Alias}) + } else { + result = global.DB.Model(&model.QuickDirectory{}).Where("id = ?", item.ID).Updates(map[string]interface{}{"path": item.Path, "alias": item.Alias}) + } + if result.Error != nil { + return result.Error + } + if result.RowsAffected == 0 { + return gorm.ErrRecordNotFound + } + return nil +} +func (u *LauncherRepo) DeleteQuickDirectory(id uint, legacy bool) error { + var result *gorm.DB + if legacy { + result = legacyQuickDirectories(global.DB).Where("id = ?", id).Updates(map[string]interface{}{"detail": nil, "alias": nil}) + } else { + result = global.DB.Delete(&model.QuickDirectory{}, id) + } + if result.Error != nil { + return result.Error + } + if result.RowsAffected == 0 { + return gorm.ErrRecordNotFound + } return nil } diff --git a/agent/app/service/dashboard.go b/agent/app/service/dashboard.go index 49bf3e2d6..463c40472 100644 --- a/agent/app/service/dashboard.go +++ b/agent/app/service/dashboard.go @@ -43,6 +43,10 @@ type IDashboardService interface { LoadQuickOptions() []dto.QuickJump ChangeQuick(req dto.ChangeQuicks) error + ListQuickDirectories() ([]model.QuickDirectory, error) + CreateQuickDirectory(req dto.QuickDirectoryCreate) (*model.QuickDirectory, error) + UpdateQuickDirectory(req dto.QuickDirectoryUpdate) (*model.QuickDirectory, error) + DeleteQuickDirectory(req dto.QuickDirectoryDelete) error LoadAppLauncher(ctx *gin.Context) ([]dto.AppLauncher, error) ChangeShow(req dto.SettingUpdate) error @@ -397,16 +401,15 @@ func (u *DashboardService) LoadQuickOptions() []dto.QuickJump { } func (u *DashboardService) ChangeQuick(req dto.ChangeQuicks) error { showCount := 0 - var quicks []model.QuickJump + quicks := make([]model.QuickJump, 0, len(req.Quicks)) for _, item := range req.Quicks { - var quick model.QuickJump if item.IsShow { showCount++ } - if err := copier.Copy(&quick, &item); err != nil { - return err - } - quicks = append(quicks, quick) + quicks = append(quicks, model.QuickJump{ + BaseModel: model.BaseModel{ID: item.ID}, + IsShow: item.IsShow, + }) } if showCount == 0 { return buserr.New("ErrMinQuickJump") @@ -706,6 +709,13 @@ func loadQuickJump(base *dto.DashboardBase) { quicks := launcherRepo.ListQuickJump(false) for i := 0; i < len(quicks); i++ { switch quicks[i].Name { + case "File": + count, err := launcherRepo.CountQuickDirectories() + if err != nil { + global.LOG.Errorf("load quick directory count: %v", err) + } + quicks[i].Detail = fmt.Sprintf("%d", count) + quicks[i].Alias = "" case "Agent": quicks[i].Detail = fmt.Sprintf("%d", base.AgentNumber) case "Website": diff --git a/agent/app/service/quick_directory.go b/agent/app/service/quick_directory.go new file mode 100644 index 000000000..637cd1c92 --- /dev/null +++ b/agent/app/service/quick_directory.go @@ -0,0 +1,49 @@ +package service + +import ( + "strings" + + "github.com/1Panel-dev/1Panel/agent/app/dto" + "github.com/1Panel-dev/1Panel/agent/app/model" + "github.com/1Panel-dev/1Panel/agent/buserr" +) + +func (u *DashboardService) ListQuickDirectories() ([]model.QuickDirectory, error) { + return launcherRepo.ListQuickDirectories() +} + +func quickDirectoryValues(req dto.QuickDirectoryCreate) (model.QuickDirectory, error) { + item := model.QuickDirectory{Path: req.Path, Alias: strings.TrimSpace(req.Alias)} + if strings.TrimSpace(item.Path) == "" { + return item, buserr.WithDetail("ErrInvalidParams", "path is required", nil) + } + return item, nil +} + +func (u *DashboardService) CreateQuickDirectory(req dto.QuickDirectoryCreate) (*model.QuickDirectory, error) { + item, err := quickDirectoryValues(req) + if err != nil { + return nil, err + } + if err := launcherRepo.CreateQuickDirectory(&item); err != nil { + return nil, err + } + return &item, nil +} + +func (u *DashboardService) UpdateQuickDirectory(req dto.QuickDirectoryUpdate) (*model.QuickDirectory, error) { + item, err := quickDirectoryValues(req.QuickDirectoryCreate) + if err != nil { + return nil, err + } + item.ID = req.ID + item.Legacy = req.Legacy + if err := launcherRepo.UpdateQuickDirectory(&item); err != nil { + return nil, err + } + return &item, nil +} + +func (u *DashboardService) DeleteQuickDirectory(req dto.QuickDirectoryDelete) error { + return launcherRepo.DeleteQuickDirectory(req.ID, req.Legacy) +} diff --git a/agent/init/migration/migrate.go b/agent/init/migration/migrate.go index 8570a1937..a9febe020 100644 --- a/agent/init/migration/migrate.go +++ b/agent/init/migration/migrate.go @@ -115,6 +115,7 @@ func agentDBMigrations() []*gormigrate.Migration { migrations.AddMonitorSettings, migrations.AddVLLMRequestMetrics, migrations.AddVLLMSampleInterval, + migrations.AddQuickDirectory, } } diff --git a/agent/init/migration/migrations/init.go b/agent/init/migration/migrations/init.go index 0a80f3ed9..b5b821c2f 100644 --- a/agent/init/migration/migrations/init.go +++ b/agent/init/migration/migrations/init.go @@ -1888,3 +1888,10 @@ var AddVLLMSampleInterval = &gormigrate.Migration{ return global.VLLMMonitorDB.AutoMigrate(&model.MonitorVLLM{}) }, } + +var AddQuickDirectory = &gormigrate.Migration{ + ID: "20261016-add-quick-directory", + Migrate: func(tx *gorm.DB) error { + return tx.AutoMigrate(&model.QuickDirectory{}) + }, +} diff --git a/agent/router/ro_dashboard.go b/agent/router/ro_dashboard.go index 959bd53d1..4f4cbd85e 100644 --- a/agent/router/ro_dashboard.go +++ b/agent/router/ro_dashboard.go @@ -14,6 +14,10 @@ func (s *DashboardRouter) InitRouter(Router *gin.RouterGroup) { cmdRouter.GET("/base/os", baseApi.LoadDashboardOsInfo) cmdRouter.GET("/quick/option", baseApi.LoadQuickOption) cmdRouter.POST("/quick/change", baseApi.UpdateQuickJump) + cmdRouter.GET("/quick/directory", baseApi.ListQuickDirectories) + cmdRouter.POST("/quick/directory", baseApi.CreateQuickDirectory) + cmdRouter.POST("/quick/directory/update", baseApi.UpdateQuickDirectory) + cmdRouter.POST("/quick/directory/del", baseApi.DeleteQuickDirectory) cmdRouter.GET("/app/launcher", baseApi.LoadAppLauncher) cmdRouter.POST("/app/launcher/show", baseApi.UpdateAppLauncher) cmdRouter.POST("/app/launcher/option", baseApi.LoadAppLauncherOption) diff --git a/frontend/src/api/interface/dashboard.ts b/frontend/src/api/interface/dashboard.ts index c2ed24c67..a33f02f8f 100644 --- a/frontend/src/api/interface/dashboard.ts +++ b/frontend/src/api/interface/dashboard.ts @@ -8,6 +8,12 @@ export namespace Dashboard { diskSize: number; } + export interface QuickDirectory { + id: number; + legacy?: boolean; + path: string; + alias: string; + } export interface QuickJump { id: number; name: string; diff --git a/frontend/src/api/modules/dashboard.ts b/frontend/src/api/modules/dashboard.ts index 9b3153675..a6e4d2ea5 100644 --- a/frontend/src/api/modules/dashboard.ts +++ b/frontend/src/api/modules/dashboard.ts @@ -8,7 +8,7 @@ export const loadOsInfo = () => { export const loadQuickOption = () => { return http.get>(`/dashboard/quick/option`); }; -export const changeQuick = (quicks: Array) => { +export const changeQuick = (quicks: Array>) => { return http.post(`/dashboard/quick/change`, { quicks: quicks }); }; export const loadAppLauncher = () => { @@ -48,3 +48,11 @@ export const loadTopMem = () => { export const systemRestart = (operation: string) => { return http.post(`/dashboard/system/restart/${operation}`); }; + +export const loadQuickDirectories = () => http.get('/dashboard/quick/directory'); +export const createQuickDirectory = (data: Omit) => + http.post('/dashboard/quick/directory', data); +export const updateQuickDirectory = (data: Dashboard.QuickDirectory) => + http.post('/dashboard/quick/directory/update', data); +export const deleteQuickDirectory = (id: number, legacy = false) => + http.post('/dashboard/quick/directory/del', { id, legacy }); diff --git a/frontend/src/components/file-list/index.vue b/frontend/src/components/file-list/index.vue index 0d2b69b40..58cc2069d 100644 --- a/frontend/src/components/file-list/index.vue +++ b/frontend/src/components/file-list/index.vue @@ -196,7 +196,7 @@ const favorites = ref([]); const { searchableStatus, searchablePath, searchableInputRef, searchableInputBlur } = useSearchableForSelect(paths); const oldUrl = ref(''); -const em = defineEmits(['choose']); +const em = defineEmits(['choose', 'close']); const form = reactive({ path: '/', @@ -245,6 +245,7 @@ const handleClose = () => { open.value = false; selectRow.value = { path: '', name: '' }; selectRows.value = []; + em('close'); }; const openPage = () => { diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index 023182701..2e6e3cfb8 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -494,6 +494,7 @@ const message = { recommend: 'Recommended', dir: 'Directory', alias: 'Alias', + quickDirDelete: 'Delete ({0})?', quickDir: 'Quick Access', minQuickJump: 'Add at least one quick access entry', maxQuickJump: 'You can add up to four quick access entries', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 6cf8923e7..b85761bd8 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -493,6 +493,7 @@ const message = { home: { recommend: 'Recomendado', dir: 'Directorio', + quickDirDelete: '¿Confirmar la eliminación de ({0})?', quickDir: 'Acceso rápido', minQuickJump: 'Agrega al menos una entrada de acceso rápido', maxQuickJump: 'Puedes agregar hasta cuatro entradas de acceso rápido', diff --git a/frontend/src/lang/modules/fa.ts b/frontend/src/lang/modules/fa.ts index 993521945..6be28aaf7 100644 --- a/frontend/src/lang/modules/fa.ts +++ b/frontend/src/lang/modules/fa.ts @@ -489,6 +489,7 @@ const message = { recommend: 'پیشنهادی', dir: 'دایرکتوری', alias: 'نام مستعار', + quickDirDelete: 'حذف ({0}) را تأیید می‌کنید؟', quickDir: 'دسترسی سریع', minQuickJump: 'حداقل یک ورودی دسترسی سریع اضافه کنید', maxQuickJump: 'می‌توانید حداکثر چهار ورودی دسترسی سریع اضافه کنید', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 5a2235ad8..6aee59e2a 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -492,6 +492,7 @@ const message = { recommend: 'おすすめ', dir: 'ディレクトリ', alias: 'エイリアス', + quickDirDelete: '({0})を削除しますか?', quickDir: 'クイックアクセス', minQuickJump: 'クイックアクセス項目を1つ以上追加してください', maxQuickJump: '最大4件のクイックアクセス項目を追加できます', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 9103a3725..e8920f737 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -487,6 +487,7 @@ const message = { recommend: '추천', dir: '디렉토리', alias: '별칭', + quickDirDelete: '({0})을(를) 삭제하시겠습니까?', quickDir: '빠른 액세스', minQuickJump: '최소 하나의 빠른 액세스 항목을 추가하세요', maxQuickJump: '빠른 액세스를 최대 4개까지 추가할 수 있습니다', diff --git a/frontend/src/lang/modules/lo.ts b/frontend/src/lang/modules/lo.ts index 876254904..7854a763b 100644 --- a/frontend/src/lang/modules/lo.ts +++ b/frontend/src/lang/modules/lo.ts @@ -487,6 +487,7 @@ const message = { recommend: 'ແນະນຳ', dir: 'ໄດເຣັກທໍຣີ', alias: 'ຊື່ຫຼິ້ນ', + quickDirDelete: 'ຢືນຢັນການລຶບ ({0}) ຫຼືບໍ່?', quickDir: 'ເຂົ້າເຖິງດ່ວນ', minQuickJump: 'ເພີ່ມການເຂົ້າເຖິງດ່ວນຢ່າງໜ້ອຍໜຶ່ງລາຍການ', maxQuickJump: 'ທ່ານສາມາດເພີ່ມການເຂົ້າເຖິງດ່ວນໄດ້ສູງສຸດສີ່ລາຍການ', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index be5a7c1f9..e33a1ec19 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -499,6 +499,7 @@ const message = { recommend: 'Disyorkan', dir: 'Direktori', alias: 'Alias', + quickDirDelete: 'Sahkan pemadaman ({0})?', quickDir: 'Akses Pantas', minQuickJump: 'Tambah sekurang-kurangnya satu entri akses pantas', maxQuickJump: 'Anda boleh menambah sehingga empat entri akses pantas', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index ba1bc68fa..779bb7be6 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -492,6 +492,7 @@ const message = { recommend: 'Recomendado', dir: 'Diretório', alias: 'Apelido', + quickDirDelete: 'Confirmar a exclusão de ({0})?', quickDir: 'Acesso rápido', minQuickJump: 'Adicione pelo menos uma entrada de acesso rápido', maxQuickJump: 'Você pode adicionar até quatro entradas de acesso rápido', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 197493503..5f5a9afd6 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -491,6 +491,7 @@ const message = { recommend: 'Рекомендуемое', dir: 'Каталог', alias: 'Псевдоним', + quickDirDelete: 'Подтвердить удаление ({0})?', quickDir: 'Быстрый доступ', minQuickJump: 'Добавьте хотя бы одну запись быстрого доступа', maxQuickJump: 'Вы можете добавить до четырех записей быстрого доступа', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 674e015a9..6702bbdad 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -495,6 +495,7 @@ const message = { recommend: 'Önerilen', dir: 'Dizin', alias: 'Takma Ad', + quickDirDelete: '({0}) silinsin mi?', quickDir: 'Hızlı Erişim', minQuickJump: 'En az bir hızlı erişim girdisi ekleyin', maxQuickJump: 'En fazla dört hızlı erişim girdisi ekleyebilirsiniz', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index a7e060458..bc93f5225 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -473,6 +473,7 @@ const message = { recommend: '推薦', dir: '目錄', alias: '別名', + quickDirDelete: '確定刪除({0})', quickDir: '快捷目錄', minQuickJump: '請至少設定一個快速跳轉入口', maxQuickJump: '最多可設定四個快速跳轉入口', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 4fd45d145..3ec432f11 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -473,6 +473,7 @@ const message = { recommend: '推荐', dir: '目录', alias: '别名', + quickDirDelete: '确定删除({0})', quickDir: '快捷目录', minQuickJump: '请至少设置一个快速跳转入口!', maxQuickJump: '最多可设置四个快速跳转入口!', diff --git a/frontend/src/views/home/index.vue b/frontend/src/views/home/index.vue index 56242b156..4202675d3 100644 --- a/frontend/src/views/home/index.vue +++ b/frontend/src/views/home/index.vue @@ -50,20 +50,12 @@ {{ $t(item.title, 2) }}
- - - {{ item.alias || item.detail.substring(0, 18) + '...' }} - - + { } }; +const updateQuickDirectoryCount = (count: number) => { + const item = baseInfo.value.quickJump.find((item) => item.name === 'File'); + if (item) item.detail = String(count); +}; + const quickJump = (item: any) => { - if (item.name === 'File') { - return routerToFileWithPath(item.detail); - } return routerToPath(item.router); }; diff --git a/frontend/src/views/home/quick/directories.vue b/frontend/src/views/home/quick/directories.vue new file mode 100644 index 000000000..11b65c8c4 --- /dev/null +++ b/frontend/src/views/home/quick/directories.vue @@ -0,0 +1,315 @@ + + + + + + diff --git a/frontend/src/views/home/quick/index.vue b/frontend/src/views/home/quick/index.vue index af833fe31..c53bc20ed 100644 --- a/frontend/src/views/home/quick/index.vue +++ b/frontend/src/views/home/quick/index.vue @@ -10,25 +10,6 @@ @@ -39,14 +20,12 @@ {{ $t('commons.button.confirm') }} -