ilk
This commit is contained in:
167
ui/src/stores/OrdernewListStore.js
Normal file
167
ui/src/stores/OrdernewListStore.js
Normal file
@@ -0,0 +1,167 @@
|
||||
// src/stores/OrdernewListStore.js
|
||||
import { defineStore } from 'pinia'
|
||||
import api from 'src/services/api'
|
||||
|
||||
let lastRequestId = 0
|
||||
|
||||
export const useOrderListStore = defineStore('orderlist', {
|
||||
state: () => ({
|
||||
orders: [],
|
||||
loading: false,
|
||||
error: null,
|
||||
|
||||
filters: {
|
||||
search: '',
|
||||
CurrAccCode: '',
|
||||
OrderDate: ''
|
||||
}
|
||||
}),
|
||||
|
||||
getters: {
|
||||
filteredOrders (state) {
|
||||
let result = state.orders
|
||||
|
||||
if (state.filters.CurrAccCode) {
|
||||
result = result.filter(o => o.CurrAccCode === state.filters.CurrAccCode)
|
||||
}
|
||||
|
||||
if (state.filters.OrderDate) {
|
||||
result = result.filter(o =>
|
||||
o.OrderDate?.startsWith(state.filters.OrderDate)
|
||||
)
|
||||
}
|
||||
|
||||
return result
|
||||
},
|
||||
|
||||
totalVisibleUSD (state) {
|
||||
return state.filteredOrders.reduce(
|
||||
(sum, o) => sum + Number(o.TotalAmountUSD || 0),
|
||||
0
|
||||
)
|
||||
}
|
||||
},
|
||||
|
||||
actions: {
|
||||
async fetchOrders () {
|
||||
|
||||
// ==============================
|
||||
// 📌 REQUEST ID
|
||||
// ==============================
|
||||
const rid = ++lastRequestId
|
||||
|
||||
// ==============================
|
||||
// 📌 SEARCH SNAPSHOT
|
||||
// ==============================
|
||||
const raw = this.filters.search ?? ''
|
||||
const trimmed = String(raw).trim()
|
||||
|
||||
// ==============================
|
||||
// 📌 REQUEST LOG
|
||||
// ==============================
|
||||
console.groupCollapsed(
|
||||
`%c[orders] FETCH rid=${rid}`,
|
||||
'color:#1976d2;font-weight:bold'
|
||||
)
|
||||
|
||||
console.log('raw =', JSON.stringify(raw), 'len=', String(raw).length)
|
||||
console.log('trimmed =', JSON.stringify(trimmed), 'len=', trimmed.length)
|
||||
console.log('filters =', JSON.parse(JSON.stringify(this.filters)))
|
||||
console.log('lastRID =', lastRequestId)
|
||||
|
||||
console.groupEnd()
|
||||
|
||||
this.loading = true
|
||||
this.error = null
|
||||
|
||||
try {
|
||||
|
||||
// ==============================
|
||||
// 📌 PARAMS
|
||||
// ==============================
|
||||
const params = {}
|
||||
if (trimmed) params.search = trimmed
|
||||
|
||||
// ==============================
|
||||
// 📌 API CALL
|
||||
// ==============================
|
||||
const res = await api.get('/orders/list', { params })
|
||||
|
||||
// ==============================
|
||||
// 📌 STALE CHECK
|
||||
// ==============================
|
||||
if (rid !== lastRequestId) {
|
||||
console.warn(
|
||||
`[orders] IGNORE stale response rid=${rid} last=${lastRequestId}`
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
// ==============================
|
||||
// 📌 DATA
|
||||
// ==============================
|
||||
const data = res?.data
|
||||
this.orders = Array.isArray(data) ? data : []
|
||||
|
||||
// ==============================
|
||||
// 📌 RESPONSE LOG
|
||||
// ==============================
|
||||
console.groupCollapsed(
|
||||
`%c[orders] RESPONSE rid=${rid} count=${this.orders.length}`,
|
||||
'color:#2e7d32;font-weight:bold'
|
||||
)
|
||||
|
||||
console.log('status =', res?.status)
|
||||
|
||||
console.log(
|
||||
'sample =',
|
||||
this.orders.slice(0, 5).map(o => ({
|
||||
id: o.OrderHeaderID,
|
||||
no: o.OrderNumber,
|
||||
code: o.CurrAccCode,
|
||||
name: o.CurrAccDescription
|
||||
}))
|
||||
)
|
||||
|
||||
// ==============================
|
||||
// 📌 DUPLICATE CHECK
|
||||
// ==============================
|
||||
const ids = this.orders.map(o => String(o.OrderHeaderID))
|
||||
const dup = ids.filter((v, i) => ids.indexOf(v) !== i)
|
||||
|
||||
if (dup.length) {
|
||||
console.warn(
|
||||
'DUPLICATE OrderHeaderID sample =',
|
||||
dup.slice(0, 10)
|
||||
)
|
||||
}
|
||||
|
||||
console.groupEnd()
|
||||
|
||||
} catch (err) {
|
||||
|
||||
if (rid !== lastRequestId) return
|
||||
|
||||
console.error(
|
||||
'[orders] FETCH FAILED',
|
||||
err?.response?.status,
|
||||
err?.response?.data || err
|
||||
)
|
||||
|
||||
this.orders = []
|
||||
|
||||
this.error =
|
||||
err?.response?.data ||
|
||||
err?.message ||
|
||||
'Sipariş listesi alınamadı'
|
||||
|
||||
} finally {
|
||||
|
||||
if (rid === lastRequestId) {
|
||||
this.loading = false
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user