diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 4a45d57..0230985 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -30,7 +30,12 @@ "Skill(superpowers:using-superpowers)", "Bash(tree:*)", "Skill(docx)", - "Bash(bash:*)" + "Bash(bash:*)", + "mcp__zai-mcp-server__analyze_image", + "Skill(frontend-design:frontend-design)", + "mcp__web-reader__webReader", + "mcp__fetch__imageFetch", + "Skill(frontend-design)" ] }, "enabledMcpjsonServers": [ diff --git a/doc/other/ScreenShot_2026-01-29_155814_876.png b/doc/other/ScreenShot_2026-01-29_155814_876.png deleted file mode 100644 index 703505e..0000000 Binary files a/doc/other/ScreenShot_2026-01-29_155814_876.png and /dev/null differ diff --git a/doc/other/ScreenShot_2026-01-30_091448_399.png b/doc/other/ScreenShot_2026-01-30_091448_399.png new file mode 100644 index 0000000..b1aa85f Binary files /dev/null and b/doc/other/ScreenShot_2026-01-30_091448_399.png differ diff --git a/ruoyi-ui/src/api/dpcProject.js b/ruoyi-ui/src/api/dpcProject.js new file mode 100644 index 0000000..5b5e3c2 --- /dev/null +++ b/ruoyi-ui/src/api/dpcProject.js @@ -0,0 +1,157 @@ +import request from '@/utils/request' + +// 查询初核项目列表 +export function listProject(query) { + return request({ + url: '/dpc/project/list', + method: 'get', + params: query + }) +} + +// 查询初核项目详细 +export function getProject(projectId) { + return request({ + url: '/dpc/project/' + projectId, + method: 'get' + }) +} + +// 新增初核项目 +export function addProject(data) { + return request({ + url: '/dpc/project', + method: 'post', + data: data + }) +} + +// 修改初核项目 +export function updateProject(data) { + return request({ + url: '/dpc/project', + method: 'put', + data: data + }) +} + +// 删除初核项目 +export function delProject(projectIds) { + return request({ + url: '/dpc/project/' + projectIds, + method: 'delete' + }) +} + +// 导出初核项目 +export function exportProject(query) { + return request({ + url: '/dpc/project/export', + method: 'get', + params: query + }) +} + +// 刷新项目预警人数 +export function refreshWarningCount(projectId) { + return request({ + url: '/dpc/project/' + projectId + '/warning', + method: 'post' + }) +} + +// 归档项目 +export function archiveProject(projectId) { + return request({ + url: '/dpc/project/' + projectId + '/archive', + method: 'post' + }) +} + +// 获取历史项目列表(用于导入) +export function listHistoryProjects(query) { + return request({ + url: '/dpc/project/history', + method: 'get', + params: query + }) +} + +// 从历史项目导入 +export function importFromHistory(data) { + return request({ + url: '/dpc/project/import', + method: 'post', + data: data + }) +} + +// Mock数据:获取项目列表 +export function getMockProjectList() { + return Promise.resolve({ + code: 200, + total: 3, + rows: [ + { + projectId: 1, + projectName: '2024年Q1初核', + projectDesc: '2024年第一季度纪检初核排查工作', + createTime: '2024-01-01', + projectStatus: '0', + targetCount: 500, + warningCount: 15, + startDate: '2024-01-01', + endDate: '2024-03-31' + }, + { + projectId: 2, + projectName: '2023年Q4初核', + projectDesc: '2023年第四季度纪检初核排查工作', + createTime: '2023-10-01', + projectStatus: '1', + targetCount: 480, + warningCount: 23, + startDate: '2023-10-01', + endDate: '2023-12-31' + }, + { + projectId: 3, + projectName: '2023年Q3初核', + projectDesc: '2023年第三季度纪检初核排查工作', + createTime: '2023-07-01', + projectStatus: '2', + targetCount: 450, + warningCount: 18, + startDate: '2023-07-01', + endDate: '2023-09-30' + } + ] + }) +} + +// Mock数据:获取历史项目列表 +export function getMockHistoryProjects() { + return Promise.resolve({ + code: 200, + data: [ + { + projectId: 3, + projectName: '2023年Q3初核', + projectDesc: '2023年第三季度纪检初核排查工作', + createTime: '2023-07-01', + projectStatus: '2', + targetCount: 450, + warningCount: 18 + }, + { + projectId: 4, + projectName: '2023年Q2初核', + projectDesc: '2023年第二季度纪检初核排查工作', + createTime: '2023-04-01', + projectStatus: '2', + targetCount: 420, + warningCount: 12 + } + ] + }) +} diff --git a/ruoyi-ui/src/components/Breadcrumb/index.vue b/ruoyi-ui/src/components/Breadcrumb/index.vue index 84f4831..e6d539c 100644 --- a/ruoyi-ui/src/components/Breadcrumb/index.vue +++ b/ruoyi-ui/src/components/Breadcrumb/index.vue @@ -45,10 +45,6 @@ export default { } else { matched = router.matched.filter(item => item.meta && item.meta.title) } - // 判断是否为首页 - if (!this.isDashboard(matched[0])) { - matched = [{ path: "/index", meta: { title: "首页" } }].concat(matched) - } this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false) }, findPathNum(str, char = "/") { diff --git a/ruoyi-ui/src/layout/components/TagsView/index.vue b/ruoyi-ui/src/layout/components/TagsView/index.vue index f0b0837..b0e4cc0 100644 --- a/ruoyi-ui/src/layout/components/TagsView/index.vue +++ b/ruoyi-ui/src/layout/components/TagsView/index.vue @@ -161,6 +161,10 @@ export default { } }, closeSelectedTag(view) { + // 如果只有一个标签且该标签不是固定标签,则不允许关闭 + if (this.visitedViews.length === 1 && !this.isAffix(view)) { + return + } this.$tab.closePage(view).then(({ visitedViews }) => { if (this.isActive(view)) { this.toLastView(visitedViews, view) diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index bbfd237..789cd1f 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -1,11 +1,10 @@ import Vue from 'vue' import Router from 'vue-router' - -Vue.use(Router) - /* Layout */ import Layout from '@/layout' +Vue.use(Router) + /** * Note: 路由配置项 * @@ -64,13 +63,13 @@ export const constantRoutes = [ { path: '', component: Layout, - redirect: 'index', + redirect: 'dpcProject', children: [ { - path: 'index', - component: () => import('@/views/index'), - name: 'Index', - meta: { title: '首页', icon: 'dashboard', affix: true } + path: 'dpcProject', + component: () => import('@/views/dpcProject/index'), + name: 'DpcProject', + meta: { title: '初核项目管理', icon: 'dashboard', affix: true } } ] }, diff --git a/ruoyi-ui/src/views/dpcIntermediary/test_edit_dialog_fix.html b/ruoyi-ui/src/views/dpcIntermediary/test_edit_dialog_fix.html deleted file mode 100644 index 84979e8..0000000 --- a/ruoyi-ui/src/views/dpcIntermediary/test_edit_dialog_fix.html +++ /dev/null @@ -1,205 +0,0 @@ - - -
- - -在中介黑名单列表中点击修改按钮时,该行的信息没有正确反显到输入框内。
- -visible 从 false 变为 true 时,触发 initDialogState(),但此时 form 数据可能还没有完全传递到子组件form.intermediaryType 的变化,导致数据加载后无法更新 selectedTypeinitDialogState() 中直接使用 this.form.intermediaryType 而没有检查是否存在form.intermediaryType 的 watch 监听initDialogState() 中添加存在性检查selectedType文件: ruoyi-ui/src/views/dpcIntermediary/components/EditDialog.vue
-文件: ruoyi-ui/src/views/dpcIntermediary/components/EditDialog.vue
-步骤:
-预期结果: ✅ 个人信息表单正确显示,所有字段数据正确反显
-步骤:
-预期结果: ✅ 机构信息表单正确显示,所有字段数据正确反显
-步骤:
-预期结果: ✅ 类型选择卡片正确显示,选择后表单正常显示
-管理纪检初核排查项目,跟踪预警信息
+