测试暂未发现问题
This commit is contained in:
@@ -1,41 +1,26 @@
|
||||
import axios from 'axios'
|
||||
import { mockContractAPI } from './mock/contract'
|
||||
|
||||
// 开关:true 用 mock,false 用真实接口
|
||||
const USE_MOCK = true
|
||||
|
||||
// axios 实例
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 5000
|
||||
})
|
||||
import request from './request'
|
||||
|
||||
// 获取合同列表
|
||||
export const getContractList = (params) => {
|
||||
if (USE_MOCK) return mockContractAPI.getList(params)
|
||||
return request.get('/contracts', { params }).then(r => r.data)
|
||||
return request.get('/contracts', { params })
|
||||
}
|
||||
|
||||
// 获取合同详情
|
||||
export const getContractDetail = (id) => {
|
||||
if (USE_MOCK) return mockContractAPI.getDetail(id)
|
||||
return request.get(`/contracts/${id}`).then(r => r.data)
|
||||
return request.get(`/contracts/${id}`)
|
||||
}
|
||||
|
||||
// 新增合同
|
||||
export const createContract = (data) => {
|
||||
if (USE_MOCK) return mockContractAPI.create(data)
|
||||
return request.post('/contracts', data).then(r => r.data)
|
||||
return request.post('/contracts', data)
|
||||
}
|
||||
|
||||
// 更新合同
|
||||
export const updateContract = (id, data) => {
|
||||
if (USE_MOCK) return mockContractAPI.update(id, data)
|
||||
return request.put(`/contracts/${id}`, data).then(r => r.data)
|
||||
return request.put(`/contracts/${id}`, data)
|
||||
}
|
||||
|
||||
// 删除合同
|
||||
export const deleteContractAPI = (id) => {
|
||||
if (USE_MOCK) return mockContractAPI.delete(id)
|
||||
return request.delete(`/contracts/${id}`).then(r => r.data)
|
||||
return request.delete(`/contracts/${id}`)
|
||||
}
|
||||
|
||||
@@ -1,41 +1,26 @@
|
||||
import axios from 'axios'
|
||||
import { mockCustomerAPI } from './mock/customer'
|
||||
|
||||
// 开关:true 用 mock,false 用真实接口
|
||||
const USE_MOCK = true
|
||||
|
||||
// axios 实例
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 5000
|
||||
})
|
||||
import request from './request'
|
||||
|
||||
// 获取客户列表
|
||||
export const getCustomerList = (params) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.getList(params)
|
||||
return request.get('/customers', { params }).then(r => r.data)
|
||||
export const getCustomerList = (params, config) => {
|
||||
return request.get('/customers', { params, ...config })
|
||||
}
|
||||
|
||||
// 获取客户详情
|
||||
export const getCustomerDetail = (id) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.getDetail(id)
|
||||
return request.get(`/customers/${id}`).then(r => r.data)
|
||||
return request.get(`/customers/${id}`)
|
||||
}
|
||||
|
||||
// 新增客户
|
||||
export const createCustomer = (data) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.create(data)
|
||||
return request.post('/customers', data).then(r => r.data)
|
||||
return request.post('/customers', data)
|
||||
}
|
||||
|
||||
// 更新客户
|
||||
export const updateCustomer = (id, data) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.update(id, data)
|
||||
return request.put(`/customers/${id}`, data).then(r => r.data)
|
||||
return request.put(`/customers/${id}`, data)
|
||||
}
|
||||
|
||||
// 删除客户
|
||||
export const deleteCustomerAPI = (id) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.delete(id)
|
||||
return request.delete(`/customers/${id}`).then(r => r.data)
|
||||
return request.delete(`/customers/${id}`)
|
||||
}
|
||||
|
||||
@@ -1,41 +1,31 @@
|
||||
import axios from 'axios'
|
||||
import { mockEmployeeAPI } from './mock/employee'
|
||||
|
||||
// 开关:true 用 mock,false 用真实接口
|
||||
const USE_MOCK = true
|
||||
|
||||
// axios 实例
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 5000
|
||||
})
|
||||
import request from './request'
|
||||
|
||||
// 获取员工列表
|
||||
export const getEmployeeList = (params) => {
|
||||
if (USE_MOCK) return mockEmployeeAPI.getList(params)
|
||||
return request.get('/employees', { params }).then(r => r.data)
|
||||
export const getEmployeeList = (params, config) => {
|
||||
return request.get('/employees', { params, ...config })
|
||||
}
|
||||
|
||||
// 获取简易员工列表(无数据范围限制,支持按部门过滤)
|
||||
export const getSimpleEmployeeList = (params, config) => {
|
||||
return request.get('/employees/simple', { params, ...config })
|
||||
}
|
||||
|
||||
// 获取员工详情
|
||||
export const getEmployeeDetail = (id) => {
|
||||
if (USE_MOCK) return mockEmployeeAPI.getDetail(id)
|
||||
return request.get(`/employees/${id}`).then(r => r.data)
|
||||
return request.get(`/employees/${id}`)
|
||||
}
|
||||
|
||||
// 新增员工
|
||||
export const createEmployee = (data) => {
|
||||
if (USE_MOCK) return mockEmployeeAPI.create(data)
|
||||
return request.post('/employees', data).then(r => r.data)
|
||||
return request.post('/employees', data)
|
||||
}
|
||||
|
||||
// 更新员工
|
||||
export const updateEmployee = (id, data) => {
|
||||
if (USE_MOCK) return mockEmployeeAPI.update(id, data)
|
||||
return request.put(`/employees/${id}`, data).then(r => r.data)
|
||||
return request.put(`/employees/${id}`, data)
|
||||
}
|
||||
|
||||
// 删除员工
|
||||
export const deleteEmployeeAPI = (id) => {
|
||||
if (USE_MOCK) return mockEmployeeAPI.delete(id)
|
||||
return request.delete(`/employees/${id}`).then(r => r.data)
|
||||
return request.delete(`/employees/${id}`)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
const mockContracts = [
|
||||
{
|
||||
id: 1,
|
||||
contract_no: 'HT-2025-001',
|
||||
contract_name: '蜜雪冰城加盟合同',
|
||||
type: '加盟合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
@@ -17,7 +16,6 @@ const mockContracts = [
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
contract_no: 'HT-2025-002',
|
||||
contract_name: '原材料供货合同',
|
||||
type: '供货合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
@@ -32,7 +30,6 @@ const mockContracts = [
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
contract_no: 'HT-2024-010',
|
||||
contract_name: '门店租赁合同',
|
||||
type: '租赁合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
@@ -47,7 +44,6 @@ const mockContracts = [
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
contract_no: 'HT-2025-003',
|
||||
contract_name: '设备维护服务合同',
|
||||
type: '服务合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
@@ -76,7 +72,7 @@ export const mockContractAPI = {
|
||||
if (params.keyword) {
|
||||
const keyword = params.keyword.toLowerCase()
|
||||
result = result.filter(item =>
|
||||
item.contract_no.toLowerCase().includes(keyword) ||
|
||||
String(item.id).includes(keyword) ||
|
||||
item.contract_name.toLowerCase().includes(keyword) ||
|
||||
item.party_b.toLowerCase().includes(keyword)
|
||||
)
|
||||
|
||||
@@ -9,7 +9,6 @@ const mockCustomers = [
|
||||
district: '南山区',
|
||||
address: '科技园路1号',
|
||||
email: 'zhangsan@example.com',
|
||||
customer_type: 'VIP',
|
||||
create_time: '2025-01-15 10:30:00'
|
||||
},
|
||||
{
|
||||
@@ -21,7 +20,6 @@ const mockCustomers = [
|
||||
district: '西湖区',
|
||||
address: '文三路100号',
|
||||
email: 'lisi@example.com',
|
||||
customer_type: 'Normal',
|
||||
create_time: '2025-02-20 14:20:00'
|
||||
},
|
||||
{
|
||||
@@ -33,7 +31,6 @@ const mockCustomers = [
|
||||
district: '武侯区',
|
||||
address: '天府大道200号',
|
||||
email: 'wangwu@example.com',
|
||||
customer_type: 'VIP',
|
||||
create_time: '2025-03-10 09:15:00'
|
||||
},
|
||||
{
|
||||
@@ -45,7 +42,6 @@ const mockCustomers = [
|
||||
district: '岳麓区',
|
||||
address: '麓山南路100号',
|
||||
email: 'zhaoliu@example.com',
|
||||
customer_type: 'Normal',
|
||||
create_time: '2025-04-05 16:45:00'
|
||||
}
|
||||
]
|
||||
@@ -88,11 +84,6 @@ export const mockCustomerAPI = {
|
||||
}
|
||||
}
|
||||
|
||||
// 客户类型筛选
|
||||
if (params.customer_type) {
|
||||
result = result.filter(item => item.customer_type === params.customer_type)
|
||||
}
|
||||
|
||||
// 地区筛选(省/市/区)
|
||||
if (params.province) {
|
||||
result = result.filter(item => item.province === params.province)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// 模拟员工数据
|
||||
const mockEmployees = [
|
||||
// 模拟员工数据(单一数据源,同时包含用户字段)
|
||||
export const mockEmployees = [
|
||||
{
|
||||
id: 1,
|
||||
name: '张伟',
|
||||
@@ -14,6 +14,11 @@ const mockEmployees = [
|
||||
email: 'zhangwei@mxbc.com',
|
||||
status: 1,
|
||||
remark: '负责门店日常运营',
|
||||
// 用户字段
|
||||
username: 'zhangwei',
|
||||
password: '123456',
|
||||
user_type: 'admin',
|
||||
user_status: '1',
|
||||
created_at: '2023-03-15 09:00:00',
|
||||
updated_at: '2023-03-15 09:00:00'
|
||||
},
|
||||
@@ -31,6 +36,11 @@ const mockEmployees = [
|
||||
email: 'lina@mxbc.com',
|
||||
status: 1,
|
||||
remark: '',
|
||||
// 用户字段
|
||||
username: 'lina',
|
||||
password: '123456',
|
||||
user_type: 'user',
|
||||
user_status: '1',
|
||||
created_at: '2023-06-01 09:00:00',
|
||||
updated_at: '2023-06-01 09:00:00'
|
||||
},
|
||||
@@ -48,6 +58,11 @@ const mockEmployees = [
|
||||
email: 'wangqiang@mxbc.com',
|
||||
status: 1,
|
||||
remark: '负责系统架构设计',
|
||||
// 用户字段(无用户账号)
|
||||
username: null,
|
||||
password: null,
|
||||
user_type: null,
|
||||
user_status: null,
|
||||
created_at: '2022-11-10 09:00:00',
|
||||
updated_at: '2022-11-10 09:00:00'
|
||||
},
|
||||
@@ -65,6 +80,11 @@ const mockEmployees = [
|
||||
email: 'liuyang@mxbc.com',
|
||||
status: 0,
|
||||
remark: '已离职',
|
||||
// 用户字段(无用户账号)
|
||||
username: null,
|
||||
password: null,
|
||||
user_type: null,
|
||||
user_status: null,
|
||||
created_at: '2024-01-20 09:00:00',
|
||||
updated_at: '2025-03-01 17:00:00'
|
||||
},
|
||||
@@ -82,6 +102,11 @@ const mockEmployees = [
|
||||
email: 'zhaomin@mxbc.com',
|
||||
status: 1,
|
||||
remark: '',
|
||||
// 用户字段
|
||||
username: 'zhaomin',
|
||||
password: '123456',
|
||||
user_type: 'user',
|
||||
user_status: '0',
|
||||
created_at: '2023-09-05 09:00:00',
|
||||
updated_at: '2023-09-05 09:00:00'
|
||||
},
|
||||
@@ -99,6 +124,11 @@ const mockEmployees = [
|
||||
email: 'chengang@mxbc.com',
|
||||
status: 1,
|
||||
remark: '负责原料入库出库',
|
||||
// 用户字段(无用户账号)
|
||||
username: null,
|
||||
password: null,
|
||||
user_type: null,
|
||||
user_status: null,
|
||||
created_at: '2022-04-12 09:00:00',
|
||||
updated_at: '2022-04-12 09:00:00'
|
||||
}
|
||||
@@ -169,6 +199,11 @@ export const mockEmployeeAPI = {
|
||||
id: maxId + 1,
|
||||
status: 1,
|
||||
...data,
|
||||
// 用户字段初始为空
|
||||
username: null,
|
||||
password: null,
|
||||
user_type: null,
|
||||
user_status: null,
|
||||
created_at: now,
|
||||
updated_at: now
|
||||
}
|
||||
|
||||
@@ -1,61 +1,26 @@
|
||||
// 模拟用户数据
|
||||
const mockUsers = [
|
||||
{
|
||||
id: 1,
|
||||
username: 'admin',
|
||||
password: '123456',
|
||||
name: '系统管理员',
|
||||
user_type: 'admin',
|
||||
status: '1',
|
||||
createdate: '2025-01-10 08:00:00'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
username: 'zhangsan',
|
||||
password: '123456',
|
||||
name: '张三',
|
||||
user_type: 'user',
|
||||
status: '1',
|
||||
createdate: '2025-02-15 10:30:00'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
username: 'lisi',
|
||||
password: '123456',
|
||||
name: '李四',
|
||||
user_type: 'user',
|
||||
status: '0',
|
||||
createdate: '2025-03-20 14:00:00'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
username: 'wangwu',
|
||||
password: '123456',
|
||||
name: '王五',
|
||||
user_type: 'admin',
|
||||
status: '1',
|
||||
createdate: '2025-04-05 09:15:00'
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
username: 'zhaoliu',
|
||||
password: '123456',
|
||||
name: '赵六',
|
||||
user_type: 'user',
|
||||
status: '0',
|
||||
createdate: '2025-05-10 16:45:00'
|
||||
}
|
||||
]
|
||||
import { mockEmployees } from './employee'
|
||||
|
||||
// 模拟网络延迟
|
||||
const delay = (ms = 300) => new Promise(r => setTimeout(r, ms))
|
||||
|
||||
// Mock API
|
||||
// 将员工记录转换为用户格式(字段名映射)
|
||||
const toUserFormat = (employee) => ({
|
||||
id: employee.id,
|
||||
username: employee.username,
|
||||
name: employee.name,
|
||||
user_type: employee.user_type,
|
||||
status: employee.user_status,
|
||||
employee_id: employee.id,
|
||||
createdate: employee.created_at
|
||||
})
|
||||
|
||||
// Mock API(操作同一数据源 mockEmployees)
|
||||
export const mockUserAPI = {
|
||||
// 获取列表
|
||||
// 获取用户列表(返回有用户账号的员工记录)
|
||||
async getList(params = {}) {
|
||||
await delay()
|
||||
let result = [...mockUsers]
|
||||
// 筛选有用户名的记录(即已创建用户的员工)
|
||||
let result = mockEmployees.filter(item => item.username).map(toUserFormat)
|
||||
|
||||
// 关键词搜索
|
||||
if (params.keyword) {
|
||||
@@ -67,16 +32,15 @@ export const mockUserAPI = {
|
||||
result = result.filter(item => String(item.id) === keyword)
|
||||
} else if (searchField === '1') {
|
||||
// 用户名:模糊匹配
|
||||
result = result.filter(item => item.username.includes(keyword))
|
||||
result = result.filter(item => item.username && item.username.includes(keyword))
|
||||
} else if (searchField === '3') {
|
||||
// 真实姓名:模糊匹配
|
||||
result = result.filter(item => item.name.includes(keyword))
|
||||
result = result.filter(item => item.name.toLowerCase().includes(keyword))
|
||||
} else {
|
||||
// 默认:模糊匹配所有字段
|
||||
result = result.filter(item =>
|
||||
String(item.id).includes(keyword) ||
|
||||
item.username.includes(keyword) ||
|
||||
item.name.includes(keyword)
|
||||
(item.username && item.username.includes(keyword)) ||
|
||||
item.name.toLowerCase().includes(keyword)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -94,47 +58,80 @@ export const mockUserAPI = {
|
||||
return { code: 200, data: result, total: result.length }
|
||||
},
|
||||
|
||||
// 获取详情
|
||||
// 获取用户详情
|
||||
async getDetail(id) {
|
||||
await delay()
|
||||
const user = mockUsers.find(item => item.id === id)
|
||||
if (user) {
|
||||
return { code: 200, data: user }
|
||||
const employee = mockEmployees.find(item => item.id === id && item.username)
|
||||
if (employee) {
|
||||
return { code: 200, data: toUserFormat(employee) }
|
||||
}
|
||||
return { code: 404, message: '用户不存在' }
|
||||
},
|
||||
|
||||
// 新增
|
||||
// 创建用户(实际上是更新已有员工记录,添加用户字段)
|
||||
async create(data) {
|
||||
await delay()
|
||||
const maxId = mockUsers.length > 0 ? Math.max(...mockUsers.map(item => item.id)) : 0
|
||||
const newUser = {
|
||||
id: maxId + 1,
|
||||
...data,
|
||||
createdate: new Date().toISOString().replace('T', ' ').slice(0, 19)
|
||||
// 查找对应的员工记录
|
||||
const employeeIndex = mockEmployees.findIndex(item => item.id === data.id || item.id === data.employee_id)
|
||||
if (employeeIndex === -1) {
|
||||
return { code: 404, message: '关联员工不存在' }
|
||||
}
|
||||
mockUsers.push(newUser)
|
||||
return { code: 200, data: newUser, message: '新增成功' }
|
||||
|
||||
// 检查是否已有用户账号
|
||||
if (mockEmployees[employeeIndex].username) {
|
||||
return { code: 400, message: '该员工已有用户账号' }
|
||||
}
|
||||
|
||||
// 更新员工记录,添加用户字段
|
||||
mockEmployees[employeeIndex] = {
|
||||
...mockEmployees[employeeIndex],
|
||||
username: data.username,
|
||||
password: data.password,
|
||||
user_type: data.user_type || 'user',
|
||||
user_status: data.status || '1',
|
||||
updated_at: new Date().toISOString().replace('T', ' ').slice(0, 19)
|
||||
}
|
||||
|
||||
return { code: 200, data: toUserFormat(mockEmployees[employeeIndex]), message: '用户创建成功' }
|
||||
},
|
||||
|
||||
// 更新
|
||||
// 更新用户(更新用户字段)
|
||||
async update(id, data) {
|
||||
await delay()
|
||||
const index = mockUsers.findIndex(item => item.id === id)
|
||||
const index = mockEmployees.findIndex(item => item.id === id && item.username)
|
||||
if (index !== -1) {
|
||||
mockUsers[index] = { ...mockUsers[index], ...data }
|
||||
return { code: 200, data: mockUsers[index], message: '更新成功' }
|
||||
// 只更新用户相关字段
|
||||
const updateFields = {}
|
||||
if (data.username !== undefined) updateFields.username = data.username
|
||||
if (data.password !== undefined) updateFields.password = data.password
|
||||
if (data.user_type !== undefined) updateFields.user_type = data.user_type
|
||||
if (data.status !== undefined) updateFields.user_status = data.status
|
||||
|
||||
mockEmployees[index] = {
|
||||
...mockEmployees[index],
|
||||
...updateFields,
|
||||
updated_at: new Date().toISOString().replace('T', ' ').slice(0, 19)
|
||||
}
|
||||
return { code: 200, data: toUserFormat(mockEmployees[index]), message: '更新成功' }
|
||||
}
|
||||
return { code: 404, message: '用户不存在' }
|
||||
},
|
||||
|
||||
// 删除
|
||||
// 删除用户(清除用户字段,保留员工记录)
|
||||
async delete(id) {
|
||||
await delay()
|
||||
const index = mockUsers.findIndex(item => item.id === id)
|
||||
const index = mockEmployees.findIndex(item => item.id === id && item.username)
|
||||
if (index !== -1) {
|
||||
mockUsers.splice(index, 1)
|
||||
return { code: 200, message: '删除成功' }
|
||||
// 清除用户字段,而不是删除记录
|
||||
mockEmployees[index] = {
|
||||
...mockEmployees[index],
|
||||
username: null,
|
||||
password: null,
|
||||
user_type: null,
|
||||
user_status: null,
|
||||
updated_at: new Date().toISOString().replace('T', ' ').slice(0, 19)
|
||||
}
|
||||
return { code: 200, message: '用户已删除' }
|
||||
}
|
||||
return { code: 404, message: '用户不存在' }
|
||||
}
|
||||
|
||||
@@ -1,41 +1,26 @@
|
||||
import axios from 'axios'
|
||||
import { mockProductsAPI } from './mock/products'
|
||||
|
||||
// 开关:true 用 mock,false 用真实接口
|
||||
const USE_MOCK = true
|
||||
|
||||
// axios 实例
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 5000
|
||||
})
|
||||
import request from './request'
|
||||
|
||||
// 获取产品列表
|
||||
export const getProductsList = (params) => {
|
||||
if (USE_MOCK) return mockProductsAPI.getList(params)
|
||||
return request.get('/products', { params }).then(r => r.data)
|
||||
return request.get('/products', { params })
|
||||
}
|
||||
|
||||
// 获取产品详情
|
||||
export const getProductsDetail = (id) => {
|
||||
if (USE_MOCK) return mockProductsAPI.getDetail(id)
|
||||
return request.get(`/products/${id}`).then(r => r.data)
|
||||
return request.get(`/products/${id}`)
|
||||
}
|
||||
|
||||
// 新增产品
|
||||
export const createProducts = (data) => {
|
||||
if (USE_MOCK) return mockProductsAPI.create(data)
|
||||
return request.post('/products', data).then(r => r.data)
|
||||
return request.post('/products', data)
|
||||
}
|
||||
|
||||
// 更新产品
|
||||
export const updateProducts = (id, data) => {
|
||||
if (USE_MOCK) return mockProductsAPI.update(id, data)
|
||||
return request.put(`/products/${id}`, data).then(r => r.data)
|
||||
return request.put(`/products/${id}`, data)
|
||||
}
|
||||
|
||||
// 删除产品
|
||||
export const deleteProductsAPI = (id) => {
|
||||
if (USE_MOCK) return mockProductsAPI.delete(id)
|
||||
return request.delete(`/products/${id}`).then(r => r.data)
|
||||
return request.delete(`/products/${id}`)
|
||||
}
|
||||
|
||||
53
src/api/request.js
Normal file
53
src/api/request.js
Normal file
@@ -0,0 +1,53 @@
|
||||
import axios from 'axios'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import router from '../router'
|
||||
|
||||
// 创建 axios 实例
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 10000
|
||||
})
|
||||
|
||||
// 请求拦截器:自动添加 token
|
||||
request.interceptors.request.use(
|
||||
(config) => {
|
||||
const token = localStorage.getItem('token')
|
||||
if (token) {
|
||||
config.headers.Authorization = `Bearer ${token}`
|
||||
}
|
||||
return config
|
||||
},
|
||||
(error) => {
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
// 响应拦截器:统一处理错误(config.quiet = true 时不弹窗)
|
||||
request.interceptors.response.use(
|
||||
(response) => {
|
||||
return response.data
|
||||
},
|
||||
(error) => {
|
||||
const status = error.response?.status
|
||||
const message = error.response?.data?.message || '请求失败'
|
||||
const quiet = error.config?.quiet
|
||||
const isLogin = error.config?.url?.includes('/user/login')
|
||||
|
||||
if (!quiet) {
|
||||
if (status === 401) {
|
||||
localStorage.removeItem('token')
|
||||
localStorage.removeItem('userInfo')
|
||||
router.push('/login')
|
||||
ElMessage.error('登录已过期,请重新登录')
|
||||
} else if (status === 403 && !isLogin) {
|
||||
ElMessage.error('权限不足')
|
||||
} else {
|
||||
ElMessage.error(message)
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
export default request
|
||||
@@ -1,41 +1,26 @@
|
||||
import axios from 'axios'
|
||||
import { mockServiceAPI } from './mock/service'
|
||||
|
||||
// 开关:true 用 mock,false 用真实接口
|
||||
const USE_MOCK = true
|
||||
|
||||
// axios 实例
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 5000
|
||||
})
|
||||
import request from './request'
|
||||
|
||||
// 获取售后列表
|
||||
export const getServiceList = (params) => {
|
||||
if (USE_MOCK) return mockServiceAPI.getList(params)
|
||||
return request.get('/after-sales', { params }).then(r => r.data)
|
||||
return request.get('/after-sales', { params })
|
||||
}
|
||||
|
||||
// 获取售后详情
|
||||
export const getServiceDetail = (id) => {
|
||||
if (USE_MOCK) return mockServiceAPI.getDetail(id)
|
||||
return request.get(`/after-sales/${id}`).then(r => r.data)
|
||||
return request.get(`/after-sales/${id}`)
|
||||
}
|
||||
|
||||
// 新增售后
|
||||
export const createService = (data) => {
|
||||
if (USE_MOCK) return mockServiceAPI.create(data)
|
||||
return request.post('/after-sales', data).then(r => r.data)
|
||||
return request.post('/after-sales', data)
|
||||
}
|
||||
|
||||
// 更新售后
|
||||
export const updateService = (id, data) => {
|
||||
if (USE_MOCK) return mockServiceAPI.update(id, data)
|
||||
return request.put(`/after-sales/${id}`, data).then(r => r.data)
|
||||
return request.put(`/after-sales/${id}`, data)
|
||||
}
|
||||
|
||||
// 删除售后
|
||||
export const deleteServiceAPI = (id) => {
|
||||
if (USE_MOCK) return mockServiceAPI.delete(id)
|
||||
return request.delete(`/after-sales/${id}`).then(r => r.data)
|
||||
return request.delete(`/after-sales/${id}`)
|
||||
}
|
||||
|
||||
26
src/api/suppliers.js
Normal file
26
src/api/suppliers.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import request from './request'
|
||||
|
||||
// 获取供应商列表
|
||||
export const getSupplierList = (params, config) => {
|
||||
return request.get('/suppliers', { params, ...config })
|
||||
}
|
||||
|
||||
// 获取供应商详情
|
||||
export const getSupplierDetail = (id) => {
|
||||
return request.get(`/suppliers/${id}`)
|
||||
}
|
||||
|
||||
// 新增供应商
|
||||
export const createSupplier = (data) => {
|
||||
return request.post('/suppliers', data)
|
||||
}
|
||||
|
||||
// 更新供应商
|
||||
export const updateSupplier = (id, data) => {
|
||||
return request.put(`/suppliers/${id}`, data)
|
||||
}
|
||||
|
||||
// 删除供应商
|
||||
export const deleteSupplierAPI = (id) => {
|
||||
return request.delete(`/suppliers/${id}`)
|
||||
}
|
||||
@@ -1,41 +1,31 @@
|
||||
import axios from 'axios'
|
||||
import { mockUserAPI } from './mock/user'
|
||||
import request from './request'
|
||||
|
||||
// 开关:true 用 mock,false 用真实接口
|
||||
const USE_MOCK = true
|
||||
// 获取用户列表(管理员)
|
||||
export const getUserList = (params, config) => {
|
||||
return request.get('/users', { params, ...config })
|
||||
}
|
||||
|
||||
// axios 实例
|
||||
const request = axios.create({
|
||||
baseURL: '/api',
|
||||
timeout: 5000
|
||||
})
|
||||
|
||||
// 获取用户列表
|
||||
export const getUserList = (params) => {
|
||||
if (USE_MOCK) return mockUserAPI.getList(params)
|
||||
return request.get('/users', { params }).then(r => r.data)
|
||||
// 获取简易用户列表(用于下拉选择,仅需登录)
|
||||
export const getSimpleUserList = (config) => {
|
||||
return request.get('/user/list', config)
|
||||
}
|
||||
|
||||
// 获取用户详情
|
||||
export const getUserDetail = (id) => {
|
||||
if (USE_MOCK) return mockUserAPI.getDetail(id)
|
||||
return request.get(`/users/${id}`).then(r => r.data)
|
||||
return request.get(`/users/${id}`)
|
||||
}
|
||||
|
||||
// 新增用户
|
||||
// 创建用户
|
||||
export const createUser = (data) => {
|
||||
if (USE_MOCK) return mockUserAPI.create(data)
|
||||
return request.post('/users', data).then(r => r.data)
|
||||
return request.post('/users', data)
|
||||
}
|
||||
|
||||
// 更新用户
|
||||
export const updateUser = (id, data) => {
|
||||
if (USE_MOCK) return mockUserAPI.update(id, data)
|
||||
return request.put(`/users/${id}`, data).then(r => r.data)
|
||||
return request.put(`/users/${id}`, data)
|
||||
}
|
||||
|
||||
// 删除用户
|
||||
export const deleteUserAPI = (id) => {
|
||||
if (USE_MOCK) return mockUserAPI.delete(id)
|
||||
return request.delete(`/users/${id}`).then(r => r.data)
|
||||
return request.delete(`/users/${id}`)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user