Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -62,14 +62,36 @@ export const useProductPricingStore = defineStore('product-pricing-store', {
|
||||
async fetchRows () {
|
||||
this.loading = true
|
||||
this.error = ''
|
||||
const startedAt = Date.now()
|
||||
console.info('[product-pricing][frontend] request:start', {
|
||||
at: new Date(startedAt).toISOString(),
|
||||
timeout_ms: 600000
|
||||
})
|
||||
try {
|
||||
const res = await api.get('/pricing/products')
|
||||
const res = await api.request({
|
||||
method: 'GET',
|
||||
url: '/pricing/products',
|
||||
timeout: 600000
|
||||
})
|
||||
const traceId = res?.headers?.['x-trace-id'] || null
|
||||
const data = Array.isArray(res?.data) ? res.data : []
|
||||
this.rows = data.map((x, i) => mapRow(x, i))
|
||||
console.info('[product-pricing][frontend] request:success', {
|
||||
trace_id: traceId,
|
||||
duration_ms: Date.now() - startedAt,
|
||||
row_count: this.rows.length
|
||||
})
|
||||
} catch (err) {
|
||||
this.rows = []
|
||||
const msg = err?.response?.data || err?.message || 'Urun fiyatlandirma listesi alinamadi'
|
||||
this.error = toText(msg)
|
||||
console.error('[product-pricing][frontend] request:error', {
|
||||
trace_id: err?.response?.headers?.['x-trace-id'] || null,
|
||||
duration_ms: Date.now() - startedAt,
|
||||
timeout_ms: err?.config?.timeout ?? null,
|
||||
status: err?.response?.status || null,
|
||||
message: this.error
|
||||
})
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
|
||||
@@ -9,14 +9,16 @@ export const useDownloadstHeadStore = defineStore('downloadstHead', {
|
||||
accountCode,
|
||||
startDate,
|
||||
endDate,
|
||||
parislemler
|
||||
parislemler,
|
||||
langcode = 'TR'
|
||||
) {
|
||||
try {
|
||||
// ✅ Params (axios paramsSerializer array=repeat destekliyor)
|
||||
const params = {
|
||||
accountcode: accountCode,
|
||||
startdate: startDate,
|
||||
enddate: endDate
|
||||
enddate: endDate,
|
||||
langcode: langcode || 'TR'
|
||||
}
|
||||
|
||||
if (Array.isArray(parislemler) && parislemler.length > 0) {
|
||||
|
||||
@@ -7,13 +7,14 @@ export const useDownloadstpdfStore = defineStore('downloadstpdf', {
|
||||
/* ==========================================================
|
||||
📄 PDF İNDİR / AÇ
|
||||
========================================================== */
|
||||
async downloadPDF(accountCode, startDate, endDate, parislemler = []) {
|
||||
async downloadPDF(accountCode, startDate, endDate, parislemler = [], langcode = 'TR') {
|
||||
try {
|
||||
// 🔹 Query params
|
||||
const params = {
|
||||
accountcode: accountCode,
|
||||
startdate: startDate,
|
||||
enddate: endDate
|
||||
enddate: endDate,
|
||||
langcode: langcode || 'TR'
|
||||
}
|
||||
|
||||
if (Array.isArray(parislemler) && parislemler.length > 0) {
|
||||
|
||||
35
ui/src/stores/localeStore.js
Normal file
35
ui/src/stores/localeStore.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { computed, ref } from 'vue'
|
||||
|
||||
import { applyDayjsLocale } from 'src/i18n/dayjsLocale'
|
||||
import { DEFAULT_LOCALE, normalizeLocale, toBackendLangCode } from 'src/i18n/languages'
|
||||
|
||||
const STORAGE_KEY = 'bss.locale'
|
||||
|
||||
function readInitialLocale() {
|
||||
if (typeof window === 'undefined') return DEFAULT_LOCALE
|
||||
return normalizeLocale(window.localStorage.getItem(STORAGE_KEY))
|
||||
}
|
||||
|
||||
export const useLocaleStore = defineStore('locale', () => {
|
||||
const locale = ref(readInitialLocale())
|
||||
|
||||
function setLocale(nextLocale) {
|
||||
const normalized = normalizeLocale(nextLocale)
|
||||
locale.value = normalized
|
||||
applyDayjsLocale(normalized)
|
||||
if (typeof window !== 'undefined') {
|
||||
window.localStorage.setItem(STORAGE_KEY, normalized)
|
||||
}
|
||||
}
|
||||
|
||||
const backendLangCode = computed(() => toBackendLangCode(locale.value))
|
||||
|
||||
applyDayjsLocale(locale.value)
|
||||
|
||||
return {
|
||||
locale,
|
||||
backendLangCode,
|
||||
setLocale
|
||||
}
|
||||
})
|
||||
128
ui/src/stores/translationStore.js
Normal file
128
ui/src/stores/translationStore.js
Normal file
@@ -0,0 +1,128 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import api from 'src/services/api'
|
||||
|
||||
export const useTranslationStore = defineStore('translation', {
|
||||
state: () => ({
|
||||
loading: false,
|
||||
saving: false,
|
||||
rows: [],
|
||||
count: 0
|
||||
}),
|
||||
|
||||
actions: {
|
||||
async fetchRows (filters = {}) {
|
||||
this.loading = true
|
||||
try {
|
||||
const res = await api.get('/language/translations', { params: filters })
|
||||
const payload = res?.data || {}
|
||||
this.rows = Array.isArray(payload.rows) ? payload.rows : []
|
||||
this.count = Number(payload.count) || this.rows.length
|
||||
} finally {
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
|
||||
async updateRow (id, payload) {
|
||||
this.saving = true
|
||||
try {
|
||||
const res = await api.put(`/language/translations/${id}`, payload)
|
||||
return res?.data || null
|
||||
} finally {
|
||||
this.saving = false
|
||||
}
|
||||
},
|
||||
|
||||
async upsertMissing (items, languages = ['en', 'de', 'it', 'es', 'ru', 'ar']) {
|
||||
this.saving = true
|
||||
try {
|
||||
const res = await api.post('/language/translations/upsert-missing', {
|
||||
items: Array.isArray(items) ? items : [],
|
||||
languages: Array.isArray(languages) ? languages : []
|
||||
})
|
||||
return res?.data || null
|
||||
} finally {
|
||||
this.saving = false
|
||||
}
|
||||
},
|
||||
|
||||
async syncSources (payload = {}) {
|
||||
this.saving = true
|
||||
const startedAt = Date.now()
|
||||
console.info('[translation-sync][frontend] request:start', {
|
||||
at: new Date(startedAt).toISOString(),
|
||||
payload
|
||||
})
|
||||
try {
|
||||
const res = await api.post('/language/translations/sync-sources', payload, { timeout: 0 })
|
||||
const data = res?.data || null
|
||||
const traceId = data?.trace_id || data?.result?.trace_id || res?.headers?.['x-trace-id'] || null
|
||||
console.info('[translation-sync][frontend] request:success', {
|
||||
trace_id: traceId,
|
||||
duration_ms: Date.now() - startedAt,
|
||||
result: data?.result || null
|
||||
})
|
||||
return data
|
||||
} catch (err) {
|
||||
console.error('[translation-sync][frontend] request:error', {
|
||||
duration_ms: Date.now() - startedAt,
|
||||
message: err?.message || 'sync-sources failed'
|
||||
})
|
||||
throw err
|
||||
} finally {
|
||||
this.saving = false
|
||||
}
|
||||
},
|
||||
|
||||
async translateSelected (payload = {}) {
|
||||
this.saving = true
|
||||
const startedAt = Date.now()
|
||||
console.info('[translation-selected][frontend] request:start', {
|
||||
at: new Date(startedAt).toISOString(),
|
||||
payload
|
||||
})
|
||||
try {
|
||||
const res = await api.post('/language/translations/translate-selected', payload, { timeout: 0 })
|
||||
const data = res?.data || null
|
||||
const traceId = data?.trace_id || res?.headers?.['x-trace-id'] || null
|
||||
console.info('[translation-selected][frontend] request:success', {
|
||||
trace_id: traceId,
|
||||
duration_ms: Date.now() - startedAt,
|
||||
translated_count: data?.translated_count || 0
|
||||
})
|
||||
return data
|
||||
} catch (err) {
|
||||
console.error('[translation-selected][frontend] request:error', {
|
||||
duration_ms: Date.now() - startedAt,
|
||||
message: err?.message || 'translate-selected failed'
|
||||
})
|
||||
throw err
|
||||
} finally {
|
||||
this.saving = false
|
||||
}
|
||||
},
|
||||
|
||||
async bulkApprove (ids = []) {
|
||||
this.saving = true
|
||||
try {
|
||||
const res = await api.post('/language/translations/bulk-approve', {
|
||||
ids: Array.isArray(ids) ? ids : []
|
||||
})
|
||||
return res?.data || null
|
||||
} finally {
|
||||
this.saving = false
|
||||
}
|
||||
},
|
||||
|
||||
async bulkUpdate (items = []) {
|
||||
this.saving = true
|
||||
try {
|
||||
const res = await api.post('/language/translations/bulk-update', {
|
||||
items: Array.isArray(items) ? items : []
|
||||
})
|
||||
return res?.data || null
|
||||
} finally {
|
||||
this.saving = false
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user