56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
import request from './index'
|
||
import { getOrganizationId } from '../utils/organizationContext'
|
||
|
||
// 下载接口绕开 axios,得自己带令牌与当前公司,否则 401 / 400。
|
||
// 令牌沿用拦截器同款读法(localStorage),避免在 API 模块里依赖 Pinia 激活时序。
|
||
function downloadHeaders() {
|
||
const token = localStorage.getItem('wmms_token')
|
||
const organizationId = getOrganizationId()
|
||
return {
|
||
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
||
...(organizationId ? { 'X-Organization-ID': String(organizationId) } : {})
|
||
}
|
||
}
|
||
|
||
export const materialsApi = {
|
||
getAll(params = {}) {
|
||
return request.get('/materials', { params })
|
||
},
|
||
getById(id) {
|
||
return request.get(`/materials/${id}`)
|
||
},
|
||
checkDuplicates(data) {
|
||
return request.post('/materials/duplicate-check', data)
|
||
},
|
||
create(data) {
|
||
return request.post('/materials', data)
|
||
},
|
||
update(id, data) {
|
||
return request.put(`/materials/${id}`, data)
|
||
},
|
||
obsolete(id) {
|
||
return request.post(`/materials/${id}/obsolete`)
|
||
},
|
||
restore(id) {
|
||
return request.post(`/materials/${id}/restore`)
|
||
},
|
||
uploadImage(formData) {
|
||
return request.post('/upload', formData, {
|
||
headers: { 'Content-Type': 'multipart/form-data' }
|
||
})
|
||
},
|
||
importFile(formData) {
|
||
// silent:校验失败的明细要自己弹窗展示,不让拦截器先弹一句笼统提示
|
||
return request.post('/material-import', formData, {
|
||
headers: { 'Content-Type': 'multipart/form-data' },
|
||
silent: true
|
||
})
|
||
},
|
||
downloadImportTemplate() {
|
||
// 下载走原生 fetch:响应是文件流,axios 拦截器只认 JSON 的 code 字段
|
||
return fetch('/api/material-import/template', {
|
||
headers: downloadHeaders()
|
||
})
|
||
}
|
||
}
|