From 1da35e4eab760136371fcb1fcd77531f739c45b5 Mon Sep 17 00:00:00 2001 From: Poker Design Developer Date: Wed, 3 Jun 2026 22:34:19 +0800 Subject: [PATCH] feat: add effectiveBackDesign and patchBackDesign to store --- frontend/src/stores/projectStore.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/frontend/src/stores/projectStore.js b/frontend/src/stores/projectStore.js index 2aef079..c7cc2cf 100644 --- a/frontend/src/stores/projectStore.js +++ b/frontend/src/stores/projectStore.js @@ -1,7 +1,7 @@ import { defineStore } from 'pinia' import { ref, computed } from 'vue' import axios from 'axios' -import { DEFAULT_DESIGN, listAllCards } from '@/utils/cardLayout.js' +import { DEFAULT_DESIGN, DEFAULT_BACK_DESIGN, listAllCards } from '@/utils/cardLayout.js' const API = '/api' @@ -30,6 +30,13 @@ export const useProjectStore = defineStore('project', () => { return { ...base, ...ovr } }) + const effectiveBackDesign = computed(() => { + if (!project.value) return DEFAULT_BACK_DESIGN + const base = JSON.parse(JSON.stringify(project.value.back_design || DEFAULT_BACK_DESIGN)) + const ovr = (project.value.card_overrides || {})['back'] || {} + return { ...base, ...ovr } + }) + async function fetchProjects() { loading.value = true error.value = '' @@ -48,6 +55,7 @@ export const useProjectStore = defineStore('project', () => { name, template_id: templateId, design: DEFAULT_DESIGN, + back_design: DEFAULT_BACK_DESIGN, card_overrides: {}, number_layout: {}, }) @@ -69,6 +77,7 @@ export const useProjectStore = defineStore('project', () => { if (!r.data.design) r.data.design = JSON.parse(JSON.stringify(DEFAULT_DESIGN)) if (!r.data.card_overrides) r.data.card_overrides = {} if (!r.data.number_layout) r.data.number_layout = {} + if (!r.data.back_design) r.data.back_design = JSON.parse(JSON.stringify(DEFAULT_BACK_DESIGN)) if (!r.data.assets) r.data.assets = [] project.value = r.data currentCard.value = 'spade-A' @@ -100,6 +109,7 @@ export const useProjectStore = defineStore('project', () => { try { await axios.post(`${API}/projects/${project.value.id}/design/`, { design: project.value.design, + back_design: project.value.back_design, card_overrides: project.value.card_overrides, number_layout: project.value.number_layout, face_orientations: project.value.face_orientations || {}, @@ -118,6 +128,15 @@ export const useProjectStore = defineStore('project', () => { scheduleSaveDesign() } + function patchBackDesign(path, value) { + if (!project.value) return + if (!project.value.back_design) { + project.value.back_design = JSON.parse(JSON.stringify(DEFAULT_BACK_DESIGN)) + } + setPath(project.value.back_design, path, value) + scheduleSaveDesign() + } + /** * 修改某张牌对项目级设计的覆盖 */ @@ -170,6 +189,7 @@ export const useProjectStore = defineStore('project', () => { error, allCards, effectiveDesign, + effectiveBackDesign, fetchProjects, createProject, deleteProject, @@ -178,6 +198,7 @@ export const useProjectStore = defineStore('project', () => { saveDesign, scheduleSaveDesign, patchDesign, + patchBackDesign, patchCardOverride, clearCardOverride, patchNumberLayout,