feat: scope articles by brand

This commit is contained in:
2026-05-20 15:37:25 +08:00
parent 5fb9d0b0dd
commit dd082e2ed1
72 changed files with 3213 additions and 432 deletions
@@ -16,6 +16,7 @@ import ArticleEditorCanvas from '@/components/ArticleEditorCanvas.vue'
import PublishArticleModal from '@/components/PublishArticleModal.vue'
import { articlesApi, complianceApi } from '@/lib/api'
import { formatError } from '@/lib/errors'
import { useCompanyStore } from '@/stores/company'
type EditorCanvasPublic = InstanceType<typeof ArticleEditorCanvas> & {
scrollToText?: (text: string) => boolean
@@ -25,6 +26,7 @@ const route = useRoute()
const router = useRouter()
const queryClient = useQueryClient()
const { t } = useI18n()
const companyStore = useCompanyStore()
const articleId = computed(() => Number(route.params.id))
const title = ref('')
@@ -38,8 +40,10 @@ const editorComplianceResult = ref<ComplianceCheckResult | null>(null)
const editorCanvasRef = ref<EditorCanvasPublic | null>(null)
const detailQuery = useQuery({
queryKey: computed(() => ['articles', 'detail', articleId.value]),
enabled: computed(() => Number.isInteger(articleId.value) && articleId.value > 0),
queryKey: computed(() => ['articles', 'detail', companyStore.currentBrandId, articleId.value]),
enabled: computed(
() => Boolean(companyStore.currentBrandId) && Number.isInteger(articleId.value) && articleId.value > 0,
),
queryFn: () => articlesApi.detail(articleId.value),
})