暂存更改
This commit is contained in:
41
src/api/contract.js
Normal file
41
src/api/contract.js
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
})
|
||||
|
||||
// 获取合同列表
|
||||
export const getContractList = (params) => {
|
||||
if (USE_MOCK) return mockContractAPI.getList(params)
|
||||
return request.get('/contracts', { params }).then(r => r.data)
|
||||
}
|
||||
|
||||
// 获取合同详情
|
||||
export const getContractDetail = (id) => {
|
||||
if (USE_MOCK) return mockContractAPI.getDetail(id)
|
||||
return request.get(`/contracts/${id}`).then(r => r.data)
|
||||
}
|
||||
|
||||
// 新增合同
|
||||
export const createContract = (data) => {
|
||||
if (USE_MOCK) return mockContractAPI.create(data)
|
||||
return request.post('/contracts', data).then(r => r.data)
|
||||
}
|
||||
|
||||
// 更新合同
|
||||
export const updateContract = (id, data) => {
|
||||
if (USE_MOCK) return mockContractAPI.update(id, data)
|
||||
return request.put(`/contracts/${id}`, data).then(r => r.data)
|
||||
}
|
||||
|
||||
// 删除合同
|
||||
export const deleteContractAPI = (id) => {
|
||||
if (USE_MOCK) return mockContractAPI.delete(id)
|
||||
return request.delete(`/contracts/${id}`).then(r => r.data)
|
||||
}
|
||||
41
src/api/customer.js
Normal file
41
src/api/customer.js
Normal file
@@ -0,0 +1,41 @@
|
||||
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
|
||||
})
|
||||
|
||||
// 获取客户列表
|
||||
export const getCustomerList = (params) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.getList(params)
|
||||
return request.get('/customers', { params }).then(r => r.data)
|
||||
}
|
||||
|
||||
// 获取客户详情
|
||||
export const getCustomerDetail = (id) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.getDetail(id)
|
||||
return request.get(`/customers/${id}`).then(r => r.data)
|
||||
}
|
||||
|
||||
// 新增客户
|
||||
export const createCustomer = (data) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.create(data)
|
||||
return request.post('/customers', data).then(r => r.data)
|
||||
}
|
||||
|
||||
// 更新客户
|
||||
export const updateCustomer = (id, data) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.update(id, data)
|
||||
return request.put(`/customers/${id}`, data).then(r => r.data)
|
||||
}
|
||||
|
||||
// 删除客户
|
||||
export const deleteCustomerAPI = (id) => {
|
||||
if (USE_MOCK) return mockCustomerAPI.delete(id)
|
||||
return request.delete(`/customers/${id}`).then(r => r.data)
|
||||
}
|
||||
151
src/api/mock/contract.js
Normal file
151
src/api/mock/contract.js
Normal file
@@ -0,0 +1,151 @@
|
||||
// 模拟合同数据
|
||||
const mockContracts = [
|
||||
{
|
||||
id: 1,
|
||||
contract_no: 'HT-2025-001',
|
||||
contract_name: '蜜雪冰城加盟合同',
|
||||
type: '加盟合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
party_b: '张三',
|
||||
sign_date: '2025-01-15',
|
||||
start_date: '2025-02-01',
|
||||
end_date: '2028-01-31',
|
||||
amount: 300000,
|
||||
status: '生效中',
|
||||
remark: '三年期加盟合同',
|
||||
create_time: '2025-01-15 10:30:00'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
contract_no: 'HT-2025-002',
|
||||
contract_name: '原材料供货合同',
|
||||
type: '供货合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
party_b: '李四',
|
||||
sign_date: '2025-03-10',
|
||||
start_date: '2025-04-01',
|
||||
end_date: '2026-03-31',
|
||||
amount: 50000,
|
||||
status: '生效中',
|
||||
remark: '年度供货协议',
|
||||
create_time: '2025-03-10 09:15:00'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
contract_no: 'HT-2024-010',
|
||||
contract_name: '门店租赁合同',
|
||||
type: '租赁合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
party_b: '王五',
|
||||
sign_date: '2024-06-20',
|
||||
start_date: '2024-07-01',
|
||||
end_date: '2025-06-30',
|
||||
amount: 120000,
|
||||
status: '已到期',
|
||||
remark: '已续签',
|
||||
create_time: '2024-06-20 14:20:00'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
contract_no: 'HT-2025-003',
|
||||
contract_name: '设备维护服务合同',
|
||||
type: '服务合同',
|
||||
party_a: '蜜雪冰城股份有限公司',
|
||||
party_b: '赵六',
|
||||
sign_date: '2025-05-01',
|
||||
start_date: '2025-05-15',
|
||||
end_date: '2026-05-14',
|
||||
amount: 15000,
|
||||
status: '待审批',
|
||||
remark: '',
|
||||
create_time: '2025-05-01 11:00:00'
|
||||
}
|
||||
]
|
||||
|
||||
// 模拟网络延迟
|
||||
const delay = (ms = 300) => new Promise(r => setTimeout(r, ms))
|
||||
|
||||
// Mock API
|
||||
export const mockContractAPI = {
|
||||
// 获取列表
|
||||
async getList(params = {}) {
|
||||
await delay()
|
||||
let result = [...mockContracts]
|
||||
|
||||
// 关键词搜索
|
||||
if (params.keyword) {
|
||||
const keyword = params.keyword.toLowerCase()
|
||||
result = result.filter(item =>
|
||||
item.contract_no.toLowerCase().includes(keyword) ||
|
||||
item.contract_name.toLowerCase().includes(keyword) ||
|
||||
item.party_b.toLowerCase().includes(keyword)
|
||||
)
|
||||
}
|
||||
|
||||
// 合同类型筛选
|
||||
if (params.type) {
|
||||
result = result.filter(item => item.type === params.type)
|
||||
}
|
||||
|
||||
// 日期范围筛选(按签订日期)
|
||||
if (params.startDate && params.endDate) {
|
||||
const start = new Date(params.startDate)
|
||||
const end = new Date(params.endDate)
|
||||
result = result.filter(item => {
|
||||
const signDate = new Date(item.sign_date)
|
||||
return signDate >= start && signDate <= end
|
||||
})
|
||||
}
|
||||
|
||||
// 状态筛选
|
||||
if (params.status) {
|
||||
result = result.filter(item => item.status === params.status)
|
||||
}
|
||||
|
||||
return { code: 200, data: result, total: result.length }
|
||||
},
|
||||
|
||||
// 获取详情
|
||||
async getDetail(id) {
|
||||
await delay()
|
||||
const contract = mockContracts.find(item => item.id === id)
|
||||
if (contract) {
|
||||
return { code: 200, data: contract }
|
||||
}
|
||||
return { code: 404, message: '合同不存在' }
|
||||
},
|
||||
|
||||
// 新增
|
||||
async create(data) {
|
||||
await delay()
|
||||
const newContract = {
|
||||
id: Date.now(),
|
||||
...data,
|
||||
create_time: new Date().toISOString().replace('T', ' ').slice(0, 19)
|
||||
}
|
||||
mockContracts.push(newContract)
|
||||
return { code: 200, data: newContract, message: '新增成功' }
|
||||
},
|
||||
|
||||
// 更新
|
||||
async update(id, data) {
|
||||
await delay()
|
||||
const index = mockContracts.findIndex(item => item.id === id)
|
||||
if (index !== -1) {
|
||||
mockContracts[index] = { ...mockContracts[index], ...data }
|
||||
return { code: 200, data: mockContracts[index], message: '更新成功' }
|
||||
}
|
||||
return { code: 404, message: '合同不存在' }
|
||||
},
|
||||
|
||||
// 删除
|
||||
async delete(id) {
|
||||
await delay()
|
||||
const index = mockContracts.findIndex(item => item.id === id)
|
||||
if (index !== -1) {
|
||||
mockContracts.splice(index, 1)
|
||||
return { code: 200, message: '删除成功' }
|
||||
}
|
||||
return { code: 404, message: '合同不存在' }
|
||||
}
|
||||
}
|
||||
144
src/api/mock/customer.js
Normal file
144
src/api/mock/customer.js
Normal file
@@ -0,0 +1,144 @@
|
||||
// 模拟客户数据
|
||||
const mockCustomers = [
|
||||
{
|
||||
id: 1,
|
||||
name: '张三',
|
||||
phone: '13800138001',
|
||||
province: '广东省',
|
||||
city: '深圳市',
|
||||
district: '南山区',
|
||||
address: '科技园路1号',
|
||||
email: 'zhangsan@example.com',
|
||||
customer_type: 'VIP',
|
||||
create_time: '2025-01-15 10:30:00'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '李四',
|
||||
phone: '13800138002',
|
||||
province: '浙江省',
|
||||
city: '杭州市',
|
||||
district: '西湖区',
|
||||
address: '文三路100号',
|
||||
email: 'lisi@example.com',
|
||||
customer_type: 'Normal',
|
||||
create_time: '2025-02-20 14:20:00'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: '王五',
|
||||
phone: '13800138003',
|
||||
province: '四川省',
|
||||
city: '成都市',
|
||||
district: '武侯区',
|
||||
address: '天府大道200号',
|
||||
email: 'wangwu@example.com',
|
||||
customer_type: 'VIP',
|
||||
create_time: '2025-03-10 09:15:00'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: '赵六',
|
||||
phone: '13800138004',
|
||||
province: '湖南省',
|
||||
city: '长沙市',
|
||||
district: '岳麓区',
|
||||
address: '麓山南路100号',
|
||||
email: 'zhaoliu@example.com',
|
||||
customer_type: 'Normal',
|
||||
create_time: '2025-04-05 16:45:00'
|
||||
}
|
||||
]
|
||||
|
||||
// 模拟网络延迟
|
||||
const delay = (ms = 300) => new Promise(r => setTimeout(r, ms))
|
||||
|
||||
// Mock API
|
||||
export const mockCustomerAPI = {
|
||||
// 获取列表
|
||||
async getList(params = {}) {
|
||||
await delay()
|
||||
let result = [...mockCustomers]
|
||||
|
||||
// 关键词搜索
|
||||
if (params.keyword) {
|
||||
const keyword = params.keyword.toLowerCase()
|
||||
const searchField = params.searchField || '1'
|
||||
|
||||
if (searchField === '2') {
|
||||
// 编号:精确匹配
|
||||
result = result.filter(item => String(item.id) === keyword)
|
||||
} else if (searchField === '1') {
|
||||
// 姓名:模糊匹配
|
||||
result = result.filter(item => item.name.includes(keyword))
|
||||
} else if (searchField === '3') {
|
||||
// 电话:模糊匹配
|
||||
result = result.filter(item => item.phone.includes(keyword))
|
||||
} else if (searchField === '4') {
|
||||
// 邮箱:模糊匹配
|
||||
result = result.filter(item => item.email.includes(keyword))
|
||||
} else {
|
||||
// 默认:模糊匹配所有字段
|
||||
result = result.filter(item =>
|
||||
String(item.id).includes(keyword) ||
|
||||
item.name.includes(keyword) ||
|
||||
item.phone.includes(keyword) ||
|
||||
item.email.includes(keyword)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 客户类型筛选
|
||||
if (params.customer_type) {
|
||||
result = result.filter(item => item.customer_type === params.customer_type)
|
||||
}
|
||||
|
||||
return { code: 200, data: result, total: result.length }
|
||||
},
|
||||
|
||||
// 获取详情
|
||||
async getDetail(id) {
|
||||
await delay()
|
||||
const customer = mockCustomers.find(item => item.id === id)
|
||||
if (customer) {
|
||||
return { code: 200, data: customer }
|
||||
}
|
||||
return { code: 404, message: '客户不存在' }
|
||||
},
|
||||
|
||||
// 新增
|
||||
async create(data) {
|
||||
await delay()
|
||||
// 生成自增 ID
|
||||
const maxId = mockCustomers.length > 0 ? Math.max(...mockCustomers.map(item => item.id)) : 0
|
||||
const newCustomer = {
|
||||
id: maxId + 1,
|
||||
...data,
|
||||
create_time: new Date().toISOString().replace('T', ' ').slice(0, 19)
|
||||
}
|
||||
mockCustomers.push(newCustomer)
|
||||
return { code: 200, data: newCustomer, message: '新增成功' }
|
||||
},
|
||||
|
||||
// 更新
|
||||
async update(id, data) {
|
||||
await delay()
|
||||
const index = mockCustomers.findIndex(item => item.id === id)
|
||||
if (index !== -1) {
|
||||
mockCustomers[index] = { ...mockCustomers[index], ...data }
|
||||
return { code: 200, data: mockCustomers[index], message: '更新成功' }
|
||||
}
|
||||
return { code: 404, message: '客户不存在' }
|
||||
},
|
||||
|
||||
// 删除
|
||||
async delete(id) {
|
||||
await delay()
|
||||
const index = mockCustomers.findIndex(item => item.id === id)
|
||||
if (index !== -1) {
|
||||
mockCustomers.splice(index, 1)
|
||||
return { code: 200, message: '删除成功' }
|
||||
}
|
||||
return { code: 404, message: '客户不存在' }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user