561 lines
19 KiB
JavaScript
561 lines
19 KiB
JavaScript
import { request } from '@/utils'
|
|
|
|
export default {
|
|
login: (data) => request.post('/base/access_token', data, { noNeedToken: true }),
|
|
getUserInfo: () => request.get('/base/userinfo'),
|
|
getUserMenu: () => request.get('/base/usermenu'),
|
|
getUserApi: () => request.get('/base/userapi'),
|
|
// profile
|
|
updatePassword: (data = {}) => request.post('/base/update_password', data),
|
|
// users
|
|
getUserList: (params = {}) => request.get('/user/list', { params }),
|
|
getUserById: (params = {}) => request.get('/user/get', { params }),
|
|
createUser: (data = {}) => request.post('/user/create', data),
|
|
updateUser: (data = {}) => request.post('/user/update', data),
|
|
deleteUser: (params = {}) => request.delete(`/user/delete`, { params }),
|
|
resetPassword: (data = {}) => request.post(`/user/reset_password`, data),
|
|
// role
|
|
getRoleList: (params = {}) => request.get('/role/list', { params }),
|
|
createRole: (data = {}) => request.post('/role/create', data),
|
|
updateRole: (data = {}) => request.post('/role/update', data),
|
|
deleteRole: (params = {}) => request.delete('/role/delete', { params }),
|
|
updateRoleAuthorized: (data = {}) => request.post('/role/authorized', data),
|
|
getRoleAuthorized: (params = {}) => request.get('/role/authorized', { params }),
|
|
// menus
|
|
getMenus: (params = {}) => request.get('/menu/list', { params }),
|
|
createMenu: (data = {}) => request.post('/menu/create', data),
|
|
updateMenu: (data = {}) => request.post('/menu/update', data),
|
|
deleteMenu: (params = {}) => request.delete('/menu/delete', { params }),
|
|
// apis
|
|
getApis: (params = {}) => request.get('/api/list', { params }),
|
|
createApi: (data = {}) => request.post('/api/create', data),
|
|
updateApi: (data = {}) => request.post('/api/update', data),
|
|
deleteApi: (params = {}) => request.delete('/api/delete', { params }),
|
|
refreshApi: (data = {}) => request.post('/api/refresh', data),
|
|
// depts
|
|
getDepts: (params = {}) => request.get('/dept/list', { params }),
|
|
createDept: (data = {}) => request.post('/dept/create', data),
|
|
updateDept: (data = {}) => request.post('/dept/update', data),
|
|
deleteDept: (params = {}) => request.delete('/dept/delete', { params }),
|
|
// auditlog
|
|
getAuditLogList: (params = {}) => request.get('/auditlog/list', { params }),
|
|
// app users (客户端用户管理) - 使用现有的后端接口
|
|
getAppUserList: (params = {}) => {
|
|
// Mock 数据
|
|
const mockUsers = [
|
|
{
|
|
id: 11111111,
|
|
phone: '15021982682',
|
|
wechat: 'f1498480844',
|
|
created_at: '2024-01-15T10:30:00Z',
|
|
notes: '测试用户1',
|
|
remaining_count: 1
|
|
},
|
|
{
|
|
id: 11111112,
|
|
phone: '13800138002',
|
|
wechat: 'wx_limming2024',
|
|
created_at: '2024-02-20T14:20:00Z',
|
|
notes: '付费用户',
|
|
remaining_count: 5
|
|
},
|
|
{
|
|
id: 11111113,
|
|
phone: '13800138003',
|
|
wechat: null,
|
|
created_at: '2024-03-10T08:45:00Z',
|
|
notes: null,
|
|
remaining_count: 0
|
|
},
|
|
{
|
|
id: 11111114,
|
|
phone: '13800138004',
|
|
wechat: 'chenjun_vip',
|
|
created_at: '2024-04-05T11:30:00Z',
|
|
notes: 'VIP用户',
|
|
remaining_count: 10
|
|
},
|
|
{
|
|
id: 11111115,
|
|
phone: '13800138005',
|
|
wechat: 'liuxia888',
|
|
created_at: '2024-05-12T16:15:00Z',
|
|
notes: '体验用户',
|
|
remaining_count: 3
|
|
},
|
|
{
|
|
id: 11111116,
|
|
phone: '13800138006',
|
|
wechat: null,
|
|
created_at: '2024-06-18T09:00:00Z',
|
|
notes: '新注册用户',
|
|
remaining_count: 2
|
|
},
|
|
{
|
|
id: 11111117,
|
|
phone: '13800138007',
|
|
wechat: 'zhaolei2024',
|
|
created_at: '2024-07-22T12:45:00Z',
|
|
notes: null,
|
|
remaining_count: 0
|
|
},
|
|
{
|
|
id: 11111118,
|
|
phone: '13800138008',
|
|
wechat: 'sunmei_user',
|
|
created_at: '2024-08-30T15:20:00Z',
|
|
notes: '活跃用户',
|
|
remaining_count: 7
|
|
}
|
|
]
|
|
|
|
// 模拟分页和搜索
|
|
let filteredUsers = [...mockUsers]
|
|
|
|
// 手机号搜索
|
|
if (params.phone) {
|
|
filteredUsers = filteredUsers.filter(user =>
|
|
user.phone.includes(params.phone)
|
|
)
|
|
}
|
|
|
|
// 微信号搜索
|
|
if (params.wechat) {
|
|
filteredUsers = filteredUsers.filter(user =>
|
|
user.wechat && user.wechat.includes(params.wechat)
|
|
)
|
|
}
|
|
|
|
// 分页处理
|
|
const page = params.page || 1
|
|
const pageSize = params.page_size || 10
|
|
const startIndex = (page - 1) * pageSize
|
|
const endIndex = startIndex + pageSize
|
|
const paginatedUsers = filteredUsers.slice(startIndex, endIndex)
|
|
|
|
// 返回 Promise 模拟异步请求
|
|
return new Promise((resolve) => {
|
|
setTimeout(() => {
|
|
resolve({
|
|
data: paginatedUsers,
|
|
total: filteredUsers.length,
|
|
page: page,
|
|
page_size: pageSize
|
|
})
|
|
}, 300) // 模拟网络延迟
|
|
})
|
|
},
|
|
getAppUserById: (params = {}) => request.get('/app-user/detail', { params }),
|
|
createAppUser: (data = {}) => request.post('/app-user/register', data),
|
|
updateAppUser: (data = {}) => request.post('/app-user/update', data),
|
|
deleteAppUser: (params = {}) => request.delete('/app-user/delete', { params }),
|
|
// invoice (开票记录)
|
|
getInvoiceList: (params = {}) => {
|
|
// Mock 数据
|
|
const mockInvoices = [
|
|
{
|
|
id: 1001,
|
|
created_at: '2024-11-10T09:30:00Z',
|
|
ticket_type: 'electronic',
|
|
phone: '13800138001',
|
|
email: 'zhangsan@company1.com',
|
|
company_name: '北京科技有限公司',
|
|
tax_number: '91110000123456789A',
|
|
register_address: '北京市朝阳区科技园区A座1001室',
|
|
register_phone: '010-12345678',
|
|
bank_name: '中国工商银行北京分行',
|
|
bank_account: '6222021234567890123',
|
|
invoice_type: 'special',
|
|
status: 'pending'
|
|
},
|
|
{
|
|
id: 1002,
|
|
created_at: '2024-11-09T14:20:00Z',
|
|
ticket_type: 'paper',
|
|
phone: '13800138002',
|
|
email: 'lisi@company2.com',
|
|
company_name: '上海贸易股份有限公司',
|
|
tax_number: '91310000987654321B',
|
|
register_address: '上海市浦东新区金融街B座2002室',
|
|
register_phone: '021-87654321',
|
|
bank_name: '中国建设银行上海分行',
|
|
bank_account: '6217001234567890124',
|
|
invoice_type: 'normal',
|
|
status: 'invoiced'
|
|
},
|
|
{
|
|
id: 1003,
|
|
created_at: '2024-11-08T16:45:00Z',
|
|
ticket_type: 'electronic',
|
|
phone: '13800138003',
|
|
email: 'wangwu@company3.com',
|
|
company_name: '深圳创新科技有限公司',
|
|
tax_number: '91440300456789012C',
|
|
register_address: '深圳市南山区高新技术园C座3003室',
|
|
register_phone: '0755-23456789',
|
|
bank_name: '招商银行深圳分行',
|
|
bank_account: '6214851234567890125',
|
|
invoice_type: 'special',
|
|
status: 'rejected'
|
|
},
|
|
{
|
|
id: 1004,
|
|
created_at: '2024-11-07T11:15:00Z',
|
|
ticket_type: 'paper',
|
|
phone: '13800138004',
|
|
email: 'zhaoliu@company4.com',
|
|
company_name: '广州制造业集团有限公司',
|
|
tax_number: '91440100789012345D',
|
|
register_address: '广州市天河区商务中心D座4004室',
|
|
register_phone: '020-34567890',
|
|
bank_name: '中国银行广州分行',
|
|
bank_account: '6013821234567890126',
|
|
invoice_type: 'normal',
|
|
status: 'pending'
|
|
},
|
|
{
|
|
id: 1005,
|
|
created_at: '2024-11-06T08:30:00Z',
|
|
ticket_type: 'electronic',
|
|
phone: '13800138005',
|
|
email: 'sunqi@company5.com',
|
|
company_name: '杭州互联网科技有限公司',
|
|
tax_number: '91330100012345678E',
|
|
register_address: '杭州市西湖区互联网小镇E座5005室',
|
|
register_phone: '0571-45678901',
|
|
bank_name: '浙商银行杭州分行',
|
|
bank_account: '6228481234567890127',
|
|
invoice_type: 'special',
|
|
status: 'invoiced'
|
|
},
|
|
{
|
|
id: 1006,
|
|
created_at: '2024-11-05T13:20:00Z',
|
|
ticket_type: 'paper',
|
|
phone: '13800138006',
|
|
email: 'zhouba@company6.com',
|
|
company_name: '成都软件开发有限公司',
|
|
tax_number: '91510100345678901F',
|
|
register_address: '成都市高新区软件园F座6006室',
|
|
register_phone: '028-56789012',
|
|
bank_name: '中国农业银行成都分行',
|
|
bank_account: '6230521234567890128',
|
|
invoice_type: 'normal',
|
|
status: 'pending'
|
|
},
|
|
{
|
|
id: 1007,
|
|
created_at: '2024-11-04T15:45:00Z',
|
|
ticket_type: 'electronic',
|
|
phone: '13800138007',
|
|
email: 'wujiu@company7.com',
|
|
company_name: '武汉新能源科技有限公司',
|
|
tax_number: '91420100678901234G',
|
|
register_address: '武汉市江汉区新能源产业园G座7007室',
|
|
register_phone: '027-67890123',
|
|
bank_name: '交通银行武汉分行',
|
|
bank_account: '6222601234567890129',
|
|
invoice_type: 'special',
|
|
status: 'invoiced'
|
|
},
|
|
{
|
|
id: 1008,
|
|
created_at: '2024-11-03T10:10:00Z',
|
|
ticket_type: 'paper',
|
|
phone: '13800138008',
|
|
email: 'zhengshi@company8.com',
|
|
company_name: '西安电子商务有限公司',
|
|
tax_number: '91610100901234567H',
|
|
register_address: '西安市雁塔区电商产业园H座8008室',
|
|
register_phone: '029-78901234',
|
|
bank_name: '中信银行西安分行',
|
|
bank_account: '6217711234567890130',
|
|
invoice_type: 'normal',
|
|
status: 'refunded'
|
|
},
|
|
{
|
|
id: 1009,
|
|
created_at: '2024-11-02T14:30:00Z',
|
|
ticket_type: 'electronic',
|
|
phone: '13800138009',
|
|
email: 'wangwu@company9.com',
|
|
company_name: '天津物流科技有限公司',
|
|
tax_number: '91120000234567890I',
|
|
register_address: '天津市滨海新区物流园I座9009室',
|
|
register_phone: '022-89012345',
|
|
bank_name: '民生银行天津分行',
|
|
bank_account: '6226221234567890131',
|
|
invoice_type: 'special',
|
|
status: 'refunded'
|
|
},
|
|
{
|
|
id: 1010,
|
|
created_at: '2024-11-01T11:45:00Z',
|
|
ticket_type: 'paper',
|
|
phone: '13800138010',
|
|
email: 'liuliu@company10.com',
|
|
company_name: '重庆智能制造有限公司',
|
|
tax_number: '91500000567890123J',
|
|
register_address: '重庆市渝北区智能制造园J座1010室',
|
|
register_phone: '023-90123456',
|
|
bank_name: '华夏银行重庆分行',
|
|
bank_account: '6228881234567890132',
|
|
invoice_type: 'normal',
|
|
status: 'rejected'
|
|
}
|
|
]
|
|
|
|
// 模拟分页和搜索
|
|
let filteredInvoices = [...mockInvoices]
|
|
|
|
// 手机号搜索
|
|
if (params.phone) {
|
|
filteredInvoices = filteredInvoices.filter(invoice =>
|
|
invoice.phone.includes(params.phone)
|
|
)
|
|
}
|
|
|
|
// 公司名称搜索
|
|
if (params.company_name) {
|
|
filteredInvoices = filteredInvoices.filter(invoice =>
|
|
invoice.company_name.includes(params.company_name)
|
|
)
|
|
}
|
|
|
|
// 公司税号搜索
|
|
if (params.tax_number) {
|
|
filteredInvoices = filteredInvoices.filter(invoice =>
|
|
invoice.tax_number.includes(params.tax_number)
|
|
)
|
|
}
|
|
|
|
// 状态筛选
|
|
if (params.status) {
|
|
filteredInvoices = filteredInvoices.filter(invoice =>
|
|
invoice.status === params.status
|
|
)
|
|
}
|
|
|
|
// 提交时间筛选
|
|
if (params.created_at && Array.isArray(params.created_at) && params.created_at.length === 2) {
|
|
const [startDate, endDate] = params.created_at
|
|
filteredInvoices = filteredInvoices.filter(invoice => {
|
|
const invoiceDate = new Date(invoice.created_at)
|
|
return invoiceDate >= new Date(startDate) && invoiceDate <= new Date(endDate)
|
|
})
|
|
}
|
|
|
|
// 分页处理
|
|
const page = params.page || 1
|
|
const pageSize = params.page_size || 10
|
|
const startIndex = (page - 1) * pageSize
|
|
const endIndex = startIndex + pageSize
|
|
const paginatedInvoices = filteredInvoices.slice(startIndex, endIndex)
|
|
|
|
// 返回 Promise 模拟异步请求
|
|
return new Promise((resolve) => {
|
|
setTimeout(() => {
|
|
resolve({
|
|
data: paginatedInvoices,
|
|
total: filteredInvoices.length,
|
|
page: page,
|
|
page_size: pageSize
|
|
})
|
|
}, 300) // 模拟网络延迟
|
|
})
|
|
},
|
|
getInvoiceById: (params = {}) => request.get('/invoice/detail', { params }),
|
|
createInvoice: (data = {}) => request.post('/invoice/create', data),
|
|
updateInvoice: (data = {}) => request.post('/invoice/update', data),
|
|
deleteInvoice: (params = {}) => request.delete('/invoice/delete', { params }),
|
|
updateInvoiceStatus: (data = {}) => request.post('/invoice/update-status', data),
|
|
remindInvoice: (data = {}) => request.post('/invoice/remind', data),
|
|
refundInvoice: (data = {}) => request.post('/invoice/refund', data),
|
|
sendInvoice: (data = {}) => request.post('/invoice/send', data),
|
|
// valuation (估值评估)
|
|
getValuationList: (params = {}) => {
|
|
// Mock 数据
|
|
const mockValuations = [
|
|
{
|
|
id: 2001,
|
|
phone: '13800138001',
|
|
wechat: 'zhangsan_wx',
|
|
valuation_result: 1250000.00,
|
|
created_at: '2024-11-10T09:30:00Z',
|
|
reviewed_at: null,
|
|
status: 'pending',
|
|
admin_notes: null
|
|
},
|
|
{
|
|
id: 2002,
|
|
phone: '13800138002',
|
|
wechat: 'lisi2024',
|
|
valuation_result: 880000.00,
|
|
created_at: '2024-11-09T14:20:00Z',
|
|
reviewed_at: '2024-11-09T16:45:00Z',
|
|
status: 'approved',
|
|
admin_notes: '评估结果合理,已通过审核'
|
|
},
|
|
{
|
|
id: 2003,
|
|
phone: '13800138003',
|
|
wechat: 'wangwu_user',
|
|
valuation_result: 2100000.00,
|
|
created_at: '2024-11-08T16:45:00Z',
|
|
reviewed_at: '2024-11-08T18:30:00Z',
|
|
status: 'approved',
|
|
admin_notes: '评估价格偏高,但审核通过'
|
|
},
|
|
{
|
|
id: 2004,
|
|
phone: '13800138004',
|
|
wechat: 'zhaoliu_vip',
|
|
valuation_result: 560000.00,
|
|
created_at: '2024-11-07T11:15:00Z',
|
|
reviewed_at: null,
|
|
status: 'pending',
|
|
admin_notes: null
|
|
},
|
|
{
|
|
id: 2005,
|
|
phone: '13800138005',
|
|
wechat: 'sunqi888',
|
|
valuation_result: 1680000.00,
|
|
created_at: '2024-11-06T08:30:00Z',
|
|
reviewed_at: '2024-11-06T10:15:00Z',
|
|
status: 'approved',
|
|
admin_notes: '评估数据完整,审核通过'
|
|
},
|
|
{
|
|
id: 2006,
|
|
phone: '13800138006',
|
|
wechat: 'zhouba2024',
|
|
valuation_result: 950000.00,
|
|
created_at: '2024-11-05T13:20:00Z',
|
|
reviewed_at: null,
|
|
status: 'pending',
|
|
admin_notes: null
|
|
},
|
|
{
|
|
id: 2007,
|
|
phone: '13800138007',
|
|
wechat: 'wujiu_user',
|
|
valuation_result: 3200000.00,
|
|
created_at: '2024-11-04T15:45:00Z',
|
|
reviewed_at: '2024-11-04T17:20:00Z',
|
|
status: 'approved',
|
|
admin_notes: '高价值资产,评估结果准确'
|
|
},
|
|
{
|
|
id: 2008,
|
|
phone: '13800138008',
|
|
wechat: 'zhengshi_vip',
|
|
valuation_result: 750000.00,
|
|
created_at: '2024-11-03T10:10:00Z',
|
|
reviewed_at: '2024-11-03T12:00:00Z',
|
|
status: 'approved',
|
|
admin_notes: '评估流程规范,结果可信'
|
|
},
|
|
{
|
|
id: 2009,
|
|
phone: '13800138009',
|
|
wechat: 'chenjun2024',
|
|
valuation_result: 1890000.00,
|
|
created_at: '2024-11-02T14:30:00Z',
|
|
reviewed_at: null,
|
|
status: 'pending',
|
|
admin_notes: null
|
|
},
|
|
{
|
|
id: 2010,
|
|
phone: '13800138010',
|
|
wechat: 'liuxia_user',
|
|
valuation_result: 430000.00,
|
|
created_at: '2024-11-01T11:45:00Z',
|
|
reviewed_at: '2024-11-01T13:30:00Z',
|
|
status: 'approved',
|
|
admin_notes: '低价值资产,评估合理'
|
|
},
|
|
{
|
|
id: 2011,
|
|
phone: '13800138011',
|
|
wechat: 'zhaolei2024',
|
|
valuation_result: 2100000.00,
|
|
created_at: '2024-10-31T09:20:00Z',
|
|
reviewed_at: '2024-10-31T11:00:00Z',
|
|
status: 'approved',
|
|
admin_notes: '评估报告详细,数据支撑充分'
|
|
},
|
|
{
|
|
id: 2012,
|
|
phone: '13800138012',
|
|
wechat: 'sunmei_vip',
|
|
valuation_result: 680000.00,
|
|
created_at: '2024-10-30T16:15:00Z',
|
|
reviewed_at: null,
|
|
status: 'pending',
|
|
admin_notes: null
|
|
}
|
|
]
|
|
|
|
// 模拟分页和搜索
|
|
let filteredValuations = [...mockValuations]
|
|
|
|
// 手机号搜索
|
|
if (params.phone) {
|
|
filteredValuations = filteredValuations.filter(valuation =>
|
|
valuation.phone.includes(params.phone)
|
|
)
|
|
}
|
|
|
|
// 微信号搜索
|
|
if (params.wechat) {
|
|
filteredValuations = filteredValuations.filter(valuation =>
|
|
valuation.wechat && valuation.wechat.includes(params.wechat)
|
|
)
|
|
}
|
|
|
|
// 状态筛选
|
|
if (params.status) {
|
|
filteredValuations = filteredValuations.filter(valuation =>
|
|
valuation.status === params.status
|
|
)
|
|
}
|
|
|
|
// 提交时间筛选
|
|
if (params.created_at && Array.isArray(params.created_at) && params.created_at.length === 2) {
|
|
const [startDate, endDate] = params.created_at
|
|
filteredValuations = filteredValuations.filter(valuation => {
|
|
const valuationDate = new Date(valuation.created_at)
|
|
return valuationDate >= new Date(startDate) && valuationDate <= new Date(endDate)
|
|
})
|
|
}
|
|
|
|
// 分页处理
|
|
const page = params.page || 1
|
|
const pageSize = params.page_size || 10
|
|
const startIndex = (page - 1) * pageSize
|
|
const endIndex = startIndex + pageSize
|
|
const paginatedValuations = filteredValuations.slice(startIndex, endIndex)
|
|
|
|
// 返回 Promise 模拟异步请求
|
|
return new Promise((resolve) => {
|
|
setTimeout(() => {
|
|
resolve({
|
|
data: paginatedValuations,
|
|
total: filteredValuations.length,
|
|
page: page,
|
|
page_size: pageSize
|
|
})
|
|
}, 300) // 模拟网络延迟
|
|
})
|
|
},
|
|
getValuationById: (params = {}) => request.get(`/valuation/${params.valuation_id}`),
|
|
createValuation: (data = {}) => request.post('/valuation', data),
|
|
updateValuation: (data = {}) => request.put(`/valuation/${data.id}`, data),
|
|
deleteValuation: (params = {}) => request.delete(`/valuation/${params.valuation_id}`),
|
|
approveValuation: (data = {}) => request.post(`/valuation/${data.valuation_id}/approve`, data),
|
|
rejectValuation: (data = {}) => request.post(`/valuation/${data.valuation_id}/reject`, data),
|
|
updateValuationNotes: (data = {}) => request.put(`/valuation/${data.valuation_id}/admin-notes`, data),
|
|
}
|