From adbf44a176b929e165506b7ef79f954142c3ebde Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Mon, 3 Mar 2025 16:18:47 +0800 Subject: [PATCH] fix: Fix issue where website group can still be deleted even if it contains other websites (#8049) --- agent/app/api/v2/entry.go | 1 + agent/app/api/v2/group.go | 96 ++++++++++ agent/app/dto/group.go | 29 +++ agent/app/model/group.go | 8 + agent/app/repo/group.go | 56 ++++++ agent/app/service/entry.go | 2 + agent/app/service/group.go | 87 +++++++++ agent/i18n/lang/en.yaml | 2 + agent/i18n/lang/ja.yaml | 2 + agent/i18n/lang/ko.yaml | 2 + agent/i18n/lang/ms.yml | 2 + agent/i18n/lang/pt-BR.yaml | 2 + agent/i18n/lang/ru.yaml | 2 + agent/i18n/lang/zh-Hant.yaml | 2 + agent/i18n/lang/zh.yaml | 2 + agent/init/migration/migrate.go | 1 + agent/init/migration/migrations/init.go | 11 ++ agent/router/common.go | 1 + agent/router/ro_group.go | 20 ++ core/app/repo/group.go | 6 +- core/init/migration/migrations/init.go | 10 +- frontend/src/api/modules/group.ts | 13 ++ .../src/components/agent-group/change.vue | 83 ++++++++ frontend/src/components/agent-group/index.vue | 179 ++++++++++++++++++ frontend/src/routers/index.ts | 3 + .../website/config/basic/other/index.vue | 4 +- frontend/src/views/website/website/index.vue | 6 +- 27 files changed, 619 insertions(+), 13 deletions(-) create mode 100644 agent/app/api/v2/group.go create mode 100644 agent/app/dto/group.go create mode 100644 agent/app/model/group.go create mode 100644 agent/app/repo/group.go create mode 100644 agent/app/service/group.go create mode 100644 agent/router/ro_group.go create mode 100644 frontend/src/components/agent-group/change.vue create mode 100644 frontend/src/components/agent-group/index.vue diff --git a/agent/app/api/v2/entry.go b/agent/app/api/v2/entry.go index 324c3100f..f6a100e26 100644 --- a/agent/app/api/v2/entry.go +++ b/agent/app/api/v2/entry.go @@ -67,4 +67,5 @@ var ( websiteCAService = service.NewIWebsiteCAService() taskService = service.NewITaskService() + groupService = service.NewIGroupService() ) diff --git a/agent/app/api/v2/group.go b/agent/app/api/v2/group.go new file mode 100644 index 000000000..6d8077872 --- /dev/null +++ b/agent/app/api/v2/group.go @@ -0,0 +1,96 @@ +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 System Group +// @Summary Create group +// @Accept json +// @Param request body dto.GroupCreate true "request" +// @Success 200 +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /agent/groups [post] +// @x-panel-log {"bodyKeys":["name","type"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"创建组 [name][type]","formatEN":"create group [name][type]"} +func (b *BaseApi) CreateGroup(c *gin.Context) { + var req dto.GroupCreate + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + + if err := groupService.Create(req); err != nil { + helper.InternalServer(c, err) + return + } + helper.SuccessWithOutData(c) +} + +// @Tags System Group +// @Summary Delete group +// @Accept json +// @Param request body dto.OperateByID true "request" +// @Success 200 +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /agent/groups/del [post] +// @x-panel-log {"bodyKeys":["id"],"paramKeys":[],"BeforeFunctions":[{"input_column":"id","input_value":"id","isList":false,"db":"groups","output_column":"name","output_value":"name"},{"input_column":"id","input_value":"id","isList":false,"db":"groups","output_column":"type","output_value":"type"}],"formatZH":"删除组 [type][name]","formatEN":"delete group [type][name]"} +func (b *BaseApi) DeleteGroup(c *gin.Context) { + var req dto.OperateByID + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + + if err := groupService.Delete(req.ID); err != nil { + helper.InternalServer(c, err) + return + } + helper.SuccessWithOutData(c) +} + +// @Tags System Group +// @Summary Update group +// @Accept json +// @Param request body dto.GroupUpdate true "request" +// @Success 200 +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /agent/groups/update [post] +// @x-panel-log {"bodyKeys":["name","type"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"更新组 [name][type]","formatEN":"update group [name][type]"} +func (b *BaseApi) UpdateGroup(c *gin.Context) { + var req dto.GroupUpdate + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + + if err := groupService.Update(req); err != nil { + helper.InternalServer(c, err) + return + } + helper.SuccessWithOutData(c) +} + +// @Tags System Group +// @Summary List groups +// @Accept json +// @Param request body dto.GroupSearch true "request" +// @Success 200 {array} dto.OperateByType +// @Security ApiKeyAuth +// @Security Timestamp +// @Router /agent/groups/search [post] +func (b *BaseApi) ListGroup(c *gin.Context) { + var req dto.OperateByType + if err := helper.CheckBindAndValidate(&req, c); err != nil { + return + } + + list, err := groupService.List(req) + if err != nil { + helper.InternalServer(c, err) + return + } + + helper.SuccessWithData(c, list) +} diff --git a/agent/app/dto/group.go b/agent/app/dto/group.go new file mode 100644 index 000000000..6e0e6d0c1 --- /dev/null +++ b/agent/app/dto/group.go @@ -0,0 +1,29 @@ +package dto + +type GroupCreate struct { + ID uint `json:"id"` + Name string `json:"name" validate:"required"` + Type string `json:"type" validate:"required"` +} + +type GroupSearch struct { + Type string `json:"type" validate:"required"` +} + +type GroupUpdate struct { + ID uint `json:"id"` + Name string `json:"name"` + Type string `json:"type" validate:"required"` + IsDefault bool `json:"isDefault"` +} + +type GroupInfo struct { + ID uint `json:"id"` + Name string `json:"name"` + Type string `json:"type"` + IsDefault bool `json:"isDefault"` +} + +type OperateByType struct { + Type string `json:"type"` +} diff --git a/agent/app/model/group.go b/agent/app/model/group.go new file mode 100644 index 000000000..c8999b703 --- /dev/null +++ b/agent/app/model/group.go @@ -0,0 +1,8 @@ +package model + +type Group struct { + BaseModel + IsDefault bool `json:"isDefault"` + Name string `json:"name"` + Type string `json:"type"` +} diff --git a/agent/app/repo/group.go b/agent/app/repo/group.go new file mode 100644 index 000000000..1a85e1f46 --- /dev/null +++ b/agent/app/repo/group.go @@ -0,0 +1,56 @@ +package repo + +import ( + "github.com/1Panel-dev/1Panel/agent/app/model" + "github.com/1Panel-dev/1Panel/agent/global" +) + +type GroupRepo struct{} + +type IGroupRepo interface { + Get(opts ...DBOption) (model.Group, error) + GetList(opts ...DBOption) ([]model.Group, error) + Create(group *model.Group) error + Update(id uint, vars map[string]interface{}) error + Delete(opts ...DBOption) error +} + +func NewIGroupRepo() IGroupRepo { + return &GroupRepo{} +} + +func (g *GroupRepo) Get(opts ...DBOption) (model.Group, error) { + var group model.Group + db := global.DB + for _, opt := range opts { + db = opt(db) + } + err := db.First(&group).Error + return group, err +} + +func (g *GroupRepo) GetList(opts ...DBOption) ([]model.Group, error) { + var groups []model.Group + db := global.DB.Model(&model.Group{}) + for _, opt := range opts { + db = opt(db) + } + err := db.Find(&groups).Error + return groups, err +} + +func (g *GroupRepo) Create(group *model.Group) error { + return global.DB.Create(group).Error +} + +func (g *GroupRepo) Update(id uint, vars map[string]interface{}) error { + return global.DB.Model(&model.Group{}).Where("id = ?", id).Updates(vars).Error +} + +func (g *GroupRepo) Delete(opts ...DBOption) error { + db := global.DB + for _, opt := range opts { + db = opt(db) + } + return db.Delete(&model.Group{}).Error +} diff --git a/agent/app/service/entry.go b/agent/app/service/entry.go index 2d2f6210b..e426692a2 100644 --- a/agent/app/service/entry.go +++ b/agent/app/service/entry.go @@ -45,4 +45,6 @@ var ( favoriteRepo = repo.NewIFavoriteRepo() taskRepo = repo.NewITaskRepo() + + groupRepo = repo.NewIGroupRepo() ) diff --git a/agent/app/service/group.go b/agent/app/service/group.go new file mode 100644 index 000000000..95422c449 --- /dev/null +++ b/agent/app/service/group.go @@ -0,0 +1,87 @@ +package service + +import ( + "github.com/1Panel-dev/1Panel/agent/app/dto" + "github.com/1Panel-dev/1Panel/agent/app/model" + "github.com/1Panel-dev/1Panel/agent/app/repo" + "github.com/1Panel-dev/1Panel/agent/buserr" + "github.com/jinzhu/copier" +) + +type GroupService struct{} + +type IGroupService interface { + List(req dto.OperateByType) ([]dto.GroupInfo, error) + Create(req dto.GroupCreate) error + Update(req dto.GroupUpdate) error + Delete(id uint) error +} + +func NewIGroupService() IGroupService { + return &GroupService{} +} + +func (u *GroupService) List(req dto.OperateByType) ([]dto.GroupInfo, error) { + options := []repo.DBOption{ + repo.WithOrderBy("is_default desc"), + repo.WithOrderBy("created_at desc"), + } + if len(req.Type) != 0 { + options = append(options, repo.WithByType(req.Type)) + } + var ( + groups []model.Group + err error + ) + groups, err = groupRepo.GetList(options...) + if err != nil { + return nil, buserr.New("ErrRecordNotFound") + } + var dtoUsers []dto.GroupInfo + for _, group := range groups { + var item dto.GroupInfo + if err := copier.Copy(&item, &group); err != nil { + return nil, buserr.WithDetail("ErrStructTransform", err.Error(), nil) + } + dtoUsers = append(dtoUsers, item) + } + return dtoUsers, err +} + +func (u *GroupService) Create(req dto.GroupCreate) error { + group, _ := groupRepo.Get(repo.WithByName(req.Name), repo.WithByType(req.Type)) + if group.ID != 0 { + return buserr.New("ErrRecordExist") + } + if err := copier.Copy(&group, &req); err != nil { + return buserr.WithDetail("ErrStructTransform", err.Error(), nil) + } + if err := groupRepo.Create(&group); err != nil { + return err + } + return nil +} + +func (u *GroupService) Delete(id uint) error { + group, _ := groupRepo.Get(repo.WithByID(id)) + if group.ID == 0 { + return buserr.New("ErrRecordNotFound") + } + if group.IsDefault { + return buserr.New("ErrGroupIsDefault") + } + if group.Type == "website" { + websites, _ := websiteRepo.List(websiteRepo.WithGroupID(group.ID)) + if len(websites) > 0 { + return buserr.New("ErrGroupIsInWebsiteUse") + } + } + return groupRepo.Delete(repo.WithByID(id)) +} + +func (u *GroupService) Update(req dto.GroupUpdate) error { + upMap := make(map[string]interface{}) + upMap["name"] = req.Name + upMap["is_default"] = req.IsDefault + return groupRepo.Update(req.ID, upMap) +} diff --git a/agent/i18n/lang/en.yaml b/agent/i18n/lang/en.yaml index b3a17f7d6..cba0909ad 100644 --- a/agent/i18n/lang/en.yaml +++ b/agent/i18n/lang/en.yaml @@ -19,6 +19,8 @@ ErrTypePort: "Port {{ .name }} format error" Success: "Success" Failed: "Failed" SystemRestart: "System restart causes task interruption" +ErrGroupIsDefault: "Default group, cannot be deleted" +ErrGroupIsInWebsiteUse: "Group is being used by other websites, cannot be deleted" #backup ErrBackupLocalDelete: "Deleting local server backup accounts is not currently supported." diff --git a/agent/i18n/lang/ja.yaml b/agent/i18n/lang/ja.yaml index 2e2c48825..facc6b46c 100644 --- a/agent/i18n/lang/ja.yaml +++ b/agent/i18n/lang/ja.yaml @@ -28,6 +28,8 @@ ErrTypePortRange: 'ポートレンジは1-65535の間である必要がありま Success: "成功" Failed: "失敗した" SystemRestart: "システムの再起動により、タスクが中断されます" +ErrGroupIsDefault: "デフォルトグループ、削除できません" +ErrGroupIsInWebsiteUse: "グループは他のウェブサイトで使用されています、削除できません" #app ErrPortInUsed: "{{.Detail}}ポートはすでに使用されています" diff --git a/agent/i18n/lang/ko.yaml b/agent/i18n/lang/ko.yaml index 538d2487f..47515bfa1 100644 --- a/agent/i18n/lang/ko.yaml +++ b/agent/i18n/lang/ko.yaml @@ -29,6 +29,8 @@ ErrTypePortRange: '포트 범위는 1-65535 사이여야 합니다' Success: "성공" Failed: "실패" SystemRestart: "시스템 재시작으로 인해 작업이 중단되었습니다" +ErrGroupIsDefault: "기본 그룹, 삭제할 수 없습니다" +ErrGroupIsInWebsiteUse: "그룹이 다른 웹사이트에서 사용 중입니다, 삭제할 수 없습니다" # 애플리케이션 ErrPortInUsed: "{{ .detail }} 포트가 이미 사용 중입니다" diff --git a/agent/i18n/lang/ms.yml b/agent/i18n/lang/ms.yml index cfc154a8a..e04581e33 100644 --- a/agent/i18n/lang/ms.yml +++ b/agent/i18n/lang/ms.yml @@ -29,6 +29,8 @@ ErrTypePortRange: 'Julat port perlu berada di antara 1-65535' Success: "Berjaya" Failed: "Gagal" SystemRestart: "Mulakan semula sistem menyebabkan gangguan tugas" +ErrGroupIsDefault: "Kumpulan lalai, tidak boleh dipadam" +ErrGroupIsInWebsiteUse: "Kumpulan sedang digunakan oleh laman web lain, tidak boleh dipadam" #app ErrPortInUsed: "Port {{ .detail }} sudah digunakan" diff --git a/agent/i18n/lang/pt-BR.yaml b/agent/i18n/lang/pt-BR.yaml index 5f3fe56b8..571ccf604 100644 --- a/agent/i18n/lang/pt-BR.yaml +++ b/agent/i18n/lang/pt-BR.yaml @@ -28,6 +28,8 @@ ErrTypePortRange: 'O intervalo da porta deve estar entre 1-65535' Success: "Sucesso" Failed: "Falhou" SystemRestart: "A reinicialização do sistema causa interrupção da tarefa" +ErrGroupIsDefault: "Grupo padrão, não pode ser excluído" +ErrGroupIsInWebsiteUse: "O grupo está sendo usado por outros sites, não pode ser excluído" #app ErrPortInUsed: "A porta {{ .detail }} já está em uso" diff --git a/agent/i18n/lang/ru.yaml b/agent/i18n/lang/ru.yaml index a60528467..55cd3320e 100644 --- a/agent/i18n/lang/ru.yaml +++ b/agent/i18n/lang/ru.yaml @@ -29,6 +29,8 @@ ErrTypePortRange: "Диапазон портов должен быть межд Success: "Успех" Failed: "Неудача" SystemRestart: "Перезагрузка системы приводит к прерыванию задачи" +ErrGroupIsDefault: "Группа по умолчанию, невозможно удалить" +ErrGroupIsInWebsiteUse: "Группа используется другими сайтами, невозможно удалить" #app ErrPortInUsed: "Порт {{ .detail }} уже используется" diff --git a/agent/i18n/lang/zh-Hant.yaml b/agent/i18n/lang/zh-Hant.yaml index f56cf176c..fe4e9a7ec 100644 --- a/agent/i18n/lang/zh-Hant.yaml +++ b/agent/i18n/lang/zh-Hant.yaml @@ -24,6 +24,8 @@ Success: "成功" Failed: "失敗" SystemRestart: "系統重啟導致任務中斷" ErrInvalidChar: "禁止使用非法字元" +ErrGroupIsDefault: "預設分組,無法刪除" +ErrGroupIsInWebsiteUse: "分組正在被其他網站使用,無法刪除" #backup ErrBackupLocalDelete: "暫不支持刪除本地伺服器備份帳號" diff --git a/agent/i18n/lang/zh.yaml b/agent/i18n/lang/zh.yaml index 985a19139..ec88e5ab4 100644 --- a/agent/i18n/lang/zh.yaml +++ b/agent/i18n/lang/zh.yaml @@ -30,6 +30,8 @@ ErrTypePortRange: '端口范围需要在 1-65535 之间' Success: "成功" Failed: "失败" SystemRestart: "系统重启导致任务中断" +ErrGroupIsDefault: "默认分组,无法删除" +ErrGroupIsInWebsiteUse: "分组正在被其他网站使用,无法删除" #backup ErrBackupInUsed: "该备份账号已在计划任务中使用,无法删除" diff --git a/agent/init/migration/migrate.go b/agent/init/migration/migrate.go index e48707a16..ea31e1dfa 100644 --- a/agent/init/migration/migrate.go +++ b/agent/init/migration/migrate.go @@ -26,6 +26,7 @@ func InitAgentDB() { migrations.UpdateApp, migrations.AddOllamaModel, migrations.UpdateSettingStatus, + migrations.InitDefault, }) if err := m.Migrate(); err != nil { global.LOG.Error(err) diff --git a/agent/init/migration/migrations/init.go b/agent/init/migration/migrations/init.go index 191f2de86..2a2fd8490 100644 --- a/agent/init/migration/migrations/init.go +++ b/agent/init/migration/migrations/init.go @@ -57,6 +57,7 @@ var AddTable = &gormigrate.Migration{ &model.WebsiteDnsAccount{}, &model.WebsiteDomain{}, &model.WebsiteSSL{}, + &model.Group{}, ) }, } @@ -285,3 +286,13 @@ var UpdateSettingStatus = &gormigrate.Migration{ return nil }, } + +var InitDefault = &gormigrate.Migration{ + ID: "20250301-init-default", + Migrate: func(tx *gorm.DB) error { + if err := tx.Create(&model.Group{Name: "Default", Type: "website", IsDefault: true}).Error; err != nil { + return err + } + return nil + }, +} diff --git a/agent/router/common.go b/agent/router/common.go index ace1b56d9..cd0e2a1d8 100644 --- a/agent/router/common.go +++ b/agent/router/common.go @@ -22,5 +22,6 @@ func commonGroups() []CommonRouter { &ProcessRouter{}, &WebsiteCARouter{}, &AIToolsRouter{}, + &GroupRouter{}, } } diff --git a/agent/router/ro_group.go b/agent/router/ro_group.go new file mode 100644 index 000000000..257ed7c5e --- /dev/null +++ b/agent/router/ro_group.go @@ -0,0 +1,20 @@ +package router + +import ( + v2 "github.com/1Panel-dev/1Panel/agent/app/api/v2" + "github.com/gin-gonic/gin" +) + +type GroupRouter struct { +} + +func (a *GroupRouter) InitRouter(Router *gin.RouterGroup) { + groupRouter := Router.Group("groups") + baseApi := v2.ApiGroupApp.BaseApi + { + groupRouter.POST("", baseApi.CreateGroup) + groupRouter.POST("/del", baseApi.DeleteGroup) + groupRouter.POST("/update", baseApi.UpdateGroup) + groupRouter.POST("/search", baseApi.ListGroup) + } +} diff --git a/core/app/repo/group.go b/core/app/repo/group.go index 3cceba0c4..638e06c99 100644 --- a/core/app/repo/group.go +++ b/core/app/repo/group.go @@ -15,7 +15,7 @@ type IGroupRepo interface { Update(id uint, vars map[string]interface{}) error Delete(opts ...global.DBOption) error - WithByDefault(isDefalut bool) global.DBOption + WithByDefault(isDefault bool) global.DBOption CancelDefault(groupType string) error } @@ -23,9 +23,9 @@ func NewIGroupRepo() IGroupRepo { return &GroupRepo{} } -func (c *GroupRepo) WithByDefault(isDefalut bool) global.DBOption { +func (c *GroupRepo) WithByDefault(isDefault bool) global.DBOption { return func(g *gorm.DB) *gorm.DB { - return g.Where("is_default = ?", isDefalut) + return g.Where("is_default = ?", isDefault) } } diff --git a/core/init/migration/migrations/init.go b/core/init/migration/migrations/init.go index e6f0502a1..a8f25b7d0 100644 --- a/core/init/migration/migrations/init.go +++ b/core/init/migration/migrations/init.go @@ -166,20 +166,20 @@ var InitSetting = &gormigrate.Migration{ var InitHost = &gormigrate.Migration{ ID: "20240816-init-host", Migrate: func(tx *gorm.DB) error { - hostGroup := &model.Group{Name: "default", Type: "host", IsDefault: true} + hostGroup := &model.Group{Name: "Default", Type: "host", IsDefault: true} if err := tx.Create(hostGroup).Error; err != nil { return err } - if err := tx.Create(&model.Group{Name: "default", Type: "node", IsDefault: true}).Error; err != nil { + if err := tx.Create(&model.Group{Name: "Default", Type: "node", IsDefault: true}).Error; err != nil { return err } - if err := tx.Create(&model.Group{Name: "default", Type: "command", IsDefault: true}).Error; err != nil { + if err := tx.Create(&model.Group{Name: "Default", Type: "command", IsDefault: true}).Error; err != nil { return err } - if err := tx.Create(&model.Group{Name: "default", Type: "website", IsDefault: true}).Error; err != nil { + if err := tx.Create(&model.Group{Name: "Default", Type: "website", IsDefault: true}).Error; err != nil { return err } - if err := tx.Create(&model.Group{Name: "default", Type: "redis", IsDefault: true}).Error; err != nil { + if err := tx.Create(&model.Group{Name: "Default", Type: "redis", IsDefault: true}).Error; err != nil { return err } host := model.Host{ diff --git a/frontend/src/api/modules/group.ts b/frontend/src/api/modules/group.ts index b1e3a2bc1..9514f7fc5 100644 --- a/frontend/src/api/modules/group.ts +++ b/frontend/src/api/modules/group.ts @@ -13,3 +13,16 @@ export const updateGroup = (params: Group.GroupUpdate) => { export const deleteGroup = (id: number) => { return http.post(`/core/groups/del`, { id: id }); }; + +export const getAgentGroupList = (type: string) => { + return http.post>(`/groups/search`, { type: type }); +}; +export const createAgentGroup = (params: Group.GroupCreate) => { + return http.post(`/groups`, params); +}; +export const updateAgentGroup = (params: Group.GroupUpdate) => { + return http.post(`/groups/update`, params); +}; +export const deleteAgentGroup = (id: number) => { + return http.post(`/groups/del`, { id: id }); +}; diff --git a/frontend/src/components/agent-group/change.vue b/frontend/src/components/agent-group/change.vue new file mode 100644 index 000000000..49a0de3cd --- /dev/null +++ b/frontend/src/components/agent-group/change.vue @@ -0,0 +1,83 @@ + + + diff --git a/frontend/src/components/agent-group/index.vue b/frontend/src/components/agent-group/index.vue new file mode 100644 index 000000000..60100f39d --- /dev/null +++ b/frontend/src/components/agent-group/index.vue @@ -0,0 +1,179 @@ + + diff --git a/frontend/src/routers/index.ts b/frontend/src/routers/index.ts index e93449a9e..aac9f68e8 100644 --- a/frontend/src/routers/index.ts +++ b/frontend/src/routers/index.ts @@ -42,6 +42,9 @@ router.beforeEach((to, from, next) => { if (to.path === '/apps/all' && to.query.install != undefined) { return next(); } + // if (to.query.uncached != undefined) { + // return next(); + // } const activeMenuKey = 'cachedRoute' + (to.meta.activeMenu || ''); const cachedRoute = localStorage.getItem(activeMenuKey); diff --git a/frontend/src/views/website/website/config/basic/other/index.vue b/frontend/src/views/website/website/config/basic/other/index.vue index fabcce150..fbf481507 100644 --- a/frontend/src/views/website/website/config/basic/other/index.vue +++ b/frontend/src/views/website/website/config/basic/other/index.vue @@ -41,7 +41,7 @@ import { computed, onMounted, reactive, ref } from 'vue'; import { FormInstance } from 'element-plus'; import i18n from '@/lang'; import { MsgSuccess } from '@/utils/message'; -import { getGroupList } from '@/api/modules/group'; +import { getAgentGroupList } from '@/api/modules/group'; import { Group } from '@/api/interface/group'; const websiteForm = ref(); @@ -87,7 +87,7 @@ const submit = async (formEl: FormInstance | undefined) => { }); }; const search = async () => { - const res = await getGroupList('website'); + const res = await getAgentGroupList('website'); groups.value = res.data; getWebsite(websiteId.value).then((res) => { diff --git a/frontend/src/views/website/website/index.vue b/frontend/src/views/website/website/index.vue index dca836ac9..81020dd60 100644 --- a/frontend/src/views/website/website/index.vue +++ b/frontend/src/views/website/website/index.vue @@ -245,7 +245,7 @@ import DefaultHtml from '@/views/website/website/html/index.vue'; import CreateWebSite from '@/views/website/website/create/index.vue'; import DeleteWebsite from '@/views/website/website/delete/index.vue'; import NginxConfig from '@/views/website/website/nginx/index.vue'; -import GroupDialog from '@/components/group/index.vue'; +import GroupDialog from '@/components/agent-group/index.vue'; import AppStatus from '@/components/app-status/index.vue'; import i18n from '@/lang'; import router from '@/routers'; @@ -257,7 +257,7 @@ import { ElMessageBox } from 'element-plus'; import { dateFormatSimple } from '@/utils/util'; import { MsgSuccess } from '@/utils/message'; import { useI18n } from 'vue-i18n'; -import { getGroupList } from '@/api/modules/group'; +import { getAgentGroupList } from '@/api/modules/group'; import { Group } from '@/api/interface/group'; import { GlobalStore } from '@/store'; const globalStore = GlobalStore(); @@ -359,7 +359,7 @@ const search = async () => { }; const listGroup = async () => { - const res = await getGroupList('website'); + const res = await getAgentGroupList('website'); groups.value = res.data; };