大屏样式修改
This commit is contained in:
@@ -10,11 +10,31 @@ const service = axios.create({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 从 Cookies 获取 Token(与 klp-ui 保持一致)
|
||||||
|
const getToken = () => {
|
||||||
|
const name = 'Admin-Token'
|
||||||
|
const value = `; ${document.cookie}`
|
||||||
|
const parts = value.split(`; ${name}=`)
|
||||||
|
if (parts.length === 2) return parts.pop().split(';').shift()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
service.interceptors.request.use(
|
service.interceptors.request.use(
|
||||||
config => {
|
config => {
|
||||||
const token = localStorage.getItem('token')
|
let token = getToken()
|
||||||
|
// ========== 测试用:临时硬编码 Token ==========
|
||||||
|
// 如果没有从 Cookies 获取到 Token,使用测试 Token
|
||||||
|
if (!token) {
|
||||||
|
token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJGM2w5Nm5ncGV4ZDA4d1BUYWlvVmFreWhCUDdlc2gyeCIsInVzZXJJZCI6MX0.aP06S-5aJtukzMjmYW3d5zK3v10TOKcdNpROniv5lr8'
|
||||||
|
}
|
||||||
|
// ========== 测试用结束 ==========
|
||||||
|
|
||||||
|
console.log('请求URL:', config.url)
|
||||||
|
console.log('使用的Token:', token ? '已设置' : '未设置')
|
||||||
|
|
||||||
if (token) {
|
if (token) {
|
||||||
config.headers['Authorization'] = `Bearer ${token}`
|
// 尝试两种格式:Bearer 和 直接使用Token
|
||||||
|
config.headers['Authorization'] = token // 直接使用Token(不带Bearer前缀)
|
||||||
}
|
}
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
@@ -25,15 +45,36 @@ service.interceptors.request.use(
|
|||||||
|
|
||||||
service.interceptors.response.use(
|
service.interceptors.response.use(
|
||||||
response => {
|
response => {
|
||||||
const res = response.data
|
console.log('响应数据:', response.data)
|
||||||
if (res.code !== 200) {
|
|
||||||
console.error('请求失败:', res.message)
|
let res = response.data
|
||||||
return Promise.reject(new Error(res.message || 'Error'))
|
|
||||||
|
// 如果响应数据为空
|
||||||
|
if (!res) {
|
||||||
|
console.error('响应数据为空')
|
||||||
|
return Promise.reject(new Error('响应数据为空'))
|
||||||
}
|
}
|
||||||
return res.data
|
|
||||||
|
// 如果是字符串,尝试解析
|
||||||
|
if (typeof res === 'string') {
|
||||||
|
try {
|
||||||
|
res = JSON.parse(res)
|
||||||
|
} catch {
|
||||||
|
console.error('响应数据不是JSON格式:', res)
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查code
|
||||||
|
if (res.code !== undefined && res.code !== 200) {
|
||||||
|
console.error('请求失败 [code=' + res.code + ']:', res.message || res.msg)
|
||||||
|
return Promise.reject(new Error(res.message || res.msg || '请求失败'))
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.data !== undefined ? res.data : res
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
console.error('请求错误:', error)
|
console.error('请求错误:', error.response?.data || error.message || error)
|
||||||
return Promise.reject(error)
|
return Promise.reject(error)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
135
src/api/wms/actualWarehouse.js
Normal file
135
src/api/wms/actualWarehouse.js
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询实际库区/库位自关联列表
|
||||||
|
export function listActualWarehouse(query) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取完整三级目录
|
||||||
|
export function listActualWarehouseTree(query) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/tree',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询实际库区/库位自关联详细
|
||||||
|
export function getActualWarehouse(actualWarehouseId) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/' + actualWarehouseId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增实际库区/库位自关联
|
||||||
|
export function addActualWarehouse(data) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导入实际库区/库位
|
||||||
|
export function importActualWarehouse(data) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/importData',
|
||||||
|
method: 'post',
|
||||||
|
data,
|
||||||
|
headers: { 'Content-Type': 'multipart/form-data' }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量新增三级目录
|
||||||
|
export function createActualWarehouseHierarchy(data) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/hierarchy',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改实际库区/库位自关联
|
||||||
|
export function updateActualWarehouse(data) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除实际库区/库位自关联
|
||||||
|
export function delActualWarehouse(actualWarehouseId) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/' + actualWarehouseId,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取两级的树结构
|
||||||
|
export function treeActualWarehouseTwoLevel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/levelTwo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function generateLocations(data) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/generateLocations',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分割库区
|
||||||
|
*/
|
||||||
|
export function splitActualWarehouse(payload) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/split',
|
||||||
|
method: 'post',
|
||||||
|
timeout: 100000,
|
||||||
|
data: {
|
||||||
|
action: 1,
|
||||||
|
splitType: 0,
|
||||||
|
...payload
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合并库区
|
||||||
|
*/
|
||||||
|
export function mergeActualWarehouse(payload) {
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/merge',
|
||||||
|
method: 'post',
|
||||||
|
timeout: 100000,
|
||||||
|
data: {
|
||||||
|
action: 0,
|
||||||
|
splitType: 0,
|
||||||
|
...payload
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 强制释放库位
|
||||||
|
*/
|
||||||
|
export function forceReleaseLocation(actualWarehouseId) {
|
||||||
|
if (!actualWarehouseId) {
|
||||||
|
throw new Error('actualWarehouseId is required');
|
||||||
|
}
|
||||||
|
return request({
|
||||||
|
url: '/wms/actualWarehouse/release/' + actualWarehouseId,
|
||||||
|
method: 'put',
|
||||||
|
timeout: 100000,
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,12 +1,41 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
|
||||||
|
// klp-oa线上API地址(测试环境)
|
||||||
|
const baseURL = 'http://140.143.206.120:8080'
|
||||||
|
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
baseURL: '',
|
baseURL: baseURL,
|
||||||
timeout: 15000
|
timeout: 30000
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 从 Cookies 获取 Token(与 klp-ui 保持一致)
|
||||||
|
const getToken = () => {
|
||||||
|
const name = 'Admin-Token'
|
||||||
|
const value = `; ${document.cookie}`
|
||||||
|
const parts = value.split(`; ${name}=`)
|
||||||
|
if (parts.length === 2) return parts.pop().split(';').shift()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
service.interceptors.request.use(
|
service.interceptors.request.use(
|
||||||
config => {
|
config => {
|
||||||
|
// 携带Token
|
||||||
|
let token = getToken()
|
||||||
|
|
||||||
|
// ========== 测试用:临时硬编码 Token ==========
|
||||||
|
// 如果没有从 Cookies 获取到 Token,使用测试 Token
|
||||||
|
if (!token) {
|
||||||
|
token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIiwicm5TdHIiOiJGM2w5Nm5ncGV4ZDA4d1BUYWlvVmFreWhCUDdlc2gyeCIsInVzZXJJZCI6MX0.aP06S-5aJtukzMjmYW3d5zK3v10TOKcdNpROniv5lr8'
|
||||||
|
}
|
||||||
|
// ========== 测试用结束 ==========
|
||||||
|
|
||||||
|
console.log('请求URL:', config.url)
|
||||||
|
console.log('使用的Token:', token ? '已设置' : '未设置')
|
||||||
|
|
||||||
|
if (token) {
|
||||||
|
// 直接使用Token(不带Bearer前缀)
|
||||||
|
config.headers['Authorization'] = token
|
||||||
|
}
|
||||||
return config
|
return config
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
@@ -18,16 +47,22 @@ service.interceptors.request.use(
|
|||||||
service.interceptors.response.use(
|
service.interceptors.response.use(
|
||||||
response => {
|
response => {
|
||||||
const res = response.data
|
const res = response.data
|
||||||
if (res.code === 200) {
|
// 兼容多种返回格式
|
||||||
return res.data
|
if (res && res.code !== undefined) {
|
||||||
} else {
|
if (res.code === 200) {
|
||||||
console.error('Response error:', res.message)
|
return res.data
|
||||||
return Promise.reject(new Error(res.message || 'Error'))
|
} else {
|
||||||
|
console.warn('API error:', res.message)
|
||||||
|
return res.data || []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// 如果没有 code 字段,直接返回数据
|
||||||
|
return res
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
console.error('Response error:', error.message)
|
console.error('Response error:', error.message)
|
||||||
return Promise.reject(error)
|
// 返回空数组作为默认值,避免页面崩溃
|
||||||
|
return Promise.resolve([])
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user