You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ocr-web/src/store/modules/workOrder.ts

70 lines
1.7 KiB

import { defineStore } from 'pinia'
import type { OrderState, PackageListItem } from '/#/workorder'
import { useMessage } from 'naive-ui'
import { getPackageList } from '@/api/work/work'
import { store } from '@/store'
export const useWorkOrderStore = defineStore({
id: 'work-order',
state: (): OrderState => ({
currentIndex: -1,
activeId: '',
packageList: [],
immersion: false,
}),
getters: {
getActiveId: (state: OrderState) => state.activeId,
getCurrentIndex: (state: OrderState) => state.currentIndex,
getOrderList: (state: OrderState) => state.packageList,
},
actions: {
setOrderList(list: PackageListItem[]) {
this.packageList = list
},
setActive(index: number, orderId?: string) {
this.currentIndex = index
const order = this.packageList[index]
this.activeId = orderId || order?.id
},
forward() {
const len = this.packageList.length
const message = useMessage()
if (this.currentIndex === len - 1)
message.error('已经到达最后一个')
this.setActive(++this.currentIndex)
},
back() {
const message = useMessage()
if (this.currentIndex === 0)
message.error('已经到达第一个')
this.setActive(--this.currentIndex)
},
async fetchOrderList(pagination) {
const res = await getPackageList(pagination)
if (res.data.length > 0) {
this.setOrderList(res.data)
this.setActive(0)
}
return res
},
updateImmersion() {
this.immersion = !this.immersion
},
reset() {
this.currentIndex = -1
this.activeId = ''
this.packageList = []
},
},
})
export function useWorkOrder() {
return useWorkOrderStore(store)
}