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), }