material_manage_system/frontend/src/api/materials.js

56 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()
})
}
}