create-jnrs-vue 1.2.36 → 1.2.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/jnrs-vue/AGENTS.md +0 -0
  2. package/jnrs-vue/README.md +6 -11
  3. package/jnrs-vue/components.d.ts +5 -3
  4. package/jnrs-vue/package.json +11 -4
  5. package/jnrs-vue/public/system/menu.json +25 -35
  6. package/jnrs-vue/src/api/examples/portfolio-management/portfolio.ts +163 -0
  7. package/jnrs-vue/src/api/examples/portfolio-management/program.ts +149 -0
  8. package/jnrs-vue/src/api/examples/portfolio-management/project.ts +125 -0
  9. package/jnrs-vue/src/api/examples/program-management/index.ts +143 -0
  10. package/jnrs-vue/src/api/examples/program-management/sub-project.ts +125 -0
  11. package/jnrs-vue/src/api/{demos/project.ts → examples/project-management/index.ts} +48 -23
  12. package/jnrs-vue/src/api/{demos → examples/project-management}/manager.ts +1 -1
  13. package/jnrs-vue/src/api/request.ts +1 -1
  14. package/jnrs-vue/src/api/system/index.ts +2 -2
  15. package/jnrs-vue/src/assets/styles/root.scss +5 -0
  16. package/jnrs-vue/src/components/common/DictTag.vue +12 -6
  17. package/jnrs-vue/src/components/common/ImageView.vue +0 -1
  18. package/jnrs-vue/src/components/select/SelectManager.vue +1 -1
  19. package/jnrs-vue/src/composables/useDateRangeField.ts +10 -6
  20. package/jnrs-vue/src/utils/field.ts +73 -0
  21. package/jnrs-vue/src/utils/file.ts +0 -36
  22. package/jnrs-vue/src/utils/index.ts +1 -0
  23. package/jnrs-vue/src/views/{demos → examples}/playground/RequestPage.vue +1 -1
  24. package/jnrs-vue/src/views/examples/portfolio-management/index.vue +65 -0
  25. package/jnrs-vue/src/views/examples/portfolio-management/portfolioTree/editDialog.vue +155 -0
  26. package/jnrs-vue/src/views/examples/portfolio-management/portfolioTree/index.vue +257 -0
  27. package/jnrs-vue/src/views/examples/portfolio-management/programList/editDialog.vue +167 -0
  28. package/jnrs-vue/src/views/examples/portfolio-management/programList/index.vue +225 -0
  29. package/jnrs-vue/src/views/examples/portfolio-management/projectList/editDialog.vue +177 -0
  30. package/jnrs-vue/src/views/examples/portfolio-management/projectList/index.vue +159 -0
  31. package/jnrs-vue/src/views/examples/program-management/index.vue +48 -0
  32. package/jnrs-vue/src/views/examples/program-management/mainPage/editDialog.vue +201 -0
  33. package/jnrs-vue/src/views/examples/program-management/mainPage/index.vue +218 -0
  34. package/jnrs-vue/src/views/examples/program-management/subPage/editDialog.vue +202 -0
  35. package/jnrs-vue/src/views/examples/program-management/subPage/index.vue +182 -0
  36. package/jnrs-vue/src/views/{demos/crud → examples/project-management}/EditDialog.vue +77 -37
  37. package/jnrs-vue/src/views/{demos/crud → examples/project-management}/index.vue +67 -38
  38. package/jnrs-vue/src/views/home/index.vue +2 -2
  39. package/jnrs-vue/viteMockServe/fail.ts +2 -2
  40. package/jnrs-vue/viteMockServe/index.ts +254 -7
  41. package/jnrs-vue/viteMockServe/json/dictRes.json +11 -1
  42. package/jnrs-vue/viteMockServe/json/{loginRes_admin.json → loginResAdmin.json} +20 -0
  43. package/jnrs-vue/viteMockServe/json/programListRes.json +81 -0
  44. package/jnrs-vue/viteMockServe/json/projectListRes.json +34 -31
  45. package/jnrs-vue/viteMockServe/json/subProjectListRes.json +221 -0
  46. package/jnrs-vue/viteMockServe/success.ts +8 -8
  47. package/package.json +1 -1
  48. package/jnrs-vue/AGENTS/README_API.md +0 -95
  49. package/jnrs-vue/AGENTS/README_BASE.md +0 -11
  50. package/jnrs-vue/AGENTS/README_COMMON.md +0 -9
  51. package/jnrs-vue/AGENTS/README_CRUD.md +0 -90
  52. package/jnrs-vue/AGENTS/README_DEPENDENCIES.md +0 -11
  53. package/jnrs-vue/AGENTS/README_MENU.md +0 -593
  54. /package/jnrs-vue/src/views/{demos → examples}/playground/index.vue +0 -0
  55. /package/jnrs-vue/viteMockServe/json/{loginRes_user.json → loginResUser.json} +0 -0
File without changes
@@ -19,22 +19,16 @@ pnpm build
19
19
  ## 🤖 AI Agent 使用说明
20
20
 
21
21
  - 前置准备
22
- - 将业务功能原型图作为生成前端代码的参考图
23
- - 从 api 工具(如 ApiFox) 中导出 openapi 文档,或接入其提供的 MCP 服务
24
- - 使用 AI Agent 读取并分析当前 `README.md` 文件及 `/AGENTS/README_BASE.md` 文件并作为 IDE AI Agent 的记忆
25
- - 预置提示词
26
- - 保存记忆:`读取并分析当前 README.md 文件及 /AGENTS/README_BASE.md 文件并作为 IDE AI Agent 的记忆`
27
- - 生成菜单:`根据提供的菜单原型图,生成菜单`
28
- - 生成服务文件:`根据提供的 openapi 文档或 MCP 服务,生成API 服务文件`
29
- - 生成增删改查页面文件:`根据提供的界面原型图,生成增删改查页面文件`
22
+ - 必须:从接口管理工具(如 ApiFox)中导出 OAS 文件(如 openapi.json)放入 skills 目录下
23
+ - 可选:将业务功能原型图作为生成前端代码的参考文件,调用多模态能力
30
24
 
31
25
  #### 项目结构
32
26
 
33
27
  ```Text
34
28
  jnrs-vue/
35
- ├── AGENTS/ # AI Agent 规则与提示词
36
- ├── viteMockServe/ # Mock 服务配置
37
- ├── public/ # 静态资源
29
+ ├── skills/ # AI Agent 项目级技能目录
30
+ ├── viteMockServe/ # Mock 服务配置目录
31
+ ├── public/ # 静态资源目录
38
32
  ├── src/ # 源码目录
39
33
  │ ├── components/ # Vue 组件
40
34
  │ ├── composables/ # 组合式函数
@@ -55,6 +49,7 @@ jnrs-vue/
55
49
  ├── auto-imports.d.ts # 自动导入类型声明
56
50
  ├── components.d.ts # 全局组件类型声明
57
51
  ├── README.md # 项目文档
52
+ ├── AGENTS.md # AI Agent 规则与提示词
58
53
  ├── .env.development # 开发环境变量
59
54
  ├── .env.production # 生产环境变量
60
55
  ├── .gitignore # Git 忽略规则
@@ -19,11 +19,12 @@ declare module 'vue' {
19
19
  ElCard: typeof import('element-plus/es')['ElCard']
20
20
  ElCascader: typeof import('element-plus/es')['ElCascader']
21
21
  ElCol: typeof import('element-plus/es')['ElCol']
22
- ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
23
22
  ElContainer: typeof import('element-plus/es')['ElContainer']
24
23
  ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
25
24
  ElDatePickerPanel: typeof import('element-plus/es')['ElDatePickerPanel']
26
- ElDialog: typeof import('element-plus/es')['ElDialog']
25
+ ElDropdown: typeof import('element-plus/es')['ElDropdown']
26
+ ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
27
+ ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
27
28
  ElForm: typeof import('element-plus/es')['ElForm']
28
29
  ElFormItem: typeof import('element-plus/es')['ElFormItem']
29
30
  ElHeader: typeof import('element-plus/es')['ElHeader']
@@ -35,16 +36,17 @@ declare module 'vue' {
35
36
  ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
36
37
  ElOption: typeof import('element-plus/es')['ElOption']
37
38
  ElPopover: typeof import('element-plus/es')['ElPopover']
39
+ ElProgress: typeof import('element-plus/es')['ElProgress']
38
40
  ElRow: typeof import('element-plus/es')['ElRow']
39
41
  ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
40
42
  ElSelect: typeof import('element-plus/es')['ElSelect']
41
43
  ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
42
44
  ElSwitch: typeof import('element-plus/es')['ElSwitch']
43
- ElTable: typeof import('element-plus/es')['ElTable']
44
45
  ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
45
46
  ElTabPane: typeof import('element-plus/es')['ElTabPane']
46
47
  ElTabs: typeof import('element-plus/es')['ElTabs']
47
48
  ElTag: typeof import('element-plus/es')['ElTag']
49
+ ElTree: typeof import('element-plus/es')['ElTree']
48
50
  ElWatermark: typeof import('element-plus/es')['ElWatermark']
49
51
  }
50
52
  export interface GlobalDirectives {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jnrs-vue",
3
- "version": "1.2.36",
3
+ "version": "1.2.37",
4
4
  "description": "JNRS 信息化管理系统",
5
5
  "author": "talia_tan",
6
6
  "private": true,
@@ -19,9 +19,9 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@element-plus/icons-vue": "^2.3.2",
22
- "@jnrs/lingshu-smart": "2.2.29",
23
- "@jnrs/shared": "1.1.28",
24
- "@jnrs/vue-core": "1.2.21",
22
+ "@jnrs/lingshu-smart": "2.2.30",
23
+ "@jnrs/shared": "1.1.31",
24
+ "@jnrs/vue-core": "1.2.25",
25
25
  "@vueuse/core": "^14.1.0",
26
26
  "element-plus": "^2.13.3",
27
27
  "pinia": "^3.0.4",
@@ -30,6 +30,7 @@
30
30
  "vue-i18n": "^11.2.8"
31
31
  },
32
32
  "devDependencies": {
33
+ "@jnrs/skills": "1.0.2",
33
34
  "@tsconfig/node22": "^22.0.5",
34
35
  "@types/node": "^22.19.1",
35
36
  "@typescript-eslint/parser": "^8.48.1",
@@ -52,5 +53,11 @@
52
53
  "vite-plugin-mock": "^3.0.2",
53
54
  "vite-plugin-vue-devtools": "^8.0.5",
54
55
  "vue-tsc": "^3.1.5"
56
+ },
57
+ "pnpm": {
58
+ "onlyBuiltDependencies": [
59
+ "@parcel/watcher",
60
+ "esbuild"
61
+ ]
55
62
  }
56
63
  }
@@ -10,39 +10,40 @@
10
10
  },
11
11
  "children": [
12
12
  {
13
- "path": "/playground",
14
- "name": "playground",
13
+ "path": "/examples/playground",
14
+ "name": "examplesPlayground",
15
15
  "meta": {
16
16
  "title": "基础功能测试",
17
17
  "todoCount": 8
18
18
  },
19
- "component": "/demos/playground/index"
19
+ "component": "/examples/playground/index"
20
20
  },
21
21
  {
22
- "path": "/agenticCrud",
23
- "name": "agenticCrud",
22
+ "path": "/examples/project-management",
23
+ "name": "examplesProjectManagement",
24
24
  "meta": {
25
25
  "title": "项目管理",
26
26
  "todoCount": 0
27
27
  },
28
- "component": "/demos/crud/index"
29
- }
30
- ]
31
- },
32
- {
33
- "meta": {
34
- "title": "业务功能测试",
35
- "icon": "Operation"
36
- },
37
- "children": [
28
+ "component": "/examples/project-management/index"
29
+ },
38
30
  {
39
- "path": "/businessPlayground",
40
- "name": "businessPlayground",
31
+ "path": "/examples/program-management",
32
+ "name": "examplesProgramManagement",
41
33
  "meta": {
42
- "title": "业务功能测试",
43
- "todoCount": 8
34
+ "title": "项目集管理",
35
+ "todoCount": 0
44
36
  },
45
- "component": "/businessPlayground/index"
37
+ "component": "/examples/program-management/index"
38
+ },
39
+ {
40
+ "path": "/examples/portfolio-management",
41
+ "name": "examplesPortfolioManagement",
42
+ "meta": {
43
+ "title": "项目组合管理",
44
+ "todoCount": 0
45
+ },
46
+ "component": "/examples/portfolio-management/index"
46
47
  }
47
48
  ]
48
49
  },
@@ -57,7 +58,6 @@
57
58
  "name": "lingshuSmartEditorPage",
58
59
  "meta": {
59
60
  "title": "编辑器",
60
- "icon": "Operation",
61
61
  "noAuth": true,
62
62
  "global": true
63
63
  },
@@ -68,7 +68,6 @@
68
68
  "name": "lingshuSmartPreviewPage",
69
69
  "meta": {
70
70
  "title": "看板",
71
- "icon": "Platform",
72
71
  "noAuth": true,
73
72
  "global": true
74
73
  },
@@ -98,25 +97,16 @@
98
97
  "name": "systemMine",
99
98
  "meta": {
100
99
  "title": "个人中心",
101
- "permissions": ["mine:view", "mine:edit"]
100
+ "permissions": ["systemMine:view", "systemMine:edit"]
102
101
  },
103
102
  "component": "/system/mine/index"
104
103
  },
105
- {
106
- "path": "/system/user",
107
- "name": "systemUser",
108
- "meta": {
109
- "title": "用户管理",
110
- "permissions": ["user:view", "user:edit"]
111
- },
112
- "component": "/system/user/index"
113
- },
114
104
  {
115
105
  "path": "/system/role",
116
106
  "name": "systemRole",
117
107
  "meta": {
118
108
  "title": "角色管理",
119
- "permissions": ["role:view", "role:edit"]
109
+ "permissions": ["systemRole:view", "systemRole:edit"]
120
110
  },
121
111
  "component": "/system/role/index"
122
112
  },
@@ -125,7 +115,7 @@
125
115
  "name": "systemDict",
126
116
  "meta": {
127
117
  "title": "字典管理",
128
- "permissions": ["dict:view", "dict:edit"]
118
+ "permissions": ["systemDict:view", "systemDict:edit"]
129
119
  },
130
120
  "component": "/system/dict/index"
131
121
  },
@@ -134,7 +124,7 @@
134
124
  "name": "systemMenu",
135
125
  "meta": {
136
126
  "title": "菜单管理",
137
- "permissions": ["menu:view", "menu:edit"]
127
+ "permissions": ["systemMenu:view", "systemMenu:edit"]
138
128
  },
139
129
  "component": "/system/menu/index"
140
130
  }
@@ -0,0 +1,163 @@
1
+ /**
2
+ * @File : portfolio-management/portfolio.ts
3
+ * @Desc. : 项目组合模块接口文档(左侧树)
4
+ */
5
+
6
+ import type { IFullResponse } from '@jnrs/shared'
7
+ import { axiosRequest } from '../../request'
8
+
9
+ /**
10
+ * 项目组合 - 详情
11
+ */
12
+ export interface Portfolio {
13
+ id: number
14
+ /** 组合名称 */
15
+ name: string
16
+ /** 排序 */
17
+ sequence: number
18
+ /** 是否有子组合 */
19
+ hasSubPortfolio: boolean
20
+ /** 描述 */
21
+ description: string
22
+ }
23
+
24
+ /**
25
+ * 项目组合 - 新增
26
+ */
27
+ export interface AddPortfolio {
28
+ /** 组合名称 */
29
+ name: string
30
+ /** 描述 */
31
+ description: string
32
+ }
33
+
34
+ /**
35
+ * 项目组合 - 上方新增
36
+ */
37
+ export interface UpSideAddPortfolio {
38
+ targetPortfolioId: number
39
+ name: string
40
+ }
41
+
42
+ /**
43
+ * 项目组合 - 下方新增
44
+ */
45
+ export interface DownSideAddPortfolio {
46
+ targetPortfolioId: number
47
+ name: string
48
+ }
49
+
50
+ /**
51
+ * 项目组合 - 子组合新增
52
+ */
53
+ export interface InnerAddPortfolio {
54
+ targetPortfolioId: number
55
+ name: string
56
+ }
57
+
58
+ /**
59
+ * 项目组合 - 修改
60
+ */
61
+ export interface UpdatePortfolio {
62
+ id: number
63
+ name: string
64
+ }
65
+
66
+ /**
67
+ * 项目组合 - 列表
68
+ */
69
+ export const portfolioListApi = (parentId?: number): Promise<Portfolio[]> => {
70
+ return axiosRequest({
71
+ url: '/agentic/portfolio/list',
72
+ method: 'get',
73
+ params: { parentId }
74
+ })
75
+ }
76
+
77
+ /**
78
+ * 项目组合 - 最外侧新增
79
+ */
80
+ export const addPortfolioApi = (data: AddPortfolio) => {
81
+ return axiosRequest({
82
+ url: '/agentic/portfolio/save',
83
+ method: 'post',
84
+ data
85
+ })
86
+ }
87
+
88
+ /**
89
+ * 项目组合 - 上方新增
90
+ */
91
+ export const upSideAddPortfolioApi = (data: UpSideAddPortfolio) => {
92
+ return axiosRequest({
93
+ url: '/agentic/portfolio/upSideAdd',
94
+ method: 'post',
95
+ data
96
+ })
97
+ }
98
+
99
+ /**
100
+ * 项目组合 - 下方新增
101
+ */
102
+ export const downSideAddPortfolioApi = (data: DownSideAddPortfolio) => {
103
+ return axiosRequest({
104
+ url: '/agentic/portfolio/downSideAdd',
105
+ method: 'post',
106
+ data
107
+ })
108
+ }
109
+
110
+ /**
111
+ * 项目组合 - 子组合新增
112
+ */
113
+ export const innerAddPortfolioApi = (data: InnerAddPortfolio) => {
114
+ return axiosRequest({
115
+ url: '/agentic/portfolio/innerAdd',
116
+ method: 'post',
117
+ data
118
+ })
119
+ }
120
+
121
+ /**
122
+ * 项目组合 - 修改
123
+ */
124
+ export const updatePortfolioApi = (data: UpdatePortfolio) => {
125
+ return axiosRequest({
126
+ url: '/agentic/portfolio/update',
127
+ method: 'put',
128
+ data
129
+ })
130
+ }
131
+
132
+ /**
133
+ * 项目组合 - 上移
134
+ */
135
+ export const moveUpPortfolioApi = (data: { targetPortfolioId: number }) => {
136
+ return axiosRequest({
137
+ url: '/agentic/portfolio/moveUp',
138
+ method: 'put',
139
+ data
140
+ })
141
+ }
142
+
143
+ /**
144
+ * 项目组合 - 下移
145
+ */
146
+ export const moveDownPortfolioApi = (data: { targetPortfolioId: number }) => {
147
+ return axiosRequest({
148
+ url: '/agentic/portfolio/moveDown',
149
+ method: 'put',
150
+ data
151
+ })
152
+ }
153
+
154
+ /**
155
+ * 项目组合 - 删除
156
+ */
157
+ export const deletePortfolioApi = (id: number): Promise<IFullResponse<unknown>> => {
158
+ return axiosRequest({
159
+ url: `/agentic/portfolio/delete/${id}`,
160
+ method: 'delete',
161
+ returnFullResponse: true
162
+ })
163
+ }
@@ -0,0 +1,149 @@
1
+ /**
2
+ * @File : portfolio-management/program.ts
3
+ * @Desc. : 项目集模块接口文档(中间表格,归属项目组合)
4
+ */
5
+
6
+ import type { IFullResponse } from '@jnrs/shared'
7
+ import type { IPagination, IPageTableData } from '@/types'
8
+ import { axiosRequest } from '../../request'
9
+
10
+ /**
11
+ * 项目集(归属组合) - 详情
12
+ */
13
+ export interface PortfolioProgram {
14
+ id: string
15
+ /** 项目组合Id */
16
+ portfolioId: number
17
+ /** 项目集编码 */
18
+ code: number
19
+ /** 项目集名称 */
20
+ name: string
21
+ /** 项目集描述 */
22
+ description: string
23
+ /** 项目经理Id */
24
+ managerId: number
25
+ /** 项目经理名称 */
26
+ managerName: string
27
+ /** 预算 */
28
+ budget: number
29
+ /** 开始日期 */
30
+ startDate: string
31
+ /** 结束日期 */
32
+ endDate: string
33
+ /**
34
+ * 项目集状态
35
+ * @dict programStatus
36
+ * @enumValues [0, 1, 2]
37
+ */
38
+ programStatus: number
39
+ /**
40
+ * 启用状态
41
+ * @independentModification portfolioProgramEnableApi
42
+ */
43
+ enable: boolean
44
+ /** 项目数量 */
45
+ projectCount: number
46
+ }
47
+
48
+ /**
49
+ * 项目集(归属组合) - 新增
50
+ */
51
+ export interface AddPortfolioProgram {
52
+ portfolioId?: number
53
+ code: number
54
+ name: string
55
+ description: string
56
+ /**
57
+ * 项目经理
58
+ * @useSelectComponent SelectManager
59
+ */
60
+ managerId?: Record<string, unknown> | number
61
+ budget: number
62
+ startDate: string
63
+ endDate: string
64
+ }
65
+
66
+ /**
67
+ * 项目集(归属组合) - 修改
68
+ */
69
+ export interface UpdatePortfolioProgram extends AddPortfolioProgram {
70
+ id: string
71
+ }
72
+
73
+ /**
74
+ * 项目集(归属组合) - 启用/禁用
75
+ */
76
+ export interface PortfolioProgramEnable {
77
+ id: string
78
+ enable: boolean
79
+ }
80
+
81
+ /**
82
+ * 项目集(归属组合) - 查询
83
+ */
84
+ export interface PortfolioProgramQuery extends IPagination {
85
+ /**
86
+ * 项目组合Id
87
+ * @foreignKey portfolioId
88
+ */
89
+ portfolioId?: number
90
+ code?: string
91
+ name?: string
92
+ managerId?: number
93
+ }
94
+
95
+ /**
96
+ * 项目集(归属组合) - 列表数据
97
+ */
98
+ export const portfolioProgramTableApi = (params?: PortfolioProgramQuery): Promise<IPageTableData<PortfolioProgram>> => {
99
+ return axiosRequest({
100
+ url: '/agentic/portfolio-program/list',
101
+ method: 'get',
102
+ params
103
+ })
104
+ }
105
+
106
+ /**
107
+ * 项目集(归属组合) - 新增
108
+ */
109
+ export const addPortfolioProgramApi = (data: AddPortfolioProgram) => {
110
+ return axiosRequest({
111
+ url: '/agentic/portfolio-program/save',
112
+ method: 'post',
113
+ data
114
+ })
115
+ }
116
+
117
+ /**
118
+ * 项目集(归属组合) - 修改
119
+ */
120
+ export const editPortfolioProgramApi = (data: UpdatePortfolioProgram) => {
121
+ return axiosRequest({
122
+ url: '/agentic/portfolio-program/save',
123
+ method: 'post',
124
+ data
125
+ })
126
+ }
127
+
128
+ /**
129
+ * 项目集(归属组合) - 删除
130
+ */
131
+ export const deletePortfolioProgramApi = (id: string): Promise<IFullResponse<unknown>> => {
132
+ return axiosRequest({
133
+ url: `/agentic/portfolio-program/delete/${id}`,
134
+ method: 'delete',
135
+ returnFullResponse: true
136
+ })
137
+ }
138
+
139
+ /**
140
+ * 项目集(归属组合) - 启用/禁用
141
+ */
142
+ export const portfolioProgramEnableApi = (data: PortfolioProgramEnable) => {
143
+ return axiosRequest({
144
+ url: '/agentic/portfolio-program/enable',
145
+ method: 'put',
146
+ data,
147
+ returnFullResponse: true
148
+ })
149
+ }
@@ -0,0 +1,125 @@
1
+ /**
2
+ * @File : portfolio-management/project.ts
3
+ * @Desc. : 项目模块接口文档(右侧表格,归属项目集)
4
+ */
5
+
6
+ import type { IPagination, IPageTableData } from '@/types'
7
+ import { axiosRequest } from '../../request'
8
+
9
+ /**
10
+ * 项目(归属项目集) - 详情
11
+ */
12
+ export interface PortfolioProject {
13
+ id: string
14
+ /** 父项目集Id */
15
+ programId: string
16
+ /** 项目编码 */
17
+ code: number
18
+ /** 项目名称 */
19
+ name: string
20
+ /**
21
+ * 项目类型
22
+ * @dict projectType
23
+ * @enumValues [0, 1, 2]
24
+ */
25
+ projectType: number
26
+ /** 项目经理Id */
27
+ managerId: number
28
+ /** 项目经理名称 */
29
+ managerName: string
30
+ /** 预算 */
31
+ budget: number
32
+ /** 进度 */
33
+ progress: number
34
+ /**
35
+ * 项目状态
36
+ * @dict projectStatus
37
+ */
38
+ projectStatus: number
39
+ /** 计划开始时间 */
40
+ plannedStartDate: string
41
+ /** 计划完成时间 */
42
+ plannedFinishDate: string
43
+ }
44
+
45
+ /**
46
+ * 项目(归属项目集) - 新增
47
+ */
48
+ export interface AddPortfolioProject {
49
+ programId?: string
50
+ code: number
51
+ name: string
52
+ projectType?: number
53
+ /**
54
+ * 项目经理
55
+ * @useSelectComponent SelectManager
56
+ */
57
+ managerId?: Record<string, unknown> | number
58
+ budget: number
59
+ plannedStartDate: string
60
+ plannedFinishDate: string
61
+ }
62
+
63
+ /**
64
+ * 项目(归属项目集) - 修改
65
+ */
66
+ export interface UpdatePortfolioProject extends AddPortfolioProject {
67
+ id: string
68
+ }
69
+
70
+ /**
71
+ * 项目(归属项目集) - 查询
72
+ */
73
+ export interface PortfolioProjectQuery extends IPagination {
74
+ /**
75
+ * 父项目集Id
76
+ * @foreignKey programId
77
+ */
78
+ programId?: string
79
+ name?: string
80
+ projectType?: number
81
+ projectStatus?: number
82
+ }
83
+
84
+ /**
85
+ * 项目(归属项目集) - 列表数据
86
+ */
87
+ export const portfolioProjectTableApi = (params?: PortfolioProjectQuery): Promise<IPageTableData<PortfolioProject>> => {
88
+ return axiosRequest({
89
+ url: '/agentic/portfolio-project/list',
90
+ method: 'get',
91
+ params
92
+ })
93
+ }
94
+
95
+ /**
96
+ * 项目(归属项目集) - 新增
97
+ */
98
+ export const addPortfolioProjectApi = (data: AddPortfolioProject) => {
99
+ return axiosRequest({
100
+ url: '/agentic/portfolio-project/save',
101
+ method: 'post',
102
+ data
103
+ })
104
+ }
105
+
106
+ /**
107
+ * 项目(归属项目集) - 修改
108
+ */
109
+ export const editPortfolioProjectApi = (data: UpdatePortfolioProject) => {
110
+ return axiosRequest({
111
+ url: '/agentic/portfolio-project/save',
112
+ method: 'post',
113
+ data
114
+ })
115
+ }
116
+
117
+ /**
118
+ * 项目(归属项目集) - 删除
119
+ */
120
+ export const deletePortfolioProjectApi = (id: string) => {
121
+ return axiosRequest({
122
+ url: `/agentic/portfolio-project/delete/${id}`,
123
+ method: 'delete'
124
+ })
125
+ }