暂存更改

This commit is contained in:
ChoChoX
2026-06-22 22:18:08 +08:00
parent c0b84b9ea4
commit 5f67bf9122
10 changed files with 987 additions and 381 deletions

41
src/api/contract.js Normal file
View File

@@ -0,0 +1,41 @@
import axios from 'axios'
import { mockContractAPI } from './mock/contract'
// 开关true 用 mockfalse 用真实接口
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
View File

@@ -0,0 +1,41 @@
import axios from 'axios'
import { mockCustomerAPI } from './mock/customer'
// 开关true 用 mockfalse 用真实接口
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
View 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
View 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: '客户不存在' }
}
}