diff --git a/src/api/calibration/caseManagement/index.ts b/src/api/calibration/caseManagement/index.ts new file mode 100644 index 0000000..620ff19 --- /dev/null +++ b/src/api/calibration/caseManagement/index.ts @@ -0,0 +1,123 @@ +import request from '@/utils/request' +const AUTH_BASE_URL = '/api2' + +/* + * 案件管理 + * */ + +// 新增案件 +export const BusinessCasemanagement = (data: any) => { + const formData = new FormData() + formData.append('user_id', data.user_id) + formData.append('times', data.times) + formData.append('AgencyContract', data.AgencyContract) + formData.append('Contractreturn', data.Contractreturn) + formData.append('Closingapplication', data.Closingapplication) + formData.append('ChangeRequest', data.ChangeRequest) + formData.append('paymentcollection', data.paymentcollection) + formData.append('personincharge', data.personincharge) + return request({ + url: `${AUTH_BASE_URL}/business/casemanagement`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 案件分页查询 +export const BusinessCasemanagementdetail = (data: any) => { + const formData = new FormData() + formData.append('page', data.pageNum) + formData.append('per_page', data.pageSize) + if (data.times && data.times.length) { + formData.append('times', data.times[0]) + formData.append('end_time', data.times[1]) + } + formData.append('type', data.type) + return request({ + url: `${AUTH_BASE_URL}/business/casemanagementdetail`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 案件已收款(累加) +export const BusinessAccumulate = (data: any) => { + const formData = new FormData() + formData.append('user_id', data.user_id) + formData.append('paymentcollection', data.paymentcollection) + return request({ + url: `${AUTH_BASE_URL}/business/accumulate`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 上传发票 +export const BusinessUploadinvoice = (data: any) => { + const formData = new FormData() + formData.append('user_id', data.user_id) + formData.append('amount', data.amount) + formData.append('file', data.file) + return request({ + url: `${AUTH_BASE_URL}/business/uploadinvoice`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 发票详情 +export const BusinessInvoicedetail = (id: string) => { + const formData = new FormData() + formData.append('id', id) + return request({ + url: `${AUTH_BASE_URL}/business/invoicedetail`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 案件日志 +export const BusinessLog = (data: any) => { + const formData = new FormData() + formData.append('content', data.content) + formData.append('file', data.file) + formData.append('user_id', data.user_id) + return request({ + url: `${AUTH_BASE_URL}/business/log`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 案件日志分页查询 +export const BusinessLogdetail = (data: any) => { + const formData = new FormData() + formData.append('page', data.pageNum) + formData.append('per_page', data.pageSize) + return request({ + url: `${AUTH_BASE_URL}/business/logdetail`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} diff --git a/src/api/calibration/preRegistration/index.ts b/src/api/calibration/preRegistration/index.ts index 99889c7..5713a2b 100644 --- a/src/api/calibration/preRegistration/index.ts +++ b/src/api/calibration/preRegistration/index.ts @@ -52,3 +52,11 @@ export const BusinessRegistrationlist = () => { method: 'post' }) } + +// 预立案关联立案列表接口 +export const BusinessPreFilingLinkedCases = () => { + return request({ + url: `${AUTH_BASE_URL}/business/preFilingLinkedCases`, + method: 'post' + }) +} diff --git a/src/router/index.ts b/src/router/index.ts index 5b67828..942237d 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -206,9 +206,9 @@ export const constantRoutes: RouteRecordRaw[] = [ }, children: [ { - path: 'user', - name: 'CaseUser', - component: () => import('@/views/case/index.vue'), + path: 'caseManagement', + name: 'CaseManagement', + component: () => import('@/views/calibration/caseManagement/index.vue'), meta: { title: '案件管理' } diff --git a/src/utils/auxiliaryFunction/index.ts b/src/utils/auxiliaryFunction/index.ts index ac219a8..777cfb2 100644 --- a/src/utils/auxiliaryFunction/index.ts +++ b/src/utils/auxiliaryFunction/index.ts @@ -70,18 +70,32 @@ export function convertFilePathsToObject(filePaths: string | string[]): Array<{ } } + // 自动补全协议头 + let fullPath = path + if (!path.startsWith('http://') && !path.startsWith('https://')) { + fullPath = `http://${path}` + } + // 分割域名和文件部分 - const parts = path.split('/') - const domain = parts[0] || '' - const filePart = parts.slice(1).join('/') || '' + const urlObj = new URL(fullPath) + const domain = urlObj.origin + const filePart = urlObj.pathname.substring(1) // 移除开头的 / // 分割文件名和UUID const lastUnderscoreIndex = filePart.lastIndexOf('_') - const name = lastUnderscoreIndex > 0 ? filePart.substring(0, lastUnderscoreIndex) : filePart + let name = lastUnderscoreIndex > 0 ? filePart.substring(0, lastUnderscoreIndex) : filePart const uuid = lastUnderscoreIndex > 0 ? filePart.substring(lastUnderscoreIndex + 1) : '' + // 解码 URL 编码的文件名 + try { + name = decodeURIComponent(name) + } catch (e) { + // 如果解码失败,保持原始文件名 + console.warn('文件名解码失败:', name) + } + return { - url: path, + url: fullPath, domain, name, uuid diff --git a/src/utils/functionDialogBox/index.ts b/src/utils/functionDialogBox/index.ts index 57b19a5..1bb9e90 100644 --- a/src/utils/functionDialogBox/index.ts +++ b/src/utils/functionDialogBox/index.ts @@ -2,6 +2,8 @@ import { ElButton, ElDialog } from 'element-plus' import { Component, DefineComponent } from 'vue' import { h, createApp } from 'vue' import { throttle } from '@/utils/auxiliaryFunction' +import ElementPlus from 'element-plus' +import zhCn from 'element-plus/es/locale/lang/zh-cn' // 定义模态框属性接口 interface ModalProps { @@ -9,6 +11,7 @@ interface ModalProps { width?: string | number ok?: (result: any) => void cancel?: () => void + footerVisible?: boolean [key: string]: any // 允许其他 Element Plus Dialog 属性 } @@ -39,24 +42,31 @@ export const functionDialogBox = ( }, { default: () => h(component || h('div'), { ref: formRef, ...props }), - footer: () => [ - h( - ElButton, - { - type: 'primary', - loading: isLoading.value, - onClick: confirm - }, - () => '确定' - ), - h( - ElButton, - { - onClick: cancel - }, - () => '取消' - ) - ] + footer: () => { + // 如果 footerVisible 为 false 或 undefined,默认显示 footer + if (modalProps.footerVisible !== false) { + return [ + h( + ElButton, + { + type: 'primary', + loading: isLoading.value, + onClick: confirm + }, + () => '确定' + ), + h( + ElButton, + { + onClick: cancel + }, + () => '取消' + ) + ] + } + // 返回 null 或不返回 footer slot + return null + } } ) @@ -64,6 +74,9 @@ export const functionDialogBox = ( const div = document.createElement('div') document.body.appendChild(div) + app.use(ElementPlus, { + locale: zhCn + }) app.mount(div) function unmount() { diff --git a/src/views/calibration/businessSystem/conflictOfInterestSearch/index.vue b/src/views/calibration/businessSystem/conflictOfInterestSearch/index.vue index 9c49c50..942af2f 100644 --- a/src/views/calibration/businessSystem/conflictOfInterestSearch/index.vue +++ b/src/views/calibration/businessSystem/conflictOfInterestSearch/index.vue @@ -41,7 +41,38 @@ row-key="id" @selection-change="handleSelectionChange" > - + + + {{ + JSON.parse(row.client_username) + .map((item: any) => item.name) + .join(',') + }} + + + {{ + JSON.parse(row.client_username) + .map((item: any) => item.idNumber) + .join(',') + }} + + + + + {{ + JSON.parse(row.party_username) + .map((item: any) => item.name) + .join(',') + }} + + + {{ + JSON.parse(row.party_username) + .map((item: any) => item.idNumber) + .join(',') + }} + + @@ -96,7 +127,38 @@ row-key="id" @selection-change="handleSelectionChange" > - + + + {{ + JSON.parse(row.client_username) + .map((item: any) => item.name) + .join(',') + }} + + + {{ + JSON.parse(row.client_username) + .map((item: any) => item.idNumber) + .join(',') + }} + + + + + {{ + JSON.parse(row.party_username) + .map((item: any) => item.name) + .join(',') + }} + + + {{ + JSON.parse(row.party_username) + .map((item: any) => item.idNumber) + .join(',') + }} + + {{ diff --git a/src/views/calibration/caseManagement/components/CaseInvoiceComponent/components/CaseInvoiceForm.vue b/src/views/calibration/caseManagement/components/CaseInvoiceComponent/components/CaseInvoiceForm.vue new file mode 100644 index 0000000..e637eb5 --- /dev/null +++ b/src/views/calibration/caseManagement/components/CaseInvoiceComponent/components/CaseInvoiceForm.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/views/calibration/caseManagement/components/CaseInvoiceComponent/index.vue b/src/views/calibration/caseManagement/components/CaseInvoiceComponent/index.vue new file mode 100644 index 0000000..0ee5d4d --- /dev/null +++ b/src/views/calibration/caseManagement/components/CaseInvoiceComponent/index.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/src/views/calibration/caseManagement/components/CaseLogComponent/components/CaseLogForm.vue b/src/views/calibration/caseManagement/components/CaseLogComponent/components/CaseLogForm.vue new file mode 100644 index 0000000..fcee50d --- /dev/null +++ b/src/views/calibration/caseManagement/components/CaseLogComponent/components/CaseLogForm.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/views/calibration/caseManagement/components/CaseLogComponent/index.vue b/src/views/calibration/caseManagement/components/CaseLogComponent/index.vue new file mode 100644 index 0000000..8aa4027 --- /dev/null +++ b/src/views/calibration/caseManagement/components/CaseLogComponent/index.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/views/calibration/caseManagement/components/CaseManagementForm.vue b/src/views/calibration/caseManagement/components/CaseManagementForm.vue new file mode 100644 index 0000000..f749a80 --- /dev/null +++ b/src/views/calibration/caseManagement/components/CaseManagementForm.vue @@ -0,0 +1,237 @@ + + + + + diff --git a/src/views/calibration/caseManagement/components/CumulativeReceivedPaymentForm.vue b/src/views/calibration/caseManagement/components/CumulativeReceivedPaymentForm.vue new file mode 100644 index 0000000..a846811 --- /dev/null +++ b/src/views/calibration/caseManagement/components/CumulativeReceivedPaymentForm.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/views/calibration/caseManagement/index.vue b/src/views/calibration/caseManagement/index.vue new file mode 100644 index 0000000..21d2db1 --- /dev/null +++ b/src/views/calibration/caseManagement/index.vue @@ -0,0 +1,431 @@ + + +