mirror of
https://github.com/Cccc-owo/CheckInApp.git
synced 2026-06-17 14:06:28 +00:00
refactor: v2
backend & frontend
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { templateAPI } from '@/api'
|
||||
|
||||
export const useTemplateStore = defineStore('template', {
|
||||
state: () => ({
|
||||
templates: [],
|
||||
currentTemplate: null,
|
||||
loading: false,
|
||||
error: null,
|
||||
}),
|
||||
|
||||
getters: {
|
||||
activeTemplates: (state) => state.templates.filter((t) => t.is_active),
|
||||
|
||||
getTemplateById: (state) => (id) => {
|
||||
return state.templates.find((t) => t.id === id)
|
||||
},
|
||||
},
|
||||
|
||||
actions: {
|
||||
async fetchTemplates(isActive = null) {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
const params = {}
|
||||
if (isActive !== null) {
|
||||
params.is_active = isActive
|
||||
}
|
||||
this.templates = await templateAPI.getTemplates(params)
|
||||
return this.templates
|
||||
} catch (error) {
|
||||
this.error = error.message || '获取模板列表失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async fetchActiveTemplates() {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
this.templates = await templateAPI.getActiveTemplates()
|
||||
return this.templates
|
||||
} catch (error) {
|
||||
this.error = error.message || '获取启用模板失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async fetchTemplate(id) {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
this.currentTemplate = await templateAPI.getTemplate(id)
|
||||
return this.currentTemplate
|
||||
} catch (error) {
|
||||
this.error = error.message || '获取模板详情失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async previewTemplate(id) {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
const preview = await templateAPI.previewTemplate(id)
|
||||
return preview
|
||||
} catch (error) {
|
||||
this.error = error.message || '预览模板失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async createTemplate(templateData) {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
const newTemplate = await templateAPI.createTemplate(templateData)
|
||||
this.templates.unshift(newTemplate)
|
||||
return newTemplate
|
||||
} catch (error) {
|
||||
this.error = error.message || '创建模板失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async updateTemplate(id, templateData) {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
const updatedTemplate = await templateAPI.updateTemplate(id, templateData)
|
||||
const index = this.templates.findIndex((t) => t.id === id)
|
||||
if (index !== -1) {
|
||||
this.templates[index] = updatedTemplate
|
||||
}
|
||||
if (this.currentTemplate && this.currentTemplate.id === id) {
|
||||
this.currentTemplate = updatedTemplate
|
||||
}
|
||||
return updatedTemplate
|
||||
} catch (error) {
|
||||
this.error = error.message || '更新模板失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async deleteTemplate(id) {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
await templateAPI.deleteTemplate(id)
|
||||
this.templates = this.templates.filter((t) => t.id !== id)
|
||||
if (this.currentTemplate && this.currentTemplate.id === id) {
|
||||
this.currentTemplate = null
|
||||
}
|
||||
return true
|
||||
} catch (error) {
|
||||
this.error = error.message || '删除模板失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async createTaskFromTemplate(templateId, threadId, fieldValues, taskName = null) {
|
||||
this.loading = true
|
||||
this.error = null
|
||||
try {
|
||||
const task = await templateAPI.createTaskFromTemplate({
|
||||
template_id: templateId,
|
||||
thread_id: threadId,
|
||||
field_values: fieldValues,
|
||||
task_name: taskName,
|
||||
})
|
||||
return task
|
||||
} catch (error) {
|
||||
this.error = error.message || '从模板创建任务失败'
|
||||
throw error
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
clearCurrentTemplate() {
|
||||
this.currentTemplate = null
|
||||
},
|
||||
|
||||
clearError() {
|
||||
this.error = null
|
||||
},
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user