diff --git a/backend/internal/store/store.go b/backend/internal/store/store.go index 575cce5..78b5e10 100644 --- a/backend/internal/store/store.go +++ b/backend/internal/store/store.go @@ -995,7 +995,12 @@ func (s *Store) Create(in model.PostInput) (model.Post, error) { } } p.ID = id - if err := s.setTags(id, in.Tags); err != nil { + // 标签是长文的组织方式;短文(类推微博)一律不打标签 + tags := in.Tags + if p.Kind == model.KindShort { + tags = nil + } + if err := s.setTags(id, tags); err != nil { return p, err } return s.Get(id) @@ -1054,8 +1059,13 @@ func (s *Store) Update(id int64, in model.PostInput) (model.Post, error) { p.PublishedAt, p.UpdatedAt, p.ReadingMinutes, encodeImages(p.Images), encodeLinkCard(p.LinkCard), id); err != nil { return p, err } - if in.Tags != nil { - if err := s.setTags(id, in.Tags); err != nil { + // 短文一律无标签:切换类型或直接保存时都把旧标签清掉 + if in.Tags != nil || p.Kind == model.KindShort { + tags := in.Tags + if p.Kind == model.KindShort { + tags = nil + } + if err := s.setTags(id, tags); err != nil { return p, err } } diff --git a/frontend/src/admin/EditorView.vue b/frontend/src/admin/EditorView.vue index 7b60385..6579bd5 100644 --- a/frontend/src/admin/EditorView.vue +++ b/frontend/src/admin/EditorView.vue @@ -365,6 +365,14 @@ onBeforeRouteLeave(() => { // ---------- 标签 ---------- +// 标签是长文的组织方式;切到短文时把已选的清掉(后端落库时也会强制丢弃) +watch( + () => form.kind, + (k) => { + if (k === 'short') form.tags = [] + } +) + function addTag() { const v = tagInput.value.trim().replace(/[,,]$/, '') if (!v) return @@ -848,7 +856,7 @@ const tbGroups = computed(() => [ > -
+