import { defineStore } from 'pinia' import { ref, watch } from 'vue' import type { CustomTool } from '@/types' /** * 自定义工具 store(localStorage 持久化) * 原 web 项目 customTools 仅存本地,无后端 */ export const useToolsStore = defineStore('tools', () => { const STORAGE_KEY = 'customTools' const tools = ref(loadFromStorage()) function loadFromStorage(): CustomTool[] { try { return JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]') } catch { return [] } } // 持久化 watch( tools, (val) => { localStorage.setItem(STORAGE_KEY, JSON.stringify(val)) }, { deep: true }, ) function addTool(tool: CustomTool) { tools.value.push(tool) } function updateTool(id: string, data: Partial) { const idx = tools.value.findIndex((t) => t.id === id) if (idx !== -1) tools.value[idx] = { ...tools.value[idx], ...data } } function removeTool(id: string) { tools.value = tools.value.filter((t) => t.id !== id) } function getTool(id: string): CustomTool | undefined { return tools.value.find((t) => t.id === id) } return { tools, addTool, updateTool, removeTool, getTool } })