|
@@ -0,0 +1,57 @@
|
|
|
+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/product`
|
|
|
+}
|
|
|
+export const ProductStore = defineStore('product', () => {
|
|
|
+ const count = ref(0)
|
|
|
+ const doubleCount = computed(() => count.value * 2)
|
|
|
+ function increment() {
|
|
|
+ count.value++
|
|
|
+ }
|
|
|
+ const query = async ({
|
|
|
+ skip = 0,
|
|
|
+ limit = undefined,
|
|
|
+ ...info
|
|
|
+ }: IQueryParams = {}): Promise<IQueryResult> => {
|
|
|
+ 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<IQueryResult> => {
|
|
|
+ const res = await axios.$get(`${api.url}/${payload}`)
|
|
|
+ return res
|
|
|
+ }
|
|
|
+ const create = async (payload: any): Promise<IQueryResult> => {
|
|
|
+ const res = await axios.$post(`${api.url}`, payload)
|
|
|
+ return res
|
|
|
+ }
|
|
|
+ const update = async (payload: any): Promise<IQueryResult> => {
|
|
|
+ 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<IQueryResult> => {
|
|
|
+ const res = await axios.$delete(`${api.url}/${payload}`)
|
|
|
+ return res
|
|
|
+ }
|
|
|
+
|
|
|
+ return {
|
|
|
+ count,
|
|
|
+ doubleCount,
|
|
|
+ increment,
|
|
|
+ query,
|
|
|
+ fetch,
|
|
|
+ create,
|
|
|
+ update,
|
|
|
+ del
|
|
|
+ }
|
|
|
+})
|