From d613eae4239d0577560f0d1cd4647d72c4722761 Mon Sep 17 00:00:00 2001 From: zhangjf Date: Tue, 3 Mar 2026 23:42:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=99=84=E4=BB=B6?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=AD=97=E6=AE=B5=E5=90=8D=E4=B8=8D=E5=8C=B9?= =?UTF-8?q?=E9=85=8D=E5=8F=8A=E4=B8=8B=E8=BD=BD=E6=8E=A5=E5=8F=A3=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复前端附件字段名 filePath -> fileUrl(管理后台expense/requirement) - 修复移动端附件上传字段名及预览逻辑(base64->URL) - 修复后端FileController下载接口支持COS文件重定向 - 修复其他前端API路径问题 --- doc/sql/fund_proj_init.sql | 1 + fund-admin/src/api/expense.ts | 28 ++--- fund-admin/src/api/file.ts | 14 +-- fund-admin/src/api/project.ts | 12 +- fund-admin/src/views/customer/contact.vue | 34 +++-- fund-admin/src/views/expense/index.vue | 116 +++++++++--------- fund-admin/src/views/project/index.vue | 54 ++++---- fund-admin/src/views/project/requirement.vue | 12 +- fund-admin/src/views/receivable/index.vue | 79 +++++------- fund-admin/vite.config.ts | 38 +----- .../file/controller/FileController.java | 35 ++++-- fund-mobile/src/views/expense/Add.vue | 2 +- fund-mobile/src/views/expense/List.vue | 15 ++- fund-mobile/src/views/receivable/Add.vue | 2 +- .../controller/FundReceiptController.java | 10 +- .../controller/ReceivableController.java | 26 ++-- 16 files changed, 224 insertions(+), 254 deletions(-) diff --git a/doc/sql/fund_proj_init.sql b/doc/sql/fund_proj_init.sql index eed0d30..eaef1e0 100644 --- a/doc/sql/fund_proj_init.sql +++ b/doc/sql/fund_proj_init.sql @@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS project ( project_code VARCHAR(64) NOT NULL COMMENT '项目编码', project_name VARCHAR(128) NOT NULL COMMENT '项目名称', customer_id VARCHAR(32) NOT NULL COMMENT '客户ID', + customer_name VARCHAR(128) COMMENT '客户名称', project_type VARCHAR(32) NOT NULL COMMENT '项目类型', budget_amount DECIMAL(18,2) COMMENT '预算金额', start_date DATE COMMENT '开始日期', diff --git a/fund-admin/src/api/expense.ts b/fund-admin/src/api/expense.ts index 72061b7..61cf246 100644 --- a/fund-admin/src/api/expense.ts +++ b/fund-admin/src/api/expense.ts @@ -13,20 +13,20 @@ export function createExpenseType(data: any) { return request.post('/exp/expense-type', data) } -export function updateExpenseType(id: number, data: any) { +export function updateExpenseType(id: string, data: any) { return request.put(`/exp/expense-type/${id}`, data) } -export function deleteExpenseType(id: number) { +export function deleteExpenseType(id: string) { 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?: string; approvalStatus?: number; payStatus?: number }) { return request.get('/exp/expense/page', { params }) } -export function getExpenseById(id: number) { +export function getExpenseById(id: string) { return request.get(`/exp/expense/${id}`) } @@ -34,49 +34,49 @@ export function createExpense(data: any) { return request.post('/exp/expense', data) } -export function updateExpense(id: number, data: any) { +export function updateExpense(id: string, data: any) { return request.put(`/exp/expense/${id}`, data) } -export function deleteExpense(id: number) { +export function deleteExpense(id: string) { return request.delete(`/exp/expense/${id}`) } // 审批流程 -export function submitExpense(id: number) { +export function submitExpense(id: string) { return request.post(`/exp/expense/${id}/submit`) } -export function withdrawExpense(id: number) { +export function withdrawExpense(id: string) { return request.post(`/exp/expense/${id}/withdraw`) } -export function approveExpense(id: number, comment: string) { +export function approveExpense(id: string, comment: string) { return request.put(`/exp/expense/${id}/approve?comment=${encodeURIComponent(comment)}`) } -export function rejectExpense(id: number, comment: string) { +export function rejectExpense(id: string, comment: string) { return request.put(`/exp/expense/${id}/reject?comment=${encodeURIComponent(comment)}`) } -export function confirmPayExpense(id: number, payChannel: string, payVoucher?: string) { +export function confirmPayExpense(id: string, payChannel: string, payVoucher?: string) { return request.put(`/exp/expense/${id}/confirm-pay?payChannel=${payChannel}&payVoucher=${payVoucher || ''}`) } // 导出支出明细 -export function exportExpense(params?: { title?: string; expenseType?: number; approvalStatus?: number; payStatus?: number }) { +export function exportExpense(params?: { title?: string; expenseType?: string; approvalStatus?: number; payStatus?: number }) { const baseUrl = import.meta.env.VITE_API_URL || '' const token = localStorage.getItem('token') const tenantId = localStorage.getItem('tenantId') || '1' const queryParams = new URLSearchParams() if (params?.title) queryParams.append('title', params.title) - if (params?.expenseType) queryParams.append('expenseType', String(params.expenseType)) + if (params?.expenseType) queryParams.append('expenseType', params.expenseType) if (params?.approvalStatus !== undefined) queryParams.append('approvalStatus', String(params.approvalStatus)) if (params?.payStatus !== undefined) queryParams.append('payStatus', String(params.payStatus)) const queryString = queryParams.toString() - const url = `${baseUrl}/exp/expense/export${queryString ? '?' + queryString : ''}` + const url = `${baseUrl}/fund/exp/expense/export${queryString ? '?' + queryString : ''}` return fetch(url, { headers: { diff --git a/fund-admin/src/api/file.ts b/fund-admin/src/api/file.ts index 4692408..839fd96 100644 --- a/fund-admin/src/api/file.ts +++ b/fund-admin/src/api/file.ts @@ -1,11 +1,11 @@ import { request } from './request' // 文件上传 -export function uploadFile(file: File, businessType?: string, businessId?: number, description?: string) { +export function uploadFile(file: File, businessType?: string, businessId?: string, description?: string) { const formData = new FormData() formData.append('file', file) if (businessType) formData.append('businessType', businessType) - if (businessId) formData.append('businessId', String(businessId)) + if (businessId) formData.append('businessId', businessId) if (description) formData.append('description', description) return request.post('/file/upload', formData, { @@ -16,26 +16,26 @@ 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?: string; fileType?: string }) { return request.get('/file/page', { params }) } // 根据业务查询文件 -export function getFilesByBusiness(businessType: string, businessId: number) { +export function getFilesByBusiness(businessType: string, businessId: string) { return request.get('/file/list', { params: { businessType, businessId } }) } // 获取文件详情 -export function getFileById(id: number) { +export function getFileById(id: string) { return request.get(`/file/${id}`) } // 删除文件 -export function deleteFile(id: number) { +export function deleteFile(id: string) { return request.delete(`/file/${id}`) } // 获取文件下载URL export function getFileDownloadUrl(filePath: string) { - return `/file/download/${filePath}` + return `/fund/file/download/${filePath}` } diff --git a/fund-admin/src/api/project.ts b/fund-admin/src/api/project.ts index f1f2d2f..365b350 100644 --- a/fund-admin/src/api/project.ts +++ b/fund-admin/src/api/project.ts @@ -4,7 +4,7 @@ export function getProjectList(params: { pageNum: number; pageSize: number; proj return request.get('/project/page', { params }) } -export function getProjectById(id: number) { +export function getProjectById(id: string) { return request.get(`/project/${id}`) } @@ -12,11 +12,11 @@ export function createProject(data: any) { return request.post('/project', data) } -export function updateProject(id: number, data: any) { +export function updateProject(id: string, data: any) { return request.put(`/project/${id}`, data) } -export function deleteProject(id: number) { +export function deleteProject(id: string) { return request.delete(`/project/${id}`) } @@ -25,7 +25,7 @@ export function getRequirementList(params: { pageNum: number; pageSize: number; return request.get('/requirement/page', { params }) } -export function getRequirementById(id: number) { +export function getRequirementById(id: string) { return request.get(`/requirement/${id}`) } @@ -33,10 +33,10 @@ export function createRequirement(data: any) { return request.post('/requirement', data) } -export function updateRequirement(id: number, data: any) { +export function updateRequirement(id: string, data: any) { return request.put(`/requirement/${id}`, data) } -export function deleteRequirement(id: number) { +export function deleteRequirement(id: string) { return request.delete(`/requirement/${id}`) } diff --git a/fund-admin/src/views/customer/contact.vue b/fund-admin/src/views/customer/contact.vue index 1e6d90f..701964c 100644 --- a/fund-admin/src/views/customer/contact.vue +++ b/fund-admin/src/views/customer/contact.vue @@ -70,22 +70,18 @@ - - + + - - - - - + - - + + @@ -126,15 +122,15 @@ const dialogTitle = ref('新增联系人') const formRef = ref() const form = reactive({ - contactId: null as number | null, + id: null as string | null, customerId: customerId.value, contactName: '', position: '', phone: '', email: '', - wechat: '', - isPrimary: false, - remarks: '' + isPrimary: 0, + status: 1, + remark: '' }) const rules = reactive({ @@ -210,8 +206,8 @@ const handleSubmit = async () => { submitLoading.value = true try { - if (form.contactId) { - await updateContact(form.contactId, form) + if (form.id) { + await updateContact(form.id, form) ElMessage.success('更新成功') } else { await createContact(form) @@ -228,15 +224,15 @@ const handleSubmit = async () => { } const resetForm = () => { - form.contactId = null + form.id = null form.customerId = customerId.value form.contactName = '' form.position = '' form.phone = '' form.email = '' - form.wechat = '' - form.isPrimary = false - form.remarks = '' + form.isPrimary = 0 + form.status = 1 + form.remark = '' formRef.value?.clearValidate() } diff --git a/fund-admin/src/views/expense/index.vue b/fund-admin/src/views/expense/index.vue index c00237d..fd74a39 100644 --- a/fund-admin/src/views/expense/index.vue +++ b/fund-admin/src/views/expense/index.vue @@ -6,12 +6,12 @@ - + @@ -44,7 +44,7 @@ - + @@ -57,20 +57,20 @@ - +