fix: 全面修复网关路由与前端API路径一致性问题
问题分析: 1. 后端Controller路径不一致: - fund-cust: /api/v1/customer (不是/api/v1/cust/customer) - fund-proj: /api/v1/project (不是/api/v1/proj/project) - fund-sys: /api/v1/auth 和 /api/v1/sys/* 两种路径 2. 之前的错误修改导致路径不匹配 解决方案: - 网关: StripPrefix=1 + PrefixPath=/api/v1 - 前端: baseURL=/fund,路径直接对应后端路径 网关路由配置: - fund-sys: /fund/auth/**,/fund/sys/** -> /api/v1/auth/*,/api/v1/sys/* - fund-cust: /fund/customer/** -> /api/v1/customer/* - fund-proj: /fund/project/**,/fund/requirement/** -> /api/v1/project/*,/api/v1/requirement/* - fund-exp: /fund/exp/** -> /api/v1/exp/* - fund-receipt: /fund/receipt/** -> /api/v1/receipt/* - fund-report: /fund/report/** -> /api/v1/report/* - fund-file: /fund/file/** -> /api/v1/file/* 前端API路径规范: - 认证: /auth/login -> /api/v1/auth/login - 用户: /sys/user/page -> /api/v1/sys/user/page - 客户: /customer/page -> /api/v1/customer/page - 项目: /project/page -> /api/v1/project/page - 支出: /exp/expense/page -> /api/v1/exp/expense/page - 收款: /receipt/receivable/page -> /api/v1/receipt/receivable/page - 报表: /report/stats -> /api/v1/report/stats - 文件: /file/upload -> /api/v1/file/upload 修改文件: - fund-gateway/application.yml: 路由配置调整 - TenantGatewayFilter.java: 白名单路径修正 - TokenAuthFilter.java: 白名单路径修正 - fund-admin/src/api/*.ts: 所有API路径修正 - fund-mobile/src/api/index.ts: 所有API路径修正 - FileUpload组件: 上传路径修正
This commit is contained in:
parent
3b0b10d5b2
commit
8490b7a2c6
@ -2,20 +2,20 @@ import { request } from './request'
|
|||||||
|
|
||||||
// 登录
|
// 登录
|
||||||
export function login(data: { username: string; password: string }) {
|
export function login(data: { username: string; password: string }) {
|
||||||
return request.post('/sys/auth/login', data)
|
return request.post('/auth/login', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 登出
|
// 登出
|
||||||
export function logout() {
|
export function logout() {
|
||||||
return request.post('/sys/auth/logout')
|
return request.post('/auth/logout')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取当前用户信息
|
// 获取当前用户信息
|
||||||
export function getUserInfo() {
|
export function getUserInfo() {
|
||||||
return request.get('/sys/auth/info')
|
return request.get('/auth/info')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 刷新Token
|
// 刷新Token
|
||||||
export function refreshToken() {
|
export function refreshToken() {
|
||||||
return request.post('/sys/auth/refresh')
|
return request.post('/auth/refresh')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,12 +2,12 @@ import { request } from './request'
|
|||||||
|
|
||||||
// 获取参数分组列表
|
// 获取参数分组列表
|
||||||
export function getConfigGroups() {
|
export function getConfigGroups() {
|
||||||
return request.get('/sys/sys/config/groups')
|
return request.get('/sys/config/groups')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取参数列表
|
// 获取参数列表
|
||||||
export function getConfigList(groupCode?: string) {
|
export function getConfigList(groupCode?: string) {
|
||||||
return request.get('/sys/sys/config/list', {
|
return request.get('/sys/config/list', {
|
||||||
params: { groupCode }
|
params: { groupCode }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -19,17 +19,17 @@ export function getConfigPage(params: {
|
|||||||
configKey?: string
|
configKey?: string
|
||||||
groupCode?: string
|
groupCode?: string
|
||||||
}) {
|
}) {
|
||||||
return request.get('/sys/sys/config/page', { params })
|
return request.get('/sys/config/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取参数详情
|
// 获取参数详情
|
||||||
export function getConfigById(id: number) {
|
export function getConfigById(id: number) {
|
||||||
return request.get(`/sys/sys/config/${id}`)
|
return request.get(`/sys/config/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据key获取参数值
|
// 根据key获取参数值
|
||||||
export function getConfigByKey(configKey: string) {
|
export function getConfigByKey(configKey: string) {
|
||||||
return request.get(`/sys/sys/config/key/${configKey}`)
|
return request.get(`/sys/config/key/${configKey}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建参数
|
// 创建参数
|
||||||
@ -42,7 +42,7 @@ export function createConfig(data: {
|
|||||||
groupName?: string
|
groupName?: string
|
||||||
sortOrder?: number
|
sortOrder?: number
|
||||||
}) {
|
}) {
|
||||||
return request.post('/sys/sys/config', data)
|
return request.post('/sys/config', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新参数
|
// 更新参数
|
||||||
@ -53,7 +53,7 @@ export function updateConfig(data: {
|
|||||||
status?: number
|
status?: number
|
||||||
sortOrder?: number
|
sortOrder?: number
|
||||||
}) {
|
}) {
|
||||||
return request.put('/sys/sys/config', data)
|
return request.put('/sys/config', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 批量更新参数值
|
// 批量更新参数值
|
||||||
@ -61,10 +61,10 @@ export function batchUpdateConfig(configs: Array<{
|
|||||||
id: number
|
id: number
|
||||||
configValue: string
|
configValue: string
|
||||||
}>) {
|
}>) {
|
||||||
return request.put('/sys/sys/config/batch', configs)
|
return request.put('/sys/config/batch', configs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除参数
|
// 删除参数
|
||||||
export function deleteConfig(id: number) {
|
export function deleteConfig(id: number) {
|
||||||
return request.delete(`/sys/sys/config/${id}`)
|
return request.delete(`/sys/config/${id}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,42 +1,42 @@
|
|||||||
import { request } from './request'
|
import { request } from './request'
|
||||||
|
|
||||||
export function getCustomerList(params: { pageNum: number; pageSize: number; customerName?: string; status?: number }) {
|
export function getCustomerList(params: { pageNum: number; pageSize: number; customerName?: string; status?: number }) {
|
||||||
return request.get('/cust/cust/customer/page', { params })
|
return request.get('/customer/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getCustomerById(id: number) {
|
export function getCustomerById(id: number) {
|
||||||
return request.get(`/cust/cust/customer/${id}`)
|
return request.get(`/customer/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createCustomer(data: any) {
|
export function createCustomer(data: any) {
|
||||||
return request.post('/cust/cust/customer', data)
|
return request.post('/customer', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateCustomer(id: number, data: any) {
|
export function updateCustomer(id: number, data: any) {
|
||||||
return request.put(`/cust/cust/customer/${id}`, data)
|
return request.put(`/customer/${id}`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteCustomer(id: number) {
|
export function deleteCustomer(id: number) {
|
||||||
return request.delete(`/cust/cust/customer/${id}`)
|
return request.delete(`/customer/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 联系人相关
|
// 联系人相关
|
||||||
export function getContactList(params: { pageNum: number; pageSize: number; customerId: number }) {
|
export function getContactList(params: { pageNum: number; pageSize: number; customerId: number }) {
|
||||||
return request.get('/cust/cust/contact/page', { params })
|
return request.get('/customer/contact/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createContact(data: any) {
|
export function createContact(data: any) {
|
||||||
return request.post('/cust/cust/contact', data)
|
return request.post('/customer/contact', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateContact(id: number, data: any) {
|
export function updateContact(id: number, data: any) {
|
||||||
return request.put(`/cust/cust/contact/${id}`, data)
|
return request.put(`/customer/contact/${id}`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteContact(id: number) {
|
export function deleteContact(id: number) {
|
||||||
return request.delete(`/cust/cust/contact/${id}`)
|
return request.delete(`/customer/contact/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setPrimaryContact(customerId: number, contactId: number) {
|
export function setPrimaryContact(customerId: number, contactId: number) {
|
||||||
return request.put(`/cust/cust/customer/${customerId}/contact/${contactId}/primary`)
|
return request.put(`/customer/${customerId}/contact/${contactId}/primary`)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,25 +1,25 @@
|
|||||||
import { request } from './request'
|
import { request } from './request'
|
||||||
|
|
||||||
export function getDeptList(params?: { deptName?: string; status?: number }) {
|
export function getDeptList(params?: { deptName?: string; status?: number }) {
|
||||||
return request.get('/sys/sys/dept/list', { params })
|
return request.get('/sys/dept/list', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDeptTree() {
|
export function getDeptTree() {
|
||||||
return request.get('/sys/sys/dept/tree')
|
return request.get('/sys/dept/tree')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDeptById(id: number) {
|
export function getDeptById(id: number) {
|
||||||
return request.get(`/sys/sys/dept/${id}`)
|
return request.get(`/sys/dept/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createDept(data: any) {
|
export function createDept(data: any) {
|
||||||
return request.post('/sys/sys/dept', data)
|
return request.post('/sys/dept', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateDept(data: any) {
|
export function updateDept(data: any) {
|
||||||
return request.put('/sys/sys/dept', data)
|
return request.put('/sys/dept', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteDept(id: number) {
|
export function deleteDept(id: number) {
|
||||||
return request.delete(`/sys/sys/dept/${id}`)
|
return request.delete(`/sys/dept/${id}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,65 +2,65 @@ import { request } from './request'
|
|||||||
|
|
||||||
// 支出类型
|
// 支出类型
|
||||||
export function getExpenseTypeList(params: { pageNum: number; pageSize: number; typeName?: string; status?: string }) {
|
export function getExpenseTypeList(params: { pageNum: number; pageSize: number; typeName?: string; status?: string }) {
|
||||||
return request.get('/exp/exp/expense-type/page', { params })
|
return request.get('/exp/expense-type/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getExpenseTypeTree() {
|
export function getExpenseTypeTree() {
|
||||||
return request.get('/exp/exp/expense-type/tree')
|
return request.get('/exp/expense-type/tree')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createExpenseType(data: any) {
|
export function createExpenseType(data: any) {
|
||||||
return request.post('/exp/exp/expense-type', data)
|
return request.post('/exp/expense-type', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateExpenseType(id: number, data: any) {
|
export function updateExpenseType(id: number, data: any) {
|
||||||
return request.put(`/exp/exp/expense-type/${id}`, data)
|
return request.put(`/exp/expense-type/${id}`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteExpenseType(id: number) {
|
export function deleteExpenseType(id: number) {
|
||||||
return request.delete(`/exp/exp/expense-type/${id}`)
|
return request.delete(`/exp/expense-type/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 支出管理
|
// 支出管理
|
||||||
export function getExpenseList(params: { pageNum: number; pageSize: number; title?: string; expenseType?: number; approvalStatus?: number; payStatus?: number }) {
|
export function getExpenseList(params: { pageNum: number; pageSize: number; title?: string; expenseType?: number; approvalStatus?: number; payStatus?: number }) {
|
||||||
return request.get('/exp/exp/expense/page', { params })
|
return request.get('/exp/expense/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getExpenseById(id: number) {
|
export function getExpenseById(id: number) {
|
||||||
return request.get(`/exp/exp/expense/${id}`)
|
return request.get(`/exp/expense/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createExpense(data: any) {
|
export function createExpense(data: any) {
|
||||||
return request.post('/exp/exp/expense', data)
|
return request.post('/exp/expense', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateExpense(id: number, data: any) {
|
export function updateExpense(id: number, data: any) {
|
||||||
return request.put(`/exp/exp/expense/${id}`, data)
|
return request.put(`/exp/expense/${id}`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteExpense(id: number) {
|
export function deleteExpense(id: number) {
|
||||||
return request.delete(`/exp/exp/expense/${id}`)
|
return request.delete(`/exp/expense/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 审批流程
|
// 审批流程
|
||||||
export function submitExpense(id: number) {
|
export function submitExpense(id: number) {
|
||||||
return request.post(`/exp/exp/expense/${id}/submit`)
|
return request.post(`/exp/expense/${id}/submit`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function withdrawExpense(id: number) {
|
export function withdrawExpense(id: number) {
|
||||||
return request.post(`/exp/exp/expense/${id}/withdraw`)
|
return request.post(`/exp/expense/${id}/withdraw`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function approveExpense(id: number, comment: string) {
|
export function approveExpense(id: number, comment: string) {
|
||||||
return request.put(`/exp/exp/expense/${id}/approve?comment=${encodeURIComponent(comment)}`)
|
return request.put(`/exp/expense/${id}/approve?comment=${encodeURIComponent(comment)}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function rejectExpense(id: number, comment: string) {
|
export function rejectExpense(id: number, comment: string) {
|
||||||
return request.put(`/exp/exp/expense/${id}/reject?comment=${encodeURIComponent(comment)}`)
|
return request.put(`/exp/expense/${id}/reject?comment=${encodeURIComponent(comment)}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function confirmPayExpense(id: number, payChannel: string, payVoucher?: string) {
|
export function confirmPayExpense(id: number, payChannel: string, payVoucher?: string) {
|
||||||
return request.put(`/exp/exp/expense/${id}/confirm-pay?payChannel=${payChannel}&payVoucher=${payVoucher || ''}`)
|
return request.put(`/exp/expense/${id}/confirm-pay?payChannel=${payChannel}&payVoucher=${payVoucher || ''}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出支出明细
|
// 导出支出明细
|
||||||
@ -76,7 +76,7 @@ export function exportExpense(params?: { title?: string; expenseType?: number; a
|
|||||||
if (params?.payStatus !== undefined) queryParams.append('payStatus', String(params.payStatus))
|
if (params?.payStatus !== undefined) queryParams.append('payStatus', String(params.payStatus))
|
||||||
|
|
||||||
const queryString = queryParams.toString()
|
const queryString = queryParams.toString()
|
||||||
const url = `${baseUrl}/exp/exp/expense/export${queryString ? '?' + queryString : ''}`
|
const url = `${baseUrl}/exp/expense/export${queryString ? '?' + queryString : ''}`
|
||||||
|
|
||||||
return fetch(url, {
|
return fetch(url, {
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@ -8,7 +8,7 @@ export function uploadFile(file: File, businessType?: string, businessId?: numbe
|
|||||||
if (businessId) formData.append('businessId', String(businessId))
|
if (businessId) formData.append('businessId', String(businessId))
|
||||||
if (description) formData.append('description', description)
|
if (description) formData.append('description', description)
|
||||||
|
|
||||||
return request.post('/file/file/upload', formData, {
|
return request.post('/file/upload', formData, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'multipart/form-data'
|
'Content-Type': 'multipart/form-data'
|
||||||
}
|
}
|
||||||
@ -17,25 +17,25 @@ export function uploadFile(file: File, businessType?: string, businessId?: numbe
|
|||||||
|
|
||||||
// 获取文件列表
|
// 获取文件列表
|
||||||
export function getFileList(params: { pageNum: number; pageSize: number; businessType?: string; businessId?: number; fileType?: string }) {
|
export function getFileList(params: { pageNum: number; pageSize: number; businessType?: string; businessId?: number; fileType?: string }) {
|
||||||
return request.get('/file/file/page', { params })
|
return request.get('/file/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据业务查询文件
|
// 根据业务查询文件
|
||||||
export function getFilesByBusiness(businessType: string, businessId: number) {
|
export function getFilesByBusiness(businessType: string, businessId: number) {
|
||||||
return request.get('/file/file/list', { params: { businessType, businessId } })
|
return request.get('/file/list', { params: { businessType, businessId } })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取文件详情
|
// 获取文件详情
|
||||||
export function getFileById(id: number) {
|
export function getFileById(id: number) {
|
||||||
return request.get(`/file/file/${id}`)
|
return request.get(`/file/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除文件
|
// 删除文件
|
||||||
export function deleteFile(id: number) {
|
export function deleteFile(id: number) {
|
||||||
return request.delete(`/file/file/${id}`)
|
return request.delete(`/file/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取文件下载URL
|
// 获取文件下载URL
|
||||||
export function getFileDownloadUrl(filePath: string) {
|
export function getFileDownloadUrl(filePath: string) {
|
||||||
return `/file/file/download/${filePath}`
|
return `/file/download/${filePath}`
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,30 +1,30 @@
|
|||||||
import { request } from './request'
|
import { request } from './request'
|
||||||
|
|
||||||
export function getMenuList(params?: { menuName?: string; status?: number }) {
|
export function getMenuList(params?: { menuName?: string; status?: number }) {
|
||||||
return request.get('/sys/sys/menu/tree', { params })
|
return request.get('/sys/menu/tree', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getMenuTree() {
|
export function getMenuTree() {
|
||||||
return request.get('/sys/sys/menu/tree')
|
return request.get('/sys/menu/tree')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getMenuById(id: number) {
|
export function getMenuById(id: number) {
|
||||||
return request.get(`/sys/sys/menu/${id}`)
|
return request.get(`/sys/menu/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createMenu(data: any) {
|
export function createMenu(data: any) {
|
||||||
return request.post('/sys/sys/menu', data)
|
return request.post('/sys/menu', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateMenu(data: any) {
|
export function updateMenu(data: any) {
|
||||||
return request.put('/sys/sys/menu', data)
|
return request.put('/sys/menu', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteMenu(id: number) {
|
export function deleteMenu(id: number) {
|
||||||
return request.delete(`/sys/sys/menu/${id}`)
|
return request.delete(`/sys/menu/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getUserMenus(userId?: number) {
|
export function getUserMenus(userId?: number) {
|
||||||
const id = userId || JSON.parse(localStorage.getItem('userInfo') || '{}').id
|
const id = userId || JSON.parse(localStorage.getItem('userInfo') || '{}').id
|
||||||
return request.get(`/sys/sys/menu/user/${id}`)
|
return request.get(`/sys/menu/user/${id}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,42 +1,42 @@
|
|||||||
import { request } from './request'
|
import { request } from './request'
|
||||||
|
|
||||||
export function getProjectList(params: { pageNum: number; pageSize: number; projectName?: string; status?: string }) {
|
export function getProjectList(params: { pageNum: number; pageSize: number; projectName?: string; status?: string }) {
|
||||||
return request.get('/proj/proj/project/page', { params })
|
return request.get('/project/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getProjectById(id: number) {
|
export function getProjectById(id: number) {
|
||||||
return request.get(`/proj/proj/project/${id}`)
|
return request.get(`/project/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createProject(data: any) {
|
export function createProject(data: any) {
|
||||||
return request.post('/proj/proj/project', data)
|
return request.post('/project', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateProject(id: number, data: any) {
|
export function updateProject(id: number, data: any) {
|
||||||
return request.put(`/proj/proj/project/${id}`, data)
|
return request.put(`/project/${id}`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteProject(id: number) {
|
export function deleteProject(id: number) {
|
||||||
return request.delete(`/proj/proj/project/${id}`)
|
return request.delete(`/project/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 需求工单
|
// 需求工单
|
||||||
export function getRequirementList(params: { pageNum: number; pageSize: number; requirementName?: string; status?: string }) {
|
export function getRequirementList(params: { pageNum: number; pageSize: number; requirementName?: string; status?: string }) {
|
||||||
return request.get('/proj/proj/requirement/page', { params })
|
return request.get('/requirement/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRequirementById(id: number) {
|
export function getRequirementById(id: number) {
|
||||||
return request.get(`/proj/proj/requirement/${id}`)
|
return request.get(`/requirement/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createRequirement(data: any) {
|
export function createRequirement(data: any) {
|
||||||
return request.post('/proj/proj/requirement', data)
|
return request.post('/requirement', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateRequirement(id: number, data: any) {
|
export function updateRequirement(id: number, data: any) {
|
||||||
return request.put(`/proj/proj/requirement/${id}`, data)
|
return request.put(`/requirement/${id}`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteRequirement(id: number) {
|
export function deleteRequirement(id: number) {
|
||||||
return request.delete(`/proj/proj/requirement/${id}`)
|
return request.delete(`/requirement/${id}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,52 +2,52 @@ import { request } from './request'
|
|||||||
|
|
||||||
// 应收款管理
|
// 应收款管理
|
||||||
export function getReceivableList(params: { pageNum: number; pageSize: number; projectId?: number; customerId?: number; status?: string; confirmStatus?: number }) {
|
export function getReceivableList(params: { pageNum: number; pageSize: number; projectId?: number; customerId?: number; status?: string; confirmStatus?: number }) {
|
||||||
return request.get('/receipt/receipt/receivable/page', { params })
|
return request.get('/receipt/receivable/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getReceivableById(id: number) {
|
export function getReceivableById(id: number) {
|
||||||
return request.get(`/receipt/receipt/receivable/${id}`)
|
return request.get(`/receipt/receivable/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createReceivable(data: any) {
|
export function createReceivable(data: any) {
|
||||||
return request.post('/receipt/receipt/receivable', data)
|
return request.post('/receipt/receivable', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateReceivable(id: number, data: any) {
|
export function updateReceivable(id: number, data: any) {
|
||||||
return request.put(`/receipt/receipt/receivable/${id}`, data)
|
return request.put(`/receipt/receivable/${id}`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteReceivable(id: number) {
|
export function deleteReceivable(id: number) {
|
||||||
return request.delete(`/receipt/receipt/receivable/${id}`)
|
return request.delete(`/receipt/receivable/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function confirmReceivable(id: number) {
|
export function confirmReceivable(id: number) {
|
||||||
return request.put(`/receipt/receipt/receivable/${id}/confirm`)
|
return request.put(`/receipt/receivable/${id}/confirm`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function cancelConfirmReceivable(id: number) {
|
export function cancelConfirmReceivable(id: number) {
|
||||||
return request.put(`/receipt/receipt/receivable/${id}/cancel-confirm`)
|
return request.put(`/receipt/receivable/${id}/cancel-confirm`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function recordReceipt(id: number, data: any) {
|
export function recordReceipt(id: number, data: any) {
|
||||||
return request.post(`/receipt/receipt/receivable/${id}/receipt`, data)
|
return request.post(`/receipt/receivable/${id}/receipt`, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getReceiptRecords(receivableId: number) {
|
export function getReceiptRecords(receivableId: number) {
|
||||||
return request.get(`/receipt/receipt/receivable/${receivableId}/receipts`)
|
return request.get(`/receipt/receivable/${receivableId}/receipts`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 收款记录
|
// 收款记录
|
||||||
export function getReceiptList(params: { pageNum: number; pageSize: number; receivableId?: number }) {
|
export function getReceiptList(params: { pageNum: number; pageSize: number; receivableId?: number }) {
|
||||||
return request.get('/receipt/receipt/receipt/page', { params })
|
return request.get('/receipt/receipt/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getReceiptById(id: number) {
|
export function getReceiptById(id: number) {
|
||||||
return request.get(`/receipt/receipt/receipt/${id}`)
|
return request.get(`/receipt/receipt/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createReceipt(data: any) {
|
export function createReceipt(data: any) {
|
||||||
return request.post('/receipt/receipt/receipt', data)
|
return request.post('/receipt/receipt', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出应收款明细
|
// 导出应收款明细
|
||||||
@ -63,7 +63,7 @@ export function exportReceivable(params?: { projectId?: number; customerId?: num
|
|||||||
if (params?.confirmStatus !== undefined) queryParams.append('confirmStatus', String(params.confirmStatus))
|
if (params?.confirmStatus !== undefined) queryParams.append('confirmStatus', String(params.confirmStatus))
|
||||||
|
|
||||||
const queryString = queryParams.toString()
|
const queryString = queryParams.toString()
|
||||||
const url = `${baseUrl}/receipt/receipt/receivable/export${queryString ? '?' + queryString : ''}`
|
const url = `${baseUrl}/receipt/receivable/export${queryString ? '?' + queryString : ''}`
|
||||||
|
|
||||||
return fetch(url, {
|
return fetch(url, {
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@ -41,27 +41,27 @@ export interface ProjectFinance {
|
|||||||
|
|
||||||
// 获取仪表盘统计数据
|
// 获取仪表盘统计数据
|
||||||
export function getDashboardStats() {
|
export function getDashboardStats() {
|
||||||
return request.get<DashboardStats>('/report/report/dashboard/stats')
|
return request.get<DashboardStats>('/report/dashboard/stats')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取收支趋势
|
// 获取收支趋势
|
||||||
export function getTrend(period: 'week' | 'month' | 'quarter' = 'week') {
|
export function getTrend(period: 'week' | 'month' | 'quarter' = 'week') {
|
||||||
return request.get<TrendItem[]>('/report/report/trend', { params: { period } })
|
return request.get<TrendItem[]>('/report/trend', { params: { period } })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取项目状态分布
|
// 获取项目状态分布
|
||||||
export function getProjectStatusDistribution() {
|
export function getProjectStatusDistribution() {
|
||||||
return request.get<DistributionItem[]>('/report/report/project/status-distribution')
|
return request.get<DistributionItem[]>('/report/project/status-distribution')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取支出类型分布
|
// 获取支出类型分布
|
||||||
export function getExpenseTypeDistribution() {
|
export function getExpenseTypeDistribution() {
|
||||||
return request.get<DistributionItem[]>('/report/report/expense/type-distribution')
|
return request.get<DistributionItem[]>('/report/expense/type-distribution')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取项目收支分析
|
// 获取项目收支分析
|
||||||
export function getProjectFinance(params?: { status?: string; customerId?: number }) {
|
export function getProjectFinance(params?: { status?: string; customerId?: number }) {
|
||||||
return request.get<ProjectFinance[]>('/report/report/project/finance', { params })
|
return request.get<ProjectFinance[]>('/report/project/finance', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 导出项目收支分析Excel
|
// 导出项目收支分析Excel
|
||||||
@ -76,7 +76,7 @@ export function exportProjectFinance(params?: { status?: string; customerId?: nu
|
|||||||
if (params?.customerId) queryParams.append('customerId', String(params.customerId))
|
if (params?.customerId) queryParams.append('customerId', String(params.customerId))
|
||||||
|
|
||||||
const queryString = queryParams.toString()
|
const queryString = queryParams.toString()
|
||||||
const url = `${baseUrl}/report/report/project/finance/export${queryString ? '?' + queryString : ''}`
|
const url = `${baseUrl}/report/project/finance/export${queryString ? '?' + queryString : ''}`
|
||||||
|
|
||||||
// 使用fetch下载
|
// 使用fetch下载
|
||||||
return fetch(url, {
|
return fetch(url, {
|
||||||
|
|||||||
@ -1,29 +1,29 @@
|
|||||||
import { request } from './request'
|
import { request } from './request'
|
||||||
|
|
||||||
export function getRoleList(params: { pageNum: number; pageSize: number; roleName?: string }) {
|
export function getRoleList(params: { pageNum: number; pageSize: number; roleName?: string }) {
|
||||||
return request.get('/sys/sys/role/page', { params })
|
return request.get('/sys/role/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRoleById(id: number) {
|
export function getRoleById(id: number) {
|
||||||
return request.get(`/sys/sys/role/${id}`)
|
return request.get(`/sys/role/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createRole(data: any) {
|
export function createRole(data: any) {
|
||||||
return request.post('/sys/sys/role', data)
|
return request.post('/sys/role', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateRole(data: any) {
|
export function updateRole(data: any) {
|
||||||
return request.put('/sys/sys/role', data)
|
return request.put('/sys/role', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function deleteRole(id: number) {
|
export function deleteRole(id: number) {
|
||||||
return request.delete(`/sys/sys/role/${id}`)
|
return request.delete(`/sys/role/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getRoleMenus(id: number) {
|
export function getRoleMenus(id: number) {
|
||||||
return request.get(`/sys/sys/role/${id}/menus`)
|
return request.get(`/sys/role/${id}/menus`)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function assignMenus(id: number, menuIds: number[]) {
|
export function assignMenus(id: number, menuIds: number[]) {
|
||||||
return request.put(`/sys/sys/role/${id}/menus`, menuIds)
|
return request.put(`/sys/role/${id}/menus`, menuIds)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,34 +32,34 @@ export interface TenantDTO {
|
|||||||
|
|
||||||
// 分页查询租户
|
// 分页查询租户
|
||||||
export function pageTenants(pageNum: number, pageSize: number, keyword?: string) {
|
export function pageTenants(pageNum: number, pageSize: number, keyword?: string) {
|
||||||
return request.get<{ records: Tenant[], total: number }>(`/sys/sys/tenant/page`, {
|
return request.get<{ records: Tenant[], total: number }>(`/sys/tenant/page`, {
|
||||||
params: { pageNum, pageSize, keyword }
|
params: { pageNum, pageSize, keyword }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取租户详情
|
// 获取租户详情
|
||||||
export function getTenantById(id: number) {
|
export function getTenantById(id: number) {
|
||||||
return request.get<Tenant>(`/sys/sys/tenant/${id}`)
|
return request.get<Tenant>(`/sys/tenant/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建租户
|
// 创建租户
|
||||||
export function createTenant(data: TenantDTO) {
|
export function createTenant(data: TenantDTO) {
|
||||||
return request.post<number>('/sys/sys/tenant', data)
|
return request.post<number>('/sys/tenant', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新租户
|
// 更新租户
|
||||||
export function updateTenant(data: TenantDTO) {
|
export function updateTenant(data: TenantDTO) {
|
||||||
return request.put<boolean>('/sys/sys/tenant', data)
|
return request.put<boolean>('/sys/tenant', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除租户
|
// 删除租户
|
||||||
export function deleteTenant(id: number) {
|
export function deleteTenant(id: number) {
|
||||||
return request.delete<boolean>(`/sys/sys/tenant/${id}`)
|
return request.delete<boolean>(`/sys/tenant/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新租户状态
|
// 更新租户状态
|
||||||
export function updateTenantStatus(id: number, status: number) {
|
export function updateTenantStatus(id: number, status: number) {
|
||||||
return request.put<boolean>(`/sys/sys/tenant/${id}/status`, null, {
|
return request.put<boolean>(`/sys/tenant/${id}/status`, null, {
|
||||||
params: { status }
|
params: { status }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,45 +2,45 @@ import { request } from './request'
|
|||||||
|
|
||||||
// 用户列表
|
// 用户列表
|
||||||
export function getUserList(params: { pageNum: number; pageSize: number; username?: string; status?: number }) {
|
export function getUserList(params: { pageNum: number; pageSize: number; username?: string; status?: number }) {
|
||||||
return request.get('/sys/sys/user/page', { params })
|
return request.get('/sys/user/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取用户详情
|
// 获取用户详情
|
||||||
export function getUserById(id: number) {
|
export function getUserById(id: number) {
|
||||||
return request.get(`/sys/sys/user/${id}`)
|
return request.get(`/sys/user/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建用户
|
// 创建用户
|
||||||
export function createUser(data: any) {
|
export function createUser(data: any) {
|
||||||
return request.post('/sys/sys/user', data)
|
return request.post('/sys/user', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新用户
|
// 更新用户
|
||||||
export function updateUser(data: any) {
|
export function updateUser(data: any) {
|
||||||
return request.put('/sys/sys/user', data)
|
return request.put('/sys/user', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除用户
|
// 删除用户
|
||||||
export function deleteUser(id: number) {
|
export function deleteUser(id: number) {
|
||||||
return request.delete(`/sys/sys/user/${id}`)
|
return request.delete(`/sys/user/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新用户状态
|
// 更新用户状态
|
||||||
export function updateUserStatus(id: number, status: number) {
|
export function updateUserStatus(id: number, status: number) {
|
||||||
return request.put(`/sys/sys/user/${id}/status?status=${status}`)
|
return request.put(`/sys/user/${id}/status?status=${status}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取个人信息
|
// 获取个人信息
|
||||||
export function getProfile() {
|
export function getProfile() {
|
||||||
return request.get('/sys/sys/profile')
|
return request.get('/sys/profile')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新个人信息
|
// 更新个人信息
|
||||||
export function updateProfile(data: { realName: string; phone?: string; email?: string; avatar?: string }) {
|
export function updateProfile(data: { realName: string; phone?: string; email?: string; avatar?: string }) {
|
||||||
return request.put('/sys/sys/profile', data)
|
return request.put('/sys/profile', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 修改密码
|
// 修改密码
|
||||||
export function updatePassword(data: { oldPassword: string; newPassword: string; confirmPassword: string }) {
|
export function updatePassword(data: { oldPassword: string; newPassword: string; confirmPassword: string }) {
|
||||||
return request.put('/sys/sys/profile/password', data)
|
return request.put('/sys/profile/password', data)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -90,7 +90,7 @@ const fileList = ref<UploadFile[]>([])
|
|||||||
|
|
||||||
const uploadUrl = computed(() => {
|
const uploadUrl = computed(() => {
|
||||||
const baseUrl = import.meta.env.VITE_API_URL || ''
|
const baseUrl = import.meta.env.VITE_API_URL || ''
|
||||||
return `${baseUrl}/fund/file/file/upload`
|
return `${baseUrl}/fund/file/upload`
|
||||||
})
|
})
|
||||||
|
|
||||||
const headers = computed(() => {
|
const headers = computed(() => {
|
||||||
|
|||||||
@ -38,20 +38,19 @@ public class TenantGatewayFilter implements GlobalFilter, Ordered {
|
|||||||
public static final String HEADER_USERNAME = "X-Username";
|
public static final String HEADER_USERNAME = "X-Username";
|
||||||
|
|
||||||
// 白名单路径(不需要X-Tenant-Id)
|
// 白名单路径(不需要X-Tenant-Id)
|
||||||
// 注意:路径是网关接收的原始请求路径(含/fund前缀)
|
// 路径格式:前端请求路径(baseURL=/fund已添加,这里只需相对路径)
|
||||||
// 健康检查路径需要包含模块名两次(一次用于路由,一次用于服务路径)
|
|
||||||
private static final List<String> TENANT_ID_WHITE_LIST = Arrays.asList(
|
private static final List<String> TENANT_ID_WHITE_LIST = Arrays.asList(
|
||||||
"/fund/sys/auth/login", // 登录接口
|
"/fund/auth/login", // 登录接口
|
||||||
"/fund/sys/auth/logout", // 登出接口
|
"/fund/auth/logout", // 登出接口
|
||||||
"/actuator/health", // 网关健康检查(无/fund前缀)
|
"/actuator/health", // 网关健康检查
|
||||||
"/fund/sys/sys/health", // 系统服务健康检查 (/api/v1/sys/health)
|
"/fund/sys/health", // 系统服务健康检查
|
||||||
"/fund/cust/cust/health", // 客户服务健康检查 (/api/v1/cust/health)
|
"/fund/cust/health", // 客户服务健康检查
|
||||||
"/fund/proj/proj/health", // 项目服务健康检查 (/api/v1/proj/health)
|
"/fund/proj/health", // 项目服务健康检查
|
||||||
"/fund/exp/exp/health", // 支出服务健康检查 (/api/v1/exp/health)
|
"/fund/exp/health", // 支出服务健康检查
|
||||||
"/fund/receipt/receipt/health", // 收款服务健康检查 (/api/v1/receipt/health)
|
"/fund/receipt/health", // 收款服务健康检查
|
||||||
"/fund/report/report/health", // 报表服务健康检查 (/api/v1/report/health)
|
"/fund/report/health", // 报表服务健康检查
|
||||||
"/fund/req/req/health", // 请求服务健康检查 (/api/v1/req/health)
|
"/fund/req/health", // 请求服务健康检查
|
||||||
"/fund/file/file/health" // 文件服务健康检查 (/api/v1/file/health)
|
"/fund/file/health" // 文件服务健康检查
|
||||||
);
|
);
|
||||||
|
|
||||||
private final ObjectMapper objectMapper = new ObjectMapper();
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
|||||||
@ -39,18 +39,17 @@ public class TokenAuthFilter implements GlobalFilter, Ordered {
|
|||||||
private static final String TENANT_ID_HEADER = "X-Tenant-Id";
|
private static final String TENANT_ID_HEADER = "X-Tenant-Id";
|
||||||
|
|
||||||
// 白名单路径(不需要token验证)
|
// 白名单路径(不需要token验证)
|
||||||
// 注意:路径是网关接收的原始请求路径(含/fund前缀)
|
// 路径格式:前端请求路径(baseURL=/fund已添加)
|
||||||
// 健康检查路径需要包含模块名两次(一次用于路由,一次用于服务路径)
|
|
||||||
private static final List<String> WHITE_LIST = Arrays.asList(
|
private static final List<String> WHITE_LIST = Arrays.asList(
|
||||||
"/fund/sys/auth/login",
|
"/fund/auth/login",
|
||||||
"/fund/sys/sys/health",
|
"/fund/sys/health",
|
||||||
"/fund/cust/cust/health",
|
"/fund/cust/health",
|
||||||
"/fund/proj/proj/health",
|
"/fund/proj/health",
|
||||||
"/fund/exp/exp/health",
|
"/fund/exp/health",
|
||||||
"/fund/receipt/receipt/health",
|
"/fund/receipt/health",
|
||||||
"/fund/report/report/health",
|
"/fund/report/health",
|
||||||
"/fund/req/req/health",
|
"/fund/req/health",
|
||||||
"/fund/file/file/health"
|
"/fund/file/health"
|
||||||
);
|
);
|
||||||
|
|
||||||
private final ReactiveTokenService reactiveTokenService;
|
private final ReactiveTokenService reactiveTokenService;
|
||||||
|
|||||||
@ -59,31 +59,36 @@ spring:
|
|||||||
maxAge: 3600
|
maxAge: 3600
|
||||||
|
|
||||||
routes:
|
routes:
|
||||||
# 系统管理服务 (使用负载均衡)
|
# 系统管理服务
|
||||||
|
# 路径规则: /fund/auth/* -> /api/v1/auth/*
|
||||||
|
# /fund/sys/* -> /api/v1/sys/*
|
||||||
- id: fund-sys
|
- id: fund-sys
|
||||||
uri: lb://fund-sys
|
uri: lb://fund-sys
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/sys/**
|
- Path=/fund/auth/**,/fund/sys/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 客户管理服务
|
# 客户管理服务
|
||||||
|
# 路径规则: /fund/customer/* -> /api/v1/customer/*
|
||||||
- id: fund-cust
|
- id: fund-cust
|
||||||
uri: lb://fund-cust
|
uri: lb://fund-cust
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/cust/**
|
- Path=/fund/customer/**,/fund/cust/health
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 项目管理服务
|
# 项目管理服务
|
||||||
|
# 路径规则: /fund/project/* -> /api/v1/project/*
|
||||||
|
# /fund/requirement/* -> /api/v1/requirement/*
|
||||||
- id: fund-proj
|
- id: fund-proj
|
||||||
uri: lb://fund-proj
|
uri: lb://fund-proj
|
||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/proj/**
|
- Path=/fund/project/**,/fund/requirement/**,/fund/proj/health
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 用款申请服务
|
# 用款申请服务
|
||||||
@ -92,7 +97,7 @@ spring:
|
|||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/req/**
|
- Path=/fund/req/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 支出管理服务
|
# 支出管理服务
|
||||||
@ -101,7 +106,7 @@ spring:
|
|||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/exp/**
|
- Path=/fund/exp/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 收款管理服务
|
# 收款管理服务
|
||||||
@ -110,7 +115,7 @@ spring:
|
|||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/receipt/**
|
- Path=/fund/receipt/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 报表服务
|
# 报表服务
|
||||||
@ -119,7 +124,7 @@ spring:
|
|||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/report/**
|
- Path=/fund/report/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 文件服务
|
# 文件服务
|
||||||
@ -128,7 +133,7 @@ spring:
|
|||||||
predicates:
|
predicates:
|
||||||
- Path=/fund/file/**
|
- Path=/fund/file/**
|
||||||
filters:
|
filters:
|
||||||
- StripPrefix=2
|
- StripPrefix=1
|
||||||
- PrefixPath=/api/v1
|
- PrefixPath=/api/v1
|
||||||
|
|
||||||
# 多租户路由配置
|
# 多租户路由配置
|
||||||
|
|||||||
@ -2,67 +2,67 @@ import request from './request'
|
|||||||
|
|
||||||
// 用户认证
|
// 用户认证
|
||||||
export function login(data: { username: string; password: string }) {
|
export function login(data: { username: string; password: string }) {
|
||||||
return request.post('/sys/auth/login', data)
|
return request.post('/auth/login', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getUserInfo() {
|
export function getUserInfo() {
|
||||||
return request.get('/sys/auth/info')
|
return request.get('/auth/info')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function logout() {
|
export function logout() {
|
||||||
return request.post('/sys/auth/logout')
|
return request.post('/auth/logout')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 项目管理
|
// 项目管理
|
||||||
export function getProjectList(params?: { pageNum: number; pageSize: number; projectName?: string }) {
|
export function getProjectList(params?: { pageNum: number; pageSize: number; projectName?: string }) {
|
||||||
return request.get('/proj/proj/project/page', { params })
|
return request.get('/project/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getProjectById(id: number) {
|
export function getProjectById(id: number) {
|
||||||
return request.get(`/proj/proj/project/${id}`)
|
return request.get(`/project/${id}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 客户管理
|
// 客户管理
|
||||||
export function getCustomerList(params?: { pageNum: number; pageSize: number; customerName?: string }) {
|
export function getCustomerList(params?: { pageNum: number; pageSize: number; customerName?: string }) {
|
||||||
return request.get('/cust/cust/customer/page', { params })
|
return request.get('/customer/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 支出管理
|
// 支出管理
|
||||||
export function createExpense(data: any) {
|
export function createExpense(data: any) {
|
||||||
return request.post('/exp/exp/expense', data)
|
return request.post('/exp/expense', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getExpenseList(params: { pageNum: number; pageSize: number }) {
|
export function getExpenseList(params: { pageNum: number; pageSize: number }) {
|
||||||
return request.get('/exp/exp/expense/page', { params })
|
return request.get('/exp/expense/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 应收款管理
|
// 应收款管理
|
||||||
export function getReceivableList(params: { pageNum: number; pageSize: number; status?: string }) {
|
export function getReceivableList(params: { pageNum: number; pageSize: number; status?: string }) {
|
||||||
return request.get('/receipt/receipt/receivable/page', { params })
|
return request.get('/receipt/receivable/page', { params })
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getUpcomingDueList(daysWithin: number = 7) {
|
export function getUpcomingDueList(daysWithin: number = 7) {
|
||||||
return request.get(`/receipt/receipt/receivable/upcoming-due?daysWithin=${daysWithin}`)
|
return request.get(`/receipt/receivable/upcoming-due?daysWithin=${daysWithin}`)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 统计数据
|
// 统计数据
|
||||||
export function getTodayIncome() {
|
export function getTodayIncome() {
|
||||||
return request.get('/receipt/receipt/receivable/stats/today-income')
|
return request.get('/receipt/receivable/stats/today-income')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getTodayExpense() {
|
export function getTodayExpense() {
|
||||||
return request.get('/exp/exp/expense/stats/today-expense')
|
return request.get('/exp/expense/stats/today-expense')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getUnpaidAmount() {
|
export function getUnpaidAmount() {
|
||||||
return request.get('/receipt/receipt/receivable/stats/unpaid-amount')
|
return request.get('/receipt/receivable/stats/unpaid-amount')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getOverdueCount() {
|
export function getOverdueCount() {
|
||||||
return request.get('/receipt/receipt/receivable/stats/overdue-count')
|
return request.get('/receipt/receivable/stats/overdue-count')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 支出类型
|
// 支出类型
|
||||||
export function getExpenseTypeTree() {
|
export function getExpenseTypeTree() {
|
||||||
return request.get('/exp/exp/expense-type/tree')
|
return request.get('/exp/expense-type/tree')
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user