// import { request } from '@/utils/http' import type { LoanApplication, RelatedMerchant, AssistMaterial } from '@/typings/loan' import { LoanStatus } from '@/typings/loan' /** * [用户端] 获取用户交易过的商家列表 */ export function getUserMerchants() { // Mock数据 return new Promise<{ list: RelatedMerchant[] }>((resolve) => { setTimeout(() => { resolve({ list: [ { merchantId: 'M001', merchantName: '乐高玩具旗舰店', lastTradeTime: '2025-12-01', selected: false, assistStatus: 'pending' }, { merchantId: 'M002', merchantName: '迪士尼官方店', lastTradeTime: '2025-11-20', selected: false, assistStatus: 'pending' }, { merchantId: 'M003', merchantName: '泡泡玛特', lastTradeTime: '2025-11-15', selected: false, assistStatus: 'pending' }, { merchantId: 'M004', merchantName: '奥特曼官方玩具店', lastTradeTime: '2025-11-10', selected: false, assistStatus: 'pending' }, { merchantId: 'M005', merchantName: '玩具反斗城', lastTradeTime: '2025-11-05', selected: false, assistStatus: 'pending' }, { merchantId: 'M006', merchantName: 'KidsLand', lastTradeTime: '2025-10-20', selected: false, assistStatus: 'pending' } ] }) }, 500) }) } /** * [用户端] 提交贷款申请 */ export function submitLoanApplication(data: any) { return new Promise<{ id: string }>((resolve) => { setTimeout(() => { resolve({ id: `LA${Date.now()}` }) }, 1000) }) } // 模拟数据库 let mockDatabase: LoanApplication[] = [] /** * [银行端] 获取贷款申请列表 */ export function getLoanApplicationList(params: any) { return new Promise<{ list: LoanApplication[], total: number }>((resolve) => { setTimeout(() => { // 如果没有数据,初始化一些 Mock 数据 if (mockDatabase.length === 0) { mockDatabase = [ { id: 'LA20251219001', userId: 'U001', userName: '张三', userPhone: '13800138000', amount: 50, term: 1, status: LoanStatus.SUBMITTED, createTime: '2025-12-19 10:00:00', updateTime: '2025-12-19 10:00:00', relatedMerchants: [ { merchantId: 'M001', merchantName: '乐高玩具旗舰店', lastTradeTime: '2025-12-01', selected: true, assistStatus: 'pending' } ], personalInfo: { name: '张三', phone: '13800138000', idCard: '440106199001011234', region: ['广东省', '广州市', '天河区'], detailAddress: '天河路1号' }, businessInfo: { businessProject: '玩具零售', businessTime: '3年', annualIncome: 100, hasDebt: 'no', loanDemand: 50, assets: ['house', 'car'] }, documentInfo: { businessLicense: 'https://via.placeholder.com/150', otherMaterials: [] }, processRecords: [] } ] } resolve({ list: mockDatabase, total: mockDatabase.length }) }, 500) }) } /** * [银行端] 获取贷款申请详情 */ export function getLoanApplicationDetail(id: string) { return new Promise((resolve, reject) => { setTimeout(() => { const item = mockDatabase.find(i => i.id === id) if (item) { resolve(item) } else { // Fallback for demo if (mockDatabase.length > 0) resolve(mockDatabase[0]) else reject('Not found') } }, 500) }) } /** * [银行端] 流程操作 */ export function operateLoanApplication(id: string, action: string, data?: any) { return new Promise((resolve) => { setTimeout(() => { const item = mockDatabase.find(i => i.id === id) if (item) { // 更新状态逻辑 switch (action) { case 'accept': item.status = LoanStatus.ACCEPTED; break; case 'investigate': item.status = LoanStatus.INVESTIGATING; break; case 'report': item.status = LoanStatus.REPORTED; break; case 'approve': item.status = LoanStatus.APPROVED; break; case 'sign': item.status = LoanStatus.SIGNED; break; case 'disburse': item.status = LoanStatus.DISBURSED; break; case 'reject': item.status = LoanStatus.REJECTED; break; case 'request_supplement': item.status = LoanStatus.PENDING_SUPPLEMENT; break; } // 添加记录 item.processRecords.push({ step: action as any, operator: '银行管理员', operateTime: new Date().toLocaleString(), ...data }) } resolve() }, 500) }) } /** * [商家端] 获取待办列表 */ export function getMerchantPendingAssistList() { return new Promise<{ list: any[] }>((resolve) => { setTimeout(() => { // 找到所有关联了当前商家的未处理申请 // 这里简化逻辑,直接返回 Mock resolve({ list: [ { loanId: 'LA20251219001', userName: '张三', applyTime: '2025-12-19 10:00:00', amount: 50, status: 'pending' } ] }) }, 500) }) } /** * [商家端] 提交辅助材料 */ export function submitAssistMaterial(loanId: string, materials: any[]) { return new Promise((resolve) => { setTimeout(() => { const item = mockDatabase.find(i => i.id === loanId) // 简化:更新第一个匹配的商家状态 if (item && item.relatedMerchants.length > 0) { item.relatedMerchants[0].assistStatus = 'submitted' item.relatedMerchants[0].materials = { merchantId: item.relatedMerchants[0].merchantId, merchantName: item.relatedMerchants[0].merchantName, loanApplicationId: loanId, materials: materials, submitTime: new Date().toLocaleString(), status: 'submitted' } } resolve() }, 800) }) }