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.
70 lines
1.7 KiB
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)
|
|
}
|