提交 f59e8c22 authored 作者: kxjia's avatar kxjia

上级 e4c90ebb
/**
* 计划执行表单状态管理
* 用于在不同页面之间共享表单保存方法
*/
import { defineStore } from 'pinia';
import { ref } from 'vue';
export const usePlanFormStore = defineStore('planForm', () => {
// 存储表单的 ref 回调
const submitCallback = ref<() => Promise<any> | null>(null);
const formData = ref<any>(null);
/**
* 注册表单提交回调(在 StPlanExcuteForm 中调用)
* @param callback - 表单的 submitForm 方法
*/
const registerSubmitCallback = (callback: () => Promise<any>) => {
submitCallback.value = callback;
console.log('[PlanFormStore] 已注册表单保存回调');
};
/**
* 注册表单数据(用于跨页面访问)
* @param data - 表单数据
*/
const setFormData = (data: any) => {
formData.value = data;
};
/**
* 获取表单数据
*/
const getFormData = () => {
return formData.value;
};
/**
* 执行表单保存(在 TodoIndex 中调用)
*/
const submitPlanForm = async () => {
if (!submitCallback.value) {
console.warn('[PlanFormStore] 未注册表单保存回调');
return null;
}
try {
console.log('[PlanFormStore] 开始执行表单保存...');
const result = await submitCallback.value();
console.log('[PlanFormStore] 表单保存成功:', result);
return result;
} catch (error) {
console.error('[PlanFormStore] 表单保存失败:', error);
throw error;
}
};
/**
* 清空回调(可选)
*/
const clearCallback = () => {
submitCallback.value = null;
console.log('[PlanFormStore] 已清空表单保存回调');
};
return {
submitCallback,
formData,
registerSubmitCallback,
setFormData,
getFormData,
submitPlanForm,
clearCallback,
};
});
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论