| | |
| | | return String(value ?? '').trim() |
| | | } |
| | | |
| | | function normalizeIds(ids) { |
| | | if (Array.isArray(ids)) { |
| | | return ids |
| | | .map((item) => Number(item)) |
| | | .filter((item) => Number.isFinite(item)) |
| | | .join(',') |
| | | } |
| | | return String(ids ?? '') |
| | | .split(',') |
| | | .map((item) => Number(item)) |
| | | .filter((item) => Number.isFinite(item)) |
| | | .join(',') |
| | | } |
| | | |
| | | function normalizeIdList(ids) { |
| | | if (Array.isArray(ids)) { |
| | | return ids.map((item) => Number(item)).filter((item) => Number.isFinite(item)) |
| | | } |
| | | return String(ids ?? '') |
| | | .split(',') |
| | | .map((item) => Number(item)) |
| | | .filter((item) => Number.isFinite(item)) |
| | | } |
| | | |
| | | function normalizeQueryParams(params = {}) { |
| | | const allowKeys = new Set([ |
| | | 'condition', |
| | | 'code', |
| | | 'name', |
| | | 'spec', |
| | | 'model', |
| | | 'color', |
| | | 'size', |
| | | 'barcode', |
| | | 'groupId', |
| | | 'unit', |
| | | 'status', |
| | | 'flagCheck', |
| | | 'validWarn' |
| | | ]) |
| | | const result = { |
| | | current: params.current || 1, |
| | | pageSize: params.pageSize || params.size || 20 |
| | | pageSize: params.pageSize || params.size || 20, |
| | | orderBy: normalizeText(params.orderBy) || 'create_time desc' |
| | | } |
| | | |
| | | ;['condition', 'code', 'name', 'spec', 'model', 'color', 'size', 'barcode', 'groupId'].forEach((key) => { |
| | | Array.from(allowKeys).forEach((key) => { |
| | | const value = params[key] |
| | | if (value === undefined || value === null || value === '') { |
| | | return |
| | |
| | | const trimmed = normalizeText(value) |
| | | if (trimmed) { |
| | | result[key] = trimmed |
| | | } |
| | | return |
| | | } |
| | | result[key] = value |
| | | }) |
| | | |
| | | Object.entries(params).forEach(([key, value]) => { |
| | | if (['current', 'pageSize', 'size', 'orderBy'].includes(key) || allowKeys.has(key)) { |
| | | return |
| | | } |
| | | if (value === undefined || value === null || value === '') { |
| | | return |
| | | } |
| | | if (typeof value === 'string') { |
| | | const trimmed = normalizeText(value) |
| | | if (trimmed) { |
| | | result[key] = trimmed |
| | | } |
| | | return |
| | | } |
| | | if (Array.isArray(value)) { |
| | | if (value.length) { |
| | | result[key] = value |
| | | } |
| | | return |
| | | } |
| | |
| | | return request.get({ url: `/matnr/${id}` }) |
| | | } |
| | | |
| | | export function fetchGetMatnrMany(ids) { |
| | | return request.post({ url: `/matnr/many/${normalizeIds(ids)}` }) |
| | | } |
| | | |
| | | export function fetchEnabledFields() { |
| | | return request.get({ url: '/fields/enable/list' }) |
| | | } |
| | | |
| | | export function fetchSaveMatnr(params = {}) { |
| | | return request.post({ url: '/matnr/save', params }) |
| | | } |
| | | |
| | | export function fetchUpdateMatnr(params = {}) { |
| | | return request.post({ url: '/matnr/update', params }) |
| | | } |
| | | |
| | | export function fetchDeleteMatnr(ids) { |
| | | return request.post({ url: `/matnr/remove/${normalizeIds(ids)}` }) |
| | | } |
| | | |
| | | export function fetchBindMatnrGroup(payload = {}) { |
| | | return request.post({ |
| | | url: '/matnr/group/bind', |
| | | params: { |
| | | ids: normalizeIdList(payload.ids), |
| | | ...(payload.groupId !== undefined && payload.groupId !== null && payload.groupId !== '' |
| | | ? { groupId: Number(payload.groupId) } |
| | | : {}) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export function fetchBatchUpdateMatnr(payload = {}) { |
| | | const matnr = payload.matnr && typeof payload.matnr === 'object' ? payload.matnr : {} |
| | | return request.post({ |
| | | url: '/matnr/batch/update', |
| | | params: { |
| | | ids: normalizeIdList(payload.ids), |
| | | matnr: Object.fromEntries( |
| | | Object.entries(matnr).filter( |
| | | ([, value]) => value !== undefined && value !== null && value !== '' |
| | | ) |
| | | ) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export function fetchMatnrGroupTree(params = {}) { |
| | | return request.post({ |
| | | url: '/matnrGroup/tree', |
| | |
| | | }) |
| | | } |
| | | |
| | | export async function fetchExportMatnrReport(payload = {}, options = {}) { |
| | | return fetch(`${import.meta.env.VITE_API_URL}/matnr/export`, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | ...(options.headers || {}) |
| | | }, |
| | | body: JSON.stringify(payload) |
| | | }) |
| | | } |
| | | |
| | | export async function fetchDownloadMatnrTemplate(payload = {}, options = {}) { |
| | | return fetch(`${import.meta.env.VITE_API_URL}/matnr/template/download`, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | ...(options.headers || {}) |
| | | }, |
| | | body: JSON.stringify(payload) |
| | | }) |
| | | } |
| | | |
| | | export function fetchImportMatnr(file) { |
| | | const formData = new FormData() |
| | | formData.append('file', file) |
| | | return request.post({ |
| | | url: '/matnr/import', |
| | | data: formData, |
| | | headers: { |
| | | 'Content-Type': 'multipart/form-data' |
| | | } |
| | | }) |
| | | } |