import { ref, computed } from 'vue' import { defineStore } from 'pinia' import { AxiosWrapper } from '@/util/axios-wrapper' import _ from 'lodash' import type { IQueryType, IQueryResult, IQueryParams } from '@/util/types.util' const axios = new AxiosWrapper() const api = { url: `/zkzx/v2/api/admin` } export const AdminStore = defineStore('admin', () => { const count = ref(0) const doubleCount = computed(() => count.value * 2) function increment() { count.value++ } const query = async ({ skip = 0, limit = undefined, ...info }: IQueryParams = {}): Promise => { let cond: IQueryType = {} if (skip) cond.skip = skip if (limit) cond.limit = limit cond = { ...cond, ...info } const res = await axios.$get(`${api.url}`, cond) return res } const fetch = async (payload: any): Promise => { const res = await axios.$get(`${api.url}/${payload}`) return res } const create = async (payload: any): Promise => { const res = await axios.$post(`${api.url}`, payload) return res } const update = async (payload: any): Promise => { const id = _.get(payload, 'id', _.get(payload, '_id')) const res = await axios.$post(`${api.url}/${id}`, payload) return res } const del = async (payload: any): Promise => { const res = await axios.$delete(`${api.url}/${payload}`) return res } const login = async (payload: any): Promise => { const res = await axios.$post(`${api.url}/login`, payload) return res } //password const rp = async (payload: any): Promise => { const res = await axios.$post(`${api.url}/rp`, payload) return res } return { count, doubleCount, increment, query, fetch, create, update, del, login, rp } })