feat(resource): 新增资源管理模块及相关接口和界面
Some checks failed
Lint Code / Lint Code (push) Failing after 3m1s

- 定义资源实体类型及相关请求参数类型
- 实现资源增删改查及状态、数量更新接口
- 添加资源预算汇总、待审批和即将到位资源查询接口
- 在项目详情页增加资源权限控制相关计算属性
- 实现资源编辑模态框及新增、编辑、保存、删除功能
- 资源列表新增操作列支持资源编辑和删除权限控制
- 在界面中显示资源数量及新增资源按钮
- 移除冗余操作按钮,统一资源操作权限管理
This commit is contained in:
2026-03-31 17:39:21 +08:00
parent 9c777ee429
commit 93ea80a636
3 changed files with 1427 additions and 8 deletions

View File

@@ -0,0 +1,917 @@
{
"openapi": "3.0.1",
"info": {
"title": "默认模块",
"description": "",
"version": "1.0.0"
},
"tags": [],
"paths": {
"/api/v1/resource/list": {
"get": {
"summary": "分页查询资源列表",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "pageNum",
"in": "query",
"description": "",
"required": true,
"example": 1,
"schema": {
"type": "integer"
}
},
{
"name": "pageSize",
"in": "query",
"description": "",
"required": true,
"example": 10,
"schema": {
"type": "integer"
}
},
{
"name": "projectId",
"in": "query",
"description": "",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "resourceType",
"in": "query",
"description": "",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "status",
"in": "query",
"description": "",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "keyword",
"in": "query",
"description": "",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponsePageMapObject"
}
}
}
}
},
"security": []
}
},
"/api/v1/resource/{id}": {
"get": {
"summary": "根据ID查询资源详情",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "id",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseResource"
}
}
}
}
},
"security": []
},
"delete": {
"summary": "删除资源",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "id",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseVoid"
}
}
}
}
},
"security": []
}
},
"/api/v1/resource": {
"post": {
"summary": "新增资源",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Resource",
"description": ""
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseLong"
}
}
}
}
},
"security": []
},
"put": {
"summary": "修改资源",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResourceUpdateRequest",
"description": ""
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseVoid"
}
}
}
}
},
"security": []
}
},
"/api/v1/resource/{id}/status": {
"put": {
"summary": "更新资源状态",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "id",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "status",
"in": "query",
"description": "",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseVoid"
}
}
}
}
},
"security": []
}
},
"/api/v1/resource/{id}/quantity": {
"put": {
"summary": "更新资源数量",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "id",
"in": "path",
"description": "",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "actualQuantity",
"in": "query",
"description": "",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseVoid"
}
}
}
}
},
"security": []
}
},
"/api/v1/resource/stats/budget": {
"get": {
"summary": "查询资源预算汇总",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "projectId",
"in": "query",
"description": "",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseListMapObject"
}
}
}
}
},
"security": []
}
},
"/api/v1/resource/pending-arrival": {
"get": {
"summary": "查询即将到位的资源",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "projectId",
"in": "query",
"description": "",
"required": true,
"schema": {
"type": "integer"
}
},
{
"name": "days",
"in": "query",
"description": "",
"required": true,
"example": 7,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseListResource"
}
}
}
}
},
"security": []
}
},
"/api/v1/resource/pending-approval": {
"get": {
"summary": "查询待审批的资源申请",
"deprecated": false,
"description": "",
"tags": [],
"parameters": [
{
"name": "projectId",
"in": "query",
"description": "",
"required": false,
"schema": {
"type": "integer"
}
},
{
"name": "Authorization",
"in": "header",
"description": "",
"example": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95",
"schema": {
"type": "string",
"default": "Bearer b35c6f5b-bc0b-4652-bef2-eca04a5cdd95"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BaseResponseListMapObject"
}
}
}
}
},
"security": []
}
}
},
"components": {
"schemas": {
"OrderItem": {
"type": "object",
"properties": {
"column": {
"type": "string",
"description": "需要进行排序的字段"
},
"asc": {
"type": "boolean",
"description": "是否正序排列,默认 true",
"default": true
}
}
},
"MapObject": {
"type": "object",
"properties": {
"key": {
"$ref": "#/components/schemas/key"
}
}
},
"PageMapObject": {
"type": "object",
"properties": {
"records": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MapObject"
},
"description": "查询数据列表",
"default": "Collections.emptyList()"
},
"total": {
"type": "integer",
"description": "总数",
"format": "int64",
"default": 0
},
"size": {
"type": "integer",
"description": "每页显示条数,默认 10",
"format": "int64",
"default": 10
},
"current": {
"type": "integer",
"description": "当前页",
"format": "int64",
"default": 1
},
"orders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OrderItem",
"description": "com.baomidou.mybatisplus.core.metadata.OrderItem"
},
"description": "排序字段信息",
"default": "new ArrayList<>()"
},
"optimizeCountSql": {
"type": "boolean",
"description": "自动优化 COUNT SQL",
"default": true
},
"searchCount": {
"type": "boolean",
"description": "是否进行 count 查询",
"default": true
},
"optimizeJoinOfCountSql": {
"type": "boolean",
"description": "{@link #optimizeJoinOfCountSql()}",
"default": true
},
"maxLimit": {
"type": "integer",
"description": "单页分页条数限制",
"format": "int64"
},
"countId": {
"type": "string",
"description": "countId"
},
"pages": {
"type": "integer",
"format": "int64"
}
}
},
"BaseResponsePageMapObject": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": ""
},
"data": {
"$ref": "#/components/schemas/PageMapObject",
"description": ""
},
"message": {
"type": "string",
"description": ""
}
}
},
"Resource": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "",
"format": "int64"
},
"resourceCode": {
"type": "string",
"description": "资源编号"
},
"projectId": {
"type": "integer",
"description": "项目ID",
"format": "int64"
},
"resourceType": {
"type": "string",
"description": "资源类型: human-人力, material-物料, equipment-设备, software-软件, finance-资金, other-其他"
},
"resourceName": {
"type": "string",
"description": "资源名称"
},
"description": {
"type": "string",
"description": "资源描述"
},
"specification": {
"type": "string",
"description": "规格型号"
},
"unit": {
"type": "string",
"description": "单位"
},
"planQuantity": {
"type": "number",
"description": "计划数量"
},
"actualQuantity": {
"type": "number",
"description": "实际数量"
},
"unitPrice": {
"type": "number",
"description": "单价"
},
"currency": {
"type": "string",
"description": "币种"
},
"supplier": {
"type": "string",
"description": "供应商/来源"
},
"status": {
"type": "string",
"description": "状态: planned-计划中, requested-已申请, approved-已批准, procuring-采购中, arrived-已到货, in_use-使用中, completed-已完成"
},
"planArriveDate": {
"type": "string",
"description": "计划到位日期"
},
"actualArriveDate": {
"type": "string",
"description": "实际到位日期"
},
"responsibleId": {
"type": "integer",
"description": "负责人ID",
"format": "int64"
},
"location": {
"type": "string",
"description": "存放位置"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "标签"
},
"extraData": {
"type": "object",
"properties": {},
"description": "扩展数据"
},
"createBy": {
"type": "integer",
"description": "创建人",
"format": "int64"
},
"createTime": {
"type": "string",
"description": "创建时间"
},
"updateBy": {
"type": "integer",
"description": "更新人",
"format": "int64"
},
"updateTime": {
"type": "string",
"description": "更新时间"
},
"deleted": {
"type": "integer",
"description": "删除标记"
}
}
},
"key": {
"type": "object",
"properties": {}
},
"BaseResponseLong": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": ""
},
"data": {
"type": "integer",
"description": "",
"format": "int64"
},
"message": {
"type": "string",
"description": ""
}
}
},
"BaseResponseResource": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": ""
},
"data": {
"$ref": "#/components/schemas/Resource",
"description": ""
},
"message": {
"type": "string",
"description": ""
}
}
},
"BaseResponseVoid": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": ""
},
"data": {
"description": "",
"type": "null"
},
"message": {
"type": "string",
"description": ""
}
}
},
"ResourceUpdateRequest": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "资源ID必填",
"format": "int64"
},
"resourceType": {
"type": "string",
"description": "资源类型: human-人力, material-物料, equipment-设备, software-软件, finance-资金, other-其他"
},
"resourceName": {
"type": "string",
"description": "资源名称"
},
"description": {
"type": "string",
"description": "资源描述"
},
"specification": {
"type": "string",
"description": "规格型号"
},
"unit": {
"type": "string",
"description": "单位"
},
"planQuantity": {
"type": "number",
"description": "计划数量"
},
"actualQuantity": {
"type": "number",
"description": "实际数量"
},
"unitPrice": {
"type": "number",
"description": "单价"
},
"currency": {
"type": "string",
"description": "币种"
},
"supplier": {
"type": "string",
"description": "供应商/来源"
},
"status": {
"type": "string",
"description": "状态: planned-计划中, requested-已申请, approved-已批准, procuring-采购中, arrived-已到货, in_use-使用中, completed-已完成"
},
"planArriveDate": {
"type": "string",
"description": "计划到位日期"
},
"actualArriveDate": {
"type": "string",
"description": "实际到位日期"
},
"responsibleId": {
"type": "integer",
"description": "负责人ID直接传递ID时使用",
"format": "int64"
},
"responsibleName": {
"type": "string",
"description": "负责人姓名根据姓名自动匹配用户ID"
},
"location": {
"type": "string",
"description": "存放位置"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "标签"
},
"extraData": {
"type": "object",
"properties": {},
"description": "扩展数据"
}
}
},
"BaseResponseListMapObject": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": ""
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MapObject"
},
"description": ""
},
"message": {
"type": "string",
"description": ""
}
}
},
"BaseResponseListResource": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": ""
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Resource",
"description": "资源实体类\n对应数据库表: resource"
},
"description": ""
},
"message": {
"type": "string",
"description": ""
}
}
}
},
"responses": {},
"securitySchemes": {}
},
"servers": [],
"security": []
}