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 { 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,