diff --git a/.claude/settings.local.json b/.claude/settings.local.json index d0e7724..3269b3e 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -115,7 +115,5 @@ "mcp__chrome-devtools-mcp__take_screenshot" ] }, - "enabledMcpjsonServers": [ - "mysql" - ] + "enabledMcpjsonServers": ["mysql"] } diff --git a/ruoyi-ui/src/api/ccdiProjectUpload.js b/ruoyi-ui/src/api/ccdiProjectUpload.js new file mode 100644 index 0000000..360268a --- /dev/null +++ b/ruoyi-ui/src/api/ccdiProjectUpload.js @@ -0,0 +1,81 @@ +import request from '@/utils/request' + +// 获取项目上传数据状态 +export function getUploadStatus(projectId) { + return request({ + url: '/ccdi/project/' + projectId + '/upload-status', + method: 'get' + }) +} + +// 上传文件 +export function uploadFile(projectId, uploadType, file) { + const formData = new FormData() + formData.append('file', file) + formData.append('uploadType', uploadType) + return request({ + url: '/ccdi/project/' + projectId + '/upload', + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 删除文件 +export function deleteFile(projectId, uploadType) { + return request({ + url: '/ccdi/project/' + projectId + '/file/' + uploadType, + method: 'delete' + }) +} + +// 获取名单库选项 +export function getNameListOptions() { + return request({ + url: '/ccdi/project/name-list/options', + method: 'get' + }) +} + +// 更新名单库选择 +export function updateNameListSelection(projectId, data) { + return request({ + url: '/ccdi/project/' + projectId + '/name-lists', + method: 'put', + data: data + }) +} + +// 执行数据质量检查 +export function executeQualityCheck(projectId) { + return request({ + url: '/ccdi/project/' + projectId + '/quality-check', + method: 'post' + }) +} + +// 拉取本行信息 +export function pullBankInfo(projectId) { + return request({ + url: '/ccdi/project/' + projectId + '/pull-bank-info', + method: 'post' + }) +} + +// 生成报告 +export function generateReport(projectId) { + return request({ + url: '/ccdi/project/' + projectId + '/generate-report', + method: 'post' + }) +} + +// 查询导入状态 +export function getImportStatus(taskId) { + return request({ + url: '/ccdi/project/upload-status/' + taskId, + method: 'get' + }) +} diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index d524282..4c0d278 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -70,6 +70,13 @@ export const constantRoutes = [ component: () => import('@/views/ccdiProject/index'), name: 'CcdiProject', meta: { title: '初核项目管理', icon: 'dashboard', affix: true } + }, + { + path: 'ccdiProject/detail/:projectId', + component: () => import('@/views/ccdiProject/detail'), + name: 'ProjectDetail', + hidden: true, + meta: { title: '项目详情', noCache: true } } ] }, diff --git a/ruoyi-ui/src/views/ccdiProject/components/detail/UploadData.vue b/ruoyi-ui/src/views/ccdiProject/components/detail/UploadData.vue new file mode 100644 index 0000000..0179ab6 --- /dev/null +++ b/ruoyi-ui/src/views/ccdiProject/components/detail/UploadData.vue @@ -0,0 +1,947 @@ + + + + + + + {{ currentMenuTitle }} + + + 生成报告 + + + 拉取本行信息 + + + + + + + + + + + + {{ card.title }} + {{ card.desc }} + + {{ card.btnText }} + + + + + + + + + + + + + 将文件拖到此处,或点击上传 + + 支持 {{ uploadFileTypes }} 格式文件 + + + + 取消 + 确定 + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + + + + + + + diff --git a/ruoyi-ui/src/views/ccdiProject/detail.vue b/ruoyi-ui/src/views/ccdiProject/detail.vue new file mode 100644 index 0000000..d07205a --- /dev/null +++ b/ruoyi-ui/src/views/ccdiProject/detail.vue @@ -0,0 +1,497 @@ + + + + + + 返回 + + + + {{ projectInfo.projectName }} + + + {{ getStatusLabel(projectInfo.projectStatus) }} + + + + + 最后更新时间:{{ formatUpdateTime(projectInfo.updateTime) }} + + + + + + + 上传数据 + + + 参数配置 + + + + 初核结果 + + + 结果总览 + 专项排查 + 流水明细查询 + + + + + + + + + + + + + + diff --git a/ruoyi-ui/src/views/ccdiProject/index.vue b/ruoyi-ui/src/views/ccdiProject/index.vue index 09d3d3a..61e90bf 100644 --- a/ruoyi-ui/src/views/ccdiProject/index.vue +++ b/ruoyi-ui/src/views/ccdiProject/index.vue @@ -70,14 +70,14 @@ import ImportHistoryDialog from './components/ImportHistoryDialog' import ArchiveConfirmDialog from './components/ArchiveConfirmDialog' export default { - name: 'DpcProject', + name: "DpcProject", components: { SearchBar, ProjectTable, QuickEntry, AddProjectDialog, ImportHistoryDialog, - ArchiveConfirmDialog + ArchiveConfirmDialog, }, data() { return { @@ -105,17 +105,17 @@ export default { }, // 新增/编辑弹窗 addDialogVisible: false, - addDialogTitle: '新建项目', + addDialogTitle: "新建项目", projectForm: {}, // 导入历史项目弹窗 importDialogVisible: false, // 归档确认弹窗 archiveDialogVisible: false, - currentArchiveProject: null - } + currentArchiveProject: null, + }; }, created() { - this.getList() + this.getList(); }, methods: { /** 查询项目列表 */ @@ -150,10 +150,10 @@ export default { /** 搜索按钮操作 */ handleQuery(queryParams) { if (queryParams) { - this.queryParams = { ...this.queryParams, ...queryParams } + this.queryParams = { ...this.queryParams, ...queryParams }; } - this.queryParams.pageNum = 1 - this.getList() + this.queryParams.pageNum = 1; + this.getList(); }, /** 分页事件处理 */ handlePagination(pagination) { @@ -165,26 +165,26 @@ export default { }, /** 新增按钮操作 */ handleAdd() { - this.projectForm = this.getEmptyForm() - this.addDialogTitle = '新建项目' - this.addDialogVisible = true + this.projectForm = this.getEmptyForm(); + this.addDialogTitle = "新建项目"; + this.addDialogVisible = true; }, /** 获取空表单 */ getEmptyForm() { return { projectId: null, - projectName: '', - projectDesc: '', - startDate: '', - endDate: '', + projectName: "", + projectDesc: "", + startDate: "", + endDate: "", targetCount: 0, - targetPersons: [] - } + targetPersons: [], + }; }, /** 关闭新增弹窗 */ handleCloseAddDialog() { - this.addDialogVisible = false - this.projectForm = {} + this.addDialogVisible = false; + this.projectForm = {}; }, /** 提交项目表单 */ handleSubmitProject(data) { @@ -194,66 +194,68 @@ export default { }, /** 导入历史项目 */ handleImport() { - this.importDialogVisible = true + this.importDialogVisible = true; }, /** 关闭导入弹窗 */ handleCloseImportDialog() { - this.importDialogVisible = false + this.importDialogVisible = false; }, /** 提交导入 */ handleSubmitImport(data) { - console.log('导入历史项目:', data) - this.$modal.msgSuccess('项目导入成功') - this.importDialogVisible = false - this.getList() + console.log("导入历史项目:", data); + this.$modal.msgSuccess("项目导入成功"); + this.importDialogVisible = false; + this.getList(); }, /** 创建季度初核 */ handleCreateQuarterly() { - this.projectForm = this.getEmptyForm() - this.addDialogTitle = '创建季度初核项目' - this.addDialogVisible = true + this.projectForm = this.getEmptyForm(); + this.addDialogTitle = "创建季度初核项目"; + this.addDialogVisible = true; }, /** 创建新员工排查 */ handleCreateEmployee() { - this.projectForm = this.getEmptyForm() - this.addDialogTitle = '创建新员工排查项目' - this.addDialogVisible = true + this.projectForm = this.getEmptyForm(); + this.addDialogTitle = "创建新员工排查项目"; + this.addDialogVisible = true; }, /** 创建高风险专项 */ handleCreateHighRisk() { - this.projectForm = this.getEmptyForm() - this.addDialogTitle = '创建高风险专项项目' - this.addDialogVisible = true + this.projectForm = this.getEmptyForm(); + this.addDialogTitle = "创建高风险专项项目"; + this.addDialogVisible = true; }, /** 进入项目 */ handleEnter(row) { - console.log('进入项目:', row) - this.$modal.msgSuccess('进入项目: ' + row.projectName) + this.$router.push({ + path: `ccdiProject/detail/${row.projectId}`, + }); + // this.$modal.msgSuccess("进入项目: " + row.projectName); }, /** 查看结果 */ handleViewResult(row) { - console.log('查看结果:', row) - this.$modal.msgInfo('查看项目结果: ' + row.projectName) + console.log("查看结果:", row); + this.$modal.msgInfo("查看项目结果: " + row.projectName); }, /** 重新分析 */ handleReAnalyze(row) { - console.log('重新分析:', row) - this.$modal.msgSuccess('正在重新分析项目: ' + row.projectName) + console.log("重新分析:", row); + this.$modal.msgSuccess("正在重新分析项目: " + row.projectName); }, /** 归档项目 */ handleArchive(row) { - this.currentArchiveProject = row - this.archiveDialogVisible = true + this.currentArchiveProject = row; + this.archiveDialogVisible = true; }, /** 确认归档 */ handleConfirmArchive(data) { - console.log('确认归档:', data) - this.$modal.msgSuccess('项目已归档') - this.archiveDialogVisible = false - this.getList() - } - } -} + console.log("确认归档:", data); + this.$modal.msgSuccess("项目已归档"); + this.archiveDialogVisible = false; + this.getList(); + }, + }, +};
+ 最后更新时间:{{ formatUpdateTime(projectInfo.updateTime) }} +