feat: add effectiveBackDesign and patchBackDesign to store

This commit is contained in:
Poker Design Developer
2026-06-03 22:34:19 +08:00
parent 76934eb094
commit 1da35e4eab

View File

@@ -1,7 +1,7 @@
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { ref, computed } from 'vue' import { ref, computed } from 'vue'
import axios from 'axios' 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' const API = '/api'
@@ -30,6 +30,13 @@ export const useProjectStore = defineStore('project', () => {
return { ...base, ...ovr } 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() { async function fetchProjects() {
loading.value = true loading.value = true
error.value = '' error.value = ''
@@ -48,6 +55,7 @@ export const useProjectStore = defineStore('project', () => {
name, name,
template_id: templateId, template_id: templateId,
design: DEFAULT_DESIGN, design: DEFAULT_DESIGN,
back_design: DEFAULT_BACK_DESIGN,
card_overrides: {}, card_overrides: {},
number_layout: {}, 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.design) r.data.design = JSON.parse(JSON.stringify(DEFAULT_DESIGN))
if (!r.data.card_overrides) r.data.card_overrides = {} if (!r.data.card_overrides) r.data.card_overrides = {}
if (!r.data.number_layout) r.data.number_layout = {} 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 = [] if (!r.data.assets) r.data.assets = []
project.value = r.data project.value = r.data
currentCard.value = 'spade-A' currentCard.value = 'spade-A'
@@ -100,6 +109,7 @@ export const useProjectStore = defineStore('project', () => {
try { try {
await axios.post(`${API}/projects/${project.value.id}/design/`, { await axios.post(`${API}/projects/${project.value.id}/design/`, {
design: project.value.design, design: project.value.design,
back_design: project.value.back_design,
card_overrides: project.value.card_overrides, card_overrides: project.value.card_overrides,
number_layout: project.value.number_layout, number_layout: project.value.number_layout,
face_orientations: project.value.face_orientations || {}, face_orientations: project.value.face_orientations || {},
@@ -118,6 +128,15 @@ export const useProjectStore = defineStore('project', () => {
scheduleSaveDesign() 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, error,
allCards, allCards,
effectiveDesign, effectiveDesign,
effectiveBackDesign,
fetchProjects, fetchProjects,
createProject, createProject,
deleteProject, deleteProject,
@@ -178,6 +198,7 @@ export const useProjectStore = defineStore('project', () => {
saveDesign, saveDesign,
scheduleSaveDesign, scheduleSaveDesign,
patchDesign, patchDesign,
patchBackDesign,
patchCardOverride, patchCardOverride,
clearCardOverride, clearCardOverride,
patchNumberLayout, patchNumberLayout,