126 lines
3.0 KiB
TypeScript
126 lines
3.0 KiB
TypeScript
import { mockCreditLimitList, mockSettlementList, mockWriteOffList } from '@/mock/finance'
|
||
import { WriteOffStatus } from '@/typings/mall'
|
||
import type { SettlementStatus, WriteOff } from '@/typings/mall'
|
||
|
||
/**
|
||
* 金融相关 API
|
||
*/
|
||
|
||
// 获取信用额度
|
||
export function getCreditLimit() {
|
||
return new Promise((resolve) => {
|
||
setTimeout(() => {
|
||
resolve({
|
||
code: 0,
|
||
data: mockCreditLimitList,
|
||
})
|
||
}, 300)
|
||
})
|
||
}
|
||
|
||
// 获取应结账款列表
|
||
export function getSettlementList(params?: {
|
||
status?: SettlementStatus
|
||
merchantId?: string
|
||
}) {
|
||
return new Promise((resolve) => {
|
||
setTimeout(() => {
|
||
let list = [...mockSettlementList]
|
||
|
||
// 筛选
|
||
if (params?.status) {
|
||
// 如果查询未结,则包含逾期状态
|
||
if (params.status === 'unsettled') {
|
||
list = list.filter(item => item.status === 'unsettled' || item.status === 'overdue')
|
||
} else {
|
||
list = list.filter(item => item.status === params.status)
|
||
}
|
||
}
|
||
if (params?.merchantId) {
|
||
list = list.filter(item => item.merchantId === params.merchantId)
|
||
}
|
||
|
||
resolve({
|
||
code: 0,
|
||
data: list,
|
||
})
|
||
}, 300)
|
||
})
|
||
}
|
||
|
||
// 获取到期订单
|
||
export function getDueOrders() {
|
||
return new Promise((resolve) => {
|
||
setTimeout(() => {
|
||
const now = new Date()
|
||
// 7天后
|
||
const sevenDaysLater = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000)
|
||
|
||
// 筛选7天内到期的未结账款(包括已逾期)
|
||
const list = mockSettlementList.filter((item) => {
|
||
// 只关注未结和逾期状态
|
||
if (item.status !== 'unsettled' && item.status !== 'overdue')
|
||
return false
|
||
|
||
const dueDate = new Date(item.dueDate)
|
||
// 只要到期时间在7天内(包括过去的时间,即已逾期),都应该提醒
|
||
return dueDate <= sevenDaysLater
|
||
})
|
||
|
||
resolve({
|
||
code: 0,
|
||
data: list,
|
||
})
|
||
}, 300)
|
||
})
|
||
}
|
||
|
||
// 提交消账申请
|
||
export function submitWriteOff(data: {
|
||
settlementId: string
|
||
amount: number
|
||
proof: string[]
|
||
remark: string
|
||
}) {
|
||
return new Promise((resolve) => {
|
||
setTimeout(() => {
|
||
const newWriteOff: WriteOff = {
|
||
id: `writeoff_${Date.now()}`,
|
||
settlementId: data.settlementId,
|
||
amount: data.amount,
|
||
proof: data.proof,
|
||
remark: data.remark,
|
||
submitTime: new Date().toISOString(),
|
||
status: WriteOffStatus.PENDING,
|
||
}
|
||
|
||
// 模拟添加到列表
|
||
mockWriteOffList.push(newWriteOff)
|
||
|
||
resolve({
|
||
code: 0,
|
||
data: newWriteOff,
|
||
message: '提交成功,等待审核',
|
||
})
|
||
}, 500)
|
||
})
|
||
}
|
||
|
||
// 获取消账记录
|
||
export function getWriteOffList(settlementId?: string) {
|
||
return new Promise((resolve) => {
|
||
setTimeout(() => {
|
||
let list = [...mockWriteOffList]
|
||
|
||
if (settlementId) {
|
||
list = list.filter(item => item.settlementId === settlementId)
|
||
}
|
||
|
||
resolve({
|
||
code: 0,
|
||
data: list,
|
||
})
|
||
}, 300)
|
||
})
|
||
}
|