fix: 修复移动端API路径错误,统一归集到api/index.ts
问题: - Vue文件中直接使用错误的API路径 /api/v1/xxx - 导致请求URL重复包含/api/v1,被当作静态资源处理 修复: 1. 重构src/api/index.ts,按模块分类集中定义所有API - 用户认证:login, getUserInfo, logout - 项目管理:getProjectList, getProjectById - 客户管理:getCustomerList - 支出管理:createExpense, getExpenseList, getExpenseTypeTree, getTodayExpense - 应收款管理:getReceivableList, getUpcomingDueList, getTodayIncome, getUnpaidAmount, getOverdueCount 2. 修复各Vue文件,使用集中的API定义 - Home.vue: 使用getTodayIncome, getTodayExpense, getUnpaidAmount - receivable/List.vue: 使用getReceivableList - expense/Add.vue: 使用createExpense, getExpenseTypeTree - Login.vue: 使用login 正确的API路径: - 前端请求: /fund/receipt/receivable/page - Gateway转发: /api/v1/receipt/receivable/page
This commit is contained in:
parent
610054918a
commit
2e7fb5f5d4
@ -1,6 +1,7 @@
|
||||
import request from './request'
|
||||
|
||||
// 用户认证
|
||||
// ===================== 用户认证 =====================
|
||||
|
||||
export function login(data: { username: string; password: string }) {
|
||||
return request.post('/auth/login', data)
|
||||
}
|
||||
@ -13,7 +14,8 @@ export function logout() {
|
||||
return request.post('/auth/logout')
|
||||
}
|
||||
|
||||
// 项目管理
|
||||
// ===================== 项目管理 =====================
|
||||
|
||||
export function getProjectList(params?: { pageNum: number; pageSize: number; projectName?: string }) {
|
||||
return request.get('/project/page', { params })
|
||||
}
|
||||
@ -22,12 +24,14 @@ export function getProjectById(id: number) {
|
||||
return request.get(`/project/${id}`)
|
||||
}
|
||||
|
||||
// 客户管理
|
||||
// ===================== 客户管理 =====================
|
||||
|
||||
export function getCustomerList(params?: { pageNum: number; pageSize: number; customerName?: string }) {
|
||||
return request.get('/customer/page', { params })
|
||||
}
|
||||
|
||||
// 支出管理
|
||||
// ===================== 支出管理 =====================
|
||||
|
||||
export function createExpense(data: any) {
|
||||
return request.post('/exp/expense', data)
|
||||
}
|
||||
@ -36,7 +40,16 @@ export function getExpenseList(params: { pageNum: number; pageSize: number }) {
|
||||
return request.get('/exp/expense/page', { params })
|
||||
}
|
||||
|
||||
// 应收款管理
|
||||
export function getExpenseTypeTree() {
|
||||
return request.get('/exp/expense-type/tree')
|
||||
}
|
||||
|
||||
export function getTodayExpense() {
|
||||
return request.get('/exp/expense/stats/today-expense')
|
||||
}
|
||||
|
||||
// ===================== 应收款管理 =====================
|
||||
|
||||
export function getReceivableList(params: { pageNum: number; pageSize: number; status?: string }) {
|
||||
return request.get('/receipt/receivable/page', { params })
|
||||
}
|
||||
@ -45,15 +58,10 @@ export function getUpcomingDueList(daysWithin: number = 7) {
|
||||
return request.get(`/receipt/receivable/upcoming-due?daysWithin=${daysWithin}`)
|
||||
}
|
||||
|
||||
// 统计数据
|
||||
export function getTodayIncome() {
|
||||
return request.get('/receipt/receivable/stats/today-income')
|
||||
}
|
||||
|
||||
export function getTodayExpense() {
|
||||
return request.get('/exp/expense/stats/today-expense')
|
||||
}
|
||||
|
||||
export function getUnpaidAmount() {
|
||||
return request.get('/receipt/receivable/stats/unpaid-amount')
|
||||
}
|
||||
@ -61,8 +69,3 @@ export function getUnpaidAmount() {
|
||||
export function getOverdueCount() {
|
||||
return request.get('/receipt/receivable/stats/overdue-count')
|
||||
}
|
||||
|
||||
// 支出类型
|
||||
export function getExpenseTypeTree() {
|
||||
return request.get('/exp/expense-type/tree')
|
||||
}
|
||||
|
||||
@ -86,7 +86,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import request from '@/api/request'
|
||||
import { getTodayIncome, getTodayExpense, getUnpaidAmount } from '@/api'
|
||||
|
||||
const summary = ref({
|
||||
todayIncome: 0,
|
||||
@ -114,9 +114,9 @@ const formatMoney = (value: number) => {
|
||||
const loadSummary = async () => {
|
||||
try {
|
||||
const [incomeRes, expenseRes, unpaidRes] = await Promise.all([
|
||||
request.get('/receipt/api/v1/receipt/receivable/stats/today-income'),
|
||||
request.get('/exp/api/v1/exp/expense/stats/today-expense'),
|
||||
request.get('/receipt/api/v1/receipt/receivable/stats/unpaid-amount')
|
||||
getTodayIncome(),
|
||||
getTodayExpense(),
|
||||
getUnpaidAmount()
|
||||
])
|
||||
|
||||
summary.value.todayIncome = (incomeRes as any).data || 0
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
import { ref, reactive } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { showToast, showSuccessToast } from 'vant'
|
||||
import request from '@/api/request'
|
||||
import { login } from '@/api'
|
||||
|
||||
const router = useRouter()
|
||||
const loading = ref(false)
|
||||
@ -74,7 +74,7 @@ const handleLogin = async () => {
|
||||
|
||||
loading.value = true
|
||||
try {
|
||||
const res: any = await request.post('/auth/login', form)
|
||||
const res: any = await login(form)
|
||||
const data = res.data
|
||||
localStorage.setItem('token', data.token)
|
||||
localStorage.setItem('userInfo', JSON.stringify({
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { showToast, showSuccessToast } from 'vant'
|
||||
import request from '@/api/request'
|
||||
import { createExpense, getExpenseTypeTree } from '@/api'
|
||||
|
||||
const router = useRouter()
|
||||
const loading = ref(false)
|
||||
@ -127,7 +127,7 @@ const handleSubmit = async () => {
|
||||
payeeName: '待填写'
|
||||
}
|
||||
console.log('提交支出数据:', requestData)
|
||||
await request.post('/exp/api/v1/exp/expense', requestData)
|
||||
await createExpense(requestData)
|
||||
showSuccessToast('提交成功')
|
||||
router.back()
|
||||
} catch (e: any) {
|
||||
@ -141,7 +141,7 @@ const handleSubmit = async () => {
|
||||
onMounted(async () => {
|
||||
// 加载支出类型
|
||||
try {
|
||||
const res: any = await request.get('/exp/api/v1/exp/expense-type/tree')
|
||||
const res: any = await getExpenseTypeTree()
|
||||
const types = res.data || []
|
||||
typeColumns.value = types.map((t: any) => ({
|
||||
text: t.typeName,
|
||||
|
||||
@ -43,7 +43,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { showToast } from 'vant'
|
||||
import request from '@/api/request'
|
||||
import { getReceivableList } from '@/api'
|
||||
|
||||
const loading = ref(false)
|
||||
const refreshing = ref(false)
|
||||
@ -74,9 +74,7 @@ const getStatusName = (status: string) => {
|
||||
|
||||
const onLoad = async () => {
|
||||
try {
|
||||
const res: any = await request.get('/receipt/api/v1/receipt/receivable/page', {
|
||||
params: { pageNum: pageNum.value, pageSize }
|
||||
})
|
||||
const res: any = await getReceivableList({ pageNum: pageNum.value, pageSize })
|
||||
const records = res.data?.records || []
|
||||
list.value.push(...records)
|
||||
loading.value = false
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user