import { listDemo, updateDemo } from '@/api/WarningList/index';
import { defineStore } from 'pinia';
import { ref, computed } from 'vue';

export const useWarningListStore = defineStore('warningListStore', () => {
  // --- State (状态) ---
  // 相当于 Vuex 中的 state，用 ref 或 reactive 定义
  const warningList = ref([]);
  const warningListTotal = ref(0);
  // --- Getters (计算属性) ---
  // 相当于 Vuex 中的 getters，直接用 computed 定义

  // --- Actions (动作) ---
  // 相当于 Vuex 中的 actions/mutations，直接写同步或异步函数
  async function getWarningList(deviceId?: string | number) {
    try {
      const response = await listDemo({
        deviceId,
        status: 0,
        pageNum: 1,
        pageSize: 300
      });
      warningList.value = response.data || [];
      warningListTotal.value = response.data.total || 0;
    } catch (error) {
      console.error('获取消息列表失败', error);
    }
  }
  async function handleAction(ids: string | number | Array<string | number>) {
    try {
      await updateDemo(ids);
      await getWarningList();
    } catch (error) {
      console.error('处理告警失败', error);
    }
  }

  //  核心点：必须把需要暴露出去的变量和方法 return 出去！
  return {
    warningList,
    warningListTotal,
    getWarningList,
    handleAction
  };
});
