Enhance price set import functionality with preview options and update handling. Added new endpoints for previewing product library pulls and Excel imports, along with support for update-only imports. Updated internationalization messages for import success and error scenarios.
This commit is contained in:
@@ -56,7 +56,7 @@ export async function savePriceSetAsync(data, onProgress) {
|
||||
err.task = task
|
||||
throw err
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, 800))
|
||||
await new Promise(resolve => setTimeout(resolve, 400))
|
||||
}
|
||||
throw new Error('save timeout')
|
||||
}
|
||||
@@ -202,7 +202,7 @@ export function addSetDetail(data) {
|
||||
/**
|
||||
* Async import quote Excel into FIXED package detail prices; poll until done.
|
||||
* @param {File|Blob} file
|
||||
* @param {{ priceSetId: string|number, psvId?: string|number }} query
|
||||
* @param {{ priceSetId: string|number, psvId?: string|number, updateOnly?: boolean }} query
|
||||
* @param {(task: object) => void} [onProgress]
|
||||
* @returns {Promise<{ task: object }>}
|
||||
*/
|
||||
@@ -212,6 +212,7 @@ export async function importSetDetailPricesAsync(file, query, onProgress) {
|
||||
const params = new URLSearchParams()
|
||||
if (query && query.priceSetId != null) params.set('priceSetId', query.priceSetId)
|
||||
if (query && query.psvId != null && query.psvId !== '') params.set('psvId', query.psvId)
|
||||
if (query && query.updateOnly) params.set('updateOnly', 'true')
|
||||
const submitRes = await request({
|
||||
url: '/price/set/detail/importPrices?' + params.toString(),
|
||||
method: 'post',
|
||||
@@ -225,6 +226,37 @@ export async function importSetDetailPricesAsync(file, query, onProgress) {
|
||||
return pollPriceSetSaveTask(taskId, onProgress)
|
||||
}
|
||||
|
||||
/**
|
||||
* Preview pull product library (no DB write). Returns { products, details, message }.
|
||||
*/
|
||||
export function previewPullFromLibrary() {
|
||||
return request({
|
||||
url: '/price/set/detail/previewPullFromLibrary',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Preview Excel import (no DB write).
|
||||
* @param {File|Blob} file
|
||||
* @param {{ updateOnly?: boolean, details?: Array }} [opts]
|
||||
*/
|
||||
export function previewImportDetailPrices(file, opts = {}) {
|
||||
const formData = new FormData()
|
||||
formData.append('file', file)
|
||||
if (opts.updateOnly) formData.append('updateOnly', 'true')
|
||||
if (opts.updateOnly && Array.isArray(opts.details)) {
|
||||
formData.append('detailsJson', JSON.stringify(opts.details))
|
||||
}
|
||||
return request({
|
||||
url: '/price/set/detail/previewImportPrices',
|
||||
method: 'post',
|
||||
data: formData,
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
timeout: 10 * 60 * 1000
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Async pull product library into package version details; poll until done.
|
||||
* @param {{ priceSetId: string|number, psvId?: string|number, force?: boolean }} query
|
||||
@@ -263,7 +295,7 @@ async function pollPriceSetSaveTask(taskId, onProgress) {
|
||||
err.task = task
|
||||
throw err
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, 800))
|
||||
await new Promise(resolve => setTimeout(resolve, 400))
|
||||
}
|
||||
throw new Error('task timeout')
|
||||
}
|
||||
@@ -306,7 +338,7 @@ export async function updateSetDetailSurchargeAsync(details, onProgress) {
|
||||
err.task = task
|
||||
throw err
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, 800))
|
||||
await new Promise(resolve => setTimeout(resolve, 400))
|
||||
}
|
||||
throw new Error('surcharge save timeout')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user