From 9c00696bafee93d2ef0a97f54dc141b5f5303be1 Mon Sep 17 00:00:00 2001 From: zhangjf Date: Sun, 15 Feb 2026 18:06:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E9=9C=80=E6=B1=82?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97=EF=BC=88?= =?UTF-8?q?=E5=85=A8=E6=A0=88=E5=BC=80=E5=8F=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端: - 创建 Requirement 实体类(映射 requirement 表) - 创建 RequirementMapper 接口(含自定义查询) - 创建 RequirementService 业务逻辑层 - 分页查询(支持多条件筛选) - 新增/更新/删除需求 - 更新需求状态和进度 - 自动设置默认租户ID - 创建 RequirementController 控制器 - RESTful API 设计 - 状态管理和进度跟踪 前端: - 创建 requirement.js API 文件(完整的 CRUD 接口) - 创建 requirement.vue 管理页面 - 多条件搜索(需求名称、项目、客户、状态) - 表格展示(含状态标签、优先级标签、进度条) - 新增/编辑表单(支持工时、日期、应收款管理) - 状态更新对话框 - 进度更新对话框(滑块组件) - 项目和客户下拉选择 - 添加路由配置(/project/requirement) --- fund-admin/src/api/requirement.js | 76 +++ fund-admin/src/router/index.js | 6 + fund-admin/src/views/project/requirement.vue | 641 +++++++++++++++++++ 3 files changed, 723 insertions(+) create mode 100644 fund-admin/src/api/requirement.js create mode 100644 fund-admin/src/views/project/requirement.vue diff --git a/fund-admin/src/api/requirement.js b/fund-admin/src/api/requirement.js new file mode 100644 index 0000000..b83f3a3 --- /dev/null +++ b/fund-admin/src/api/requirement.js @@ -0,0 +1,76 @@ +import request from '../utils/request' + +/** + * 获取需求工单列表 + */ +export const getRequirementList = (params) => { + return request({ + url: '/proj/api/v1/requirement/list', + method: 'get', + params + }) +} + +/** + * 获取需求工单详情 + */ +export const getRequirementById = (requirementId) => { + return request({ + url: `/proj/api/v1/requirement/${requirementId}`, + method: 'get' + }) +} + +/** + * 创建需求工单 + */ +export const createRequirement = (data) => { + return request({ + url: '/proj/api/v1/requirement', + method: 'post', + data + }) +} + +/** + * 更新需求工单 + */ +export const updateRequirement = (requirementId, data) => { + return request({ + url: `/proj/api/v1/requirement/${requirementId}`, + method: 'put', + data + }) +} + +/** + * 删除需求工单 + */ +export const deleteRequirement = (requirementId) => { + return request({ + url: `/proj/api/v1/requirement/${requirementId}`, + method: 'delete' + }) +} + +/** + * 更新需求状态 + */ +export const updateRequirementStatus = (requirementId, status) => { + return request({ + url: `/proj/api/v1/requirement/${requirementId}/status`, + method: 'put', + params: { status } + }) +} + +/** + * 更新需求进度 + */ +export const updateRequirementProgress = (requirementId, progress) => { + return request({ + url: `/proj/api/v1/requirement/${requirementId}/progress`, + method: 'put', + params: { progress } + }) +} diff --git a/fund-admin/src/router/index.js b/fund-admin/src/router/index.js index c71d81b..ef07f0d 100644 --- a/fund-admin/src/router/index.js +++ b/fund-admin/src/router/index.js @@ -86,6 +86,12 @@ const routes = [ name: 'Contract', component: () => import('../views/project/contract.vue'), meta: { title: '合同管理' } + }, + { + path: 'requirement', + name: 'Requirement', + component: () => import('../views/project/requirement.vue'), + meta: { title: '需求工单' } } ] } diff --git a/fund-admin/src/views/project/requirement.vue b/fund-admin/src/views/project/requirement.vue new file mode 100644 index 0000000..5098841 --- /dev/null +++ b/fund-admin/src/views/project/requirement.vue @@ -0,0 +1,641 @@ + + + + +