create-jnrs-vue 2.0.2 → 2.0.3

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 (50) hide show
  1. package/jnrs-vue/components.d.ts +1 -0
  2. package/jnrs-vue/package.json +3 -3
  3. package/jnrs-vue/src/api/examples/playground.ts +51 -0
  4. package/jnrs-vue/src/api/examples/portfolio-management/portfolio.ts +10 -10
  5. package/jnrs-vue/src/api/examples/portfolio-management/program.ts +5 -5
  6. package/jnrs-vue/src/api/examples/portfolio-management/project.ts +4 -4
  7. package/jnrs-vue/src/api/examples/program-management/index.ts +5 -5
  8. package/jnrs-vue/src/api/examples/program-management/sub-project.ts +4 -4
  9. package/jnrs-vue/src/api/examples/project-management/index.ts +19 -51
  10. package/jnrs-vue/src/api/examples/project-management/manager.ts +1 -1
  11. package/jnrs-vue/src/components/common/DictSelector.vue +70 -0
  12. package/jnrs-vue/src/components/common/DictTag.vue +8 -2
  13. package/jnrs-vue/src/utils/index.ts +1 -1
  14. package/jnrs-vue/src/views/examples/playground/RequestPage.vue +97 -38
  15. package/jnrs-vue/src/views/examples/playground/index.vue +203 -63
  16. package/jnrs-vue/src/views/examples/portfolio-management/programList/editDialog.vue +10 -0
  17. package/jnrs-vue/src/views/examples/portfolio-management/programList/index.vue +1 -1
  18. package/jnrs-vue/src/views/examples/portfolio-management/projectList/editDialog.vue +12 -9
  19. package/jnrs-vue/src/views/examples/program-management/mainPage/editDialog.vue +15 -19
  20. package/jnrs-vue/src/views/examples/program-management/subPage/editDialog.vue +15 -19
  21. package/jnrs-vue/src/views/examples/project-management/EditDialog.vue +54 -24
  22. package/jnrs-vue/src/views/examples/project-management/index.vue +4 -18
  23. package/jnrs-vue/viteMockServe/auth.mock.ts +41 -0
  24. package/jnrs-vue/viteMockServe/details.mock.ts +12 -0
  25. package/jnrs-vue/viteMockServe/dict.mock.ts +21 -0
  26. package/jnrs-vue/viteMockServe/index.ts +22 -370
  27. package/jnrs-vue/viteMockServe/manager.mock.ts +12 -0
  28. package/jnrs-vue/viteMockServe/portfolio-program.mock.ts +36 -0
  29. package/jnrs-vue/viteMockServe/portfolio-project.mock.ts +28 -0
  30. package/jnrs-vue/viteMockServe/portfolio.mock.ts +109 -0
  31. package/jnrs-vue/viteMockServe/program.mock.ts +45 -0
  32. package/jnrs-vue/viteMockServe/project.mock.ts +58 -0
  33. package/jnrs-vue/viteMockServe/role.mock.ts +12 -0
  34. package/jnrs-vue/viteMockServe/sub-project.mock.ts +34 -0
  35. package/package.json +1 -1
  36. package/jnrs-vue/src/api/business/index.ts +0 -69
  37. package/jnrs-vue/src/utils/field.ts +0 -73
  38. package/jnrs-vue/src/views/businessPlayground/EditDialog.vue +0 -137
  39. package/jnrs-vue/src/views/businessPlayground/index.vue +0 -90
  40. package/jnrs-vue/viteMockServe/json/tableRes.json +0 -390
  41. /package/jnrs-vue/viteMockServe/json/{loginResAdmin.json → auth-login-admin.json} +0 -0
  42. /package/jnrs-vue/viteMockServe/json/{loginResUser.json → auth-login-user.json} +0 -0
  43. /package/jnrs-vue/viteMockServe/json/{detailsRes.json → details.json} +0 -0
  44. /package/jnrs-vue/viteMockServe/json/{dictItemRes.json → dict-detail.json} +0 -0
  45. /package/jnrs-vue/viteMockServe/json/{dictRes.json → dict-list.json} +0 -0
  46. /package/jnrs-vue/viteMockServe/json/{managerRes.json → manager-list.json} +0 -0
  47. /package/jnrs-vue/viteMockServe/json/{programListRes.json → program-list.json} +0 -0
  48. /package/jnrs-vue/viteMockServe/json/{projectListRes.json → project-list.json} +0 -0
  49. /package/jnrs-vue/viteMockServe/json/{roleRes.json → role-list.json} +0 -0
  50. /package/jnrs-vue/viteMockServe/json/{subProjectListRes.json → sub-project-list.json} +0 -0
@@ -11,6 +11,7 @@ export {}
11
11
  /* prettier-ignore */
12
12
  declare module 'vue' {
13
13
  export interface GlobalComponents {
14
+ ElAlert: typeof import('element-plus/es')['ElAlert']
14
15
  ElAside: typeof import('element-plus/es')['ElAside']
15
16
  ElAvatar: typeof import('element-plus/es')['ElAvatar']
16
17
  ElBadge: typeof import('element-plus/es')['ElBadge']
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jnrs-vue",
3
- "version": "1.2.39",
3
+ "version": "1.2.40",
4
4
  "description": "JNRS 信息化管理系统",
5
5
  "author": "talia_tan",
6
6
  "private": true,
@@ -19,8 +19,8 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@element-plus/icons-vue": "^2.3.2",
22
- "@jnrs/lingshu-smart": "2.2.31",
23
- "@jnrs/shared": "1.1.32",
22
+ "@jnrs/lingshu-smart": "2.2.32",
23
+ "@jnrs/shared": "1.1.33",
24
24
  "@jnrs/vue-core": "1.2.26",
25
25
  "@vueuse/core": "^14.1.0",
26
26
  "element-plus": "^2.13.3",
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @Author : TanRui
3
+ * @WeChat : Tan578853789
4
+ * @File : playground.ts
5
+ * @Date : 2026/05/25
6
+ * @Desc. : 测试模块接口文档
7
+ */
8
+
9
+ import { axiosRequest } from '../request'
10
+
11
+ /**
12
+ * 测试 404 错误
13
+ */
14
+ export const NotFoundApi = () => {
15
+ return axiosRequest({
16
+ url: '/notFound',
17
+ method: 'get'
18
+ })
19
+ }
20
+
21
+ /**
22
+ * 测试 不需要权限
23
+ */
24
+ export const NoNeedAuthApi = () => {
25
+ return axiosRequest({
26
+ url: '/auth/no',
27
+ method: 'post',
28
+ noAuth: true // 是否需要权限,默认为 false
29
+ })
30
+ }
31
+
32
+ /**
33
+ * 测试 无权限
34
+ */
35
+ export const NoAuthApi = (showErrorMsg: boolean) => {
36
+ return axiosRequest({
37
+ url: '/auth/no',
38
+ method: 'post',
39
+ showErrorMsg // 是否显示错误信息,默认为 true
40
+ })
41
+ }
42
+
43
+ /**
44
+ * 测试 请求错误
45
+ */
46
+ export const FailApi = () => {
47
+ return axiosRequest({
48
+ url: '/auth/fail',
49
+ method: 'post'
50
+ })
51
+ }
@@ -68,7 +68,7 @@ export interface UpdatePortfolio {
68
68
  */
69
69
  export const portfolioListApi = (parentId?: number): Promise<Portfolio[]> => {
70
70
  return axiosRequest({
71
- url: '/agentic/portfolio/list',
71
+ url: '/examples/portfolio/list',
72
72
  method: 'get',
73
73
  params: { parentId }
74
74
  })
@@ -79,7 +79,7 @@ export const portfolioListApi = (parentId?: number): Promise<Portfolio[]> => {
79
79
  */
80
80
  export const addPortfolioApi = (data: AddPortfolio) => {
81
81
  return axiosRequest({
82
- url: '/agentic/portfolio/save',
82
+ url: '/examples/portfolio/save',
83
83
  method: 'post',
84
84
  data
85
85
  })
@@ -90,7 +90,7 @@ export const addPortfolioApi = (data: AddPortfolio) => {
90
90
  */
91
91
  export const upSideAddPortfolioApi = (data: UpSideAddPortfolio) => {
92
92
  return axiosRequest({
93
- url: '/agentic/portfolio/upSideAdd',
93
+ url: '/examples/portfolio/upSideAdd',
94
94
  method: 'post',
95
95
  data
96
96
  })
@@ -101,7 +101,7 @@ export const upSideAddPortfolioApi = (data: UpSideAddPortfolio) => {
101
101
  */
102
102
  export const downSideAddPortfolioApi = (data: DownSideAddPortfolio) => {
103
103
  return axiosRequest({
104
- url: '/agentic/portfolio/downSideAdd',
104
+ url: '/examples/portfolio/downSideAdd',
105
105
  method: 'post',
106
106
  data
107
107
  })
@@ -112,7 +112,7 @@ export const downSideAddPortfolioApi = (data: DownSideAddPortfolio) => {
112
112
  */
113
113
  export const innerAddPortfolioApi = (data: InnerAddPortfolio) => {
114
114
  return axiosRequest({
115
- url: '/agentic/portfolio/innerAdd',
115
+ url: '/examples/portfolio/innerAdd',
116
116
  method: 'post',
117
117
  data
118
118
  })
@@ -123,7 +123,7 @@ export const innerAddPortfolioApi = (data: InnerAddPortfolio) => {
123
123
  */
124
124
  export const updatePortfolioApi = (data: UpdatePortfolio) => {
125
125
  return axiosRequest({
126
- url: '/agentic/portfolio/update',
126
+ url: '/examples/portfolio/update',
127
127
  method: 'put',
128
128
  data
129
129
  })
@@ -134,7 +134,7 @@ export const updatePortfolioApi = (data: UpdatePortfolio) => {
134
134
  */
135
135
  export const moveUpPortfolioApi = (data: { targetPortfolioId: number }) => {
136
136
  return axiosRequest({
137
- url: '/agentic/portfolio/moveUp',
137
+ url: '/examples/portfolio/moveUp',
138
138
  method: 'put',
139
139
  data
140
140
  })
@@ -145,7 +145,7 @@ export const moveUpPortfolioApi = (data: { targetPortfolioId: number }) => {
145
145
  */
146
146
  export const moveDownPortfolioApi = (data: { targetPortfolioId: number }) => {
147
147
  return axiosRequest({
148
- url: '/agentic/portfolio/moveDown',
148
+ url: '/examples/portfolio/moveDown',
149
149
  method: 'put',
150
150
  data
151
151
  })
@@ -156,8 +156,8 @@ export const moveDownPortfolioApi = (data: { targetPortfolioId: number }) => {
156
156
  */
157
157
  export const deletePortfolioApi = (id: number): Promise<IFullResponse<unknown>> => {
158
158
  return axiosRequest({
159
- url: `/agentic/portfolio/delete/${id}`,
159
+ url: `/examples/portfolio/delete/${id}`,
160
160
  method: 'delete',
161
161
  returnFullResponse: true
162
162
  })
163
- }
163
+ }
@@ -97,7 +97,7 @@ export interface PortfolioProgramQuery extends IPagination {
97
97
  */
98
98
  export const portfolioProgramTableApi = (params?: PortfolioProgramQuery): Promise<IPageTableData<PortfolioProgram>> => {
99
99
  return axiosRequest({
100
- url: '/agentic/portfolio-program/list',
100
+ url: '/examples/portfolio-program/list',
101
101
  method: 'get',
102
102
  params
103
103
  })
@@ -108,7 +108,7 @@ export const portfolioProgramTableApi = (params?: PortfolioProgramQuery): Promis
108
108
  */
109
109
  export const addPortfolioProgramApi = (data: AddPortfolioProgram) => {
110
110
  return axiosRequest({
111
- url: '/agentic/portfolio-program/save',
111
+ url: '/examples/portfolio-program/save',
112
112
  method: 'post',
113
113
  data
114
114
  })
@@ -119,7 +119,7 @@ export const addPortfolioProgramApi = (data: AddPortfolioProgram) => {
119
119
  */
120
120
  export const editPortfolioProgramApi = (data: UpdatePortfolioProgram) => {
121
121
  return axiosRequest({
122
- url: '/agentic/portfolio-program/save',
122
+ url: '/examples/portfolio-program/save',
123
123
  method: 'post',
124
124
  data
125
125
  })
@@ -130,7 +130,7 @@ export const editPortfolioProgramApi = (data: UpdatePortfolioProgram) => {
130
130
  */
131
131
  export const deletePortfolioProgramApi = (id: string): Promise<IFullResponse<unknown>> => {
132
132
  return axiosRequest({
133
- url: `/agentic/portfolio-program/delete/${id}`,
133
+ url: `/examples/portfolio-program/delete/${id}`,
134
134
  method: 'delete',
135
135
  returnFullResponse: true
136
136
  })
@@ -141,7 +141,7 @@ export const deletePortfolioProgramApi = (id: string): Promise<IFullResponse<unk
141
141
  */
142
142
  export const portfolioProgramEnableApi = (data: PortfolioProgramEnable) => {
143
143
  return axiosRequest({
144
- url: '/agentic/portfolio-program/enable',
144
+ url: '/examples/portfolio-program/enable',
145
145
  method: 'put',
146
146
  data,
147
147
  returnFullResponse: true
@@ -86,7 +86,7 @@ export interface PortfolioProjectQuery extends IPagination {
86
86
  */
87
87
  export const portfolioProjectTableApi = (params?: PortfolioProjectQuery): Promise<IPageTableData<PortfolioProject>> => {
88
88
  return axiosRequest({
89
- url: '/agentic/portfolio-project/list',
89
+ url: '/examples/portfolio-project/list',
90
90
  method: 'get',
91
91
  params
92
92
  })
@@ -97,7 +97,7 @@ export const portfolioProjectTableApi = (params?: PortfolioProjectQuery): Promis
97
97
  */
98
98
  export const addPortfolioProjectApi = (data: AddPortfolioProject) => {
99
99
  return axiosRequest({
100
- url: '/agentic/portfolio-project/save',
100
+ url: '/examples/portfolio-project/save',
101
101
  method: 'post',
102
102
  data
103
103
  })
@@ -108,7 +108,7 @@ export const addPortfolioProjectApi = (data: AddPortfolioProject) => {
108
108
  */
109
109
  export const editPortfolioProjectApi = (data: UpdatePortfolioProject) => {
110
110
  return axiosRequest({
111
- url: '/agentic/portfolio-project/save',
111
+ url: '/examples/portfolio-project/save',
112
112
  method: 'post',
113
113
  data
114
114
  })
@@ -119,7 +119,7 @@ export const editPortfolioProjectApi = (data: UpdatePortfolioProject) => {
119
119
  */
120
120
  export const deletePortfolioProjectApi = (id: string) => {
121
121
  return axiosRequest({
122
- url: `/agentic/portfolio-project/delete/${id}`,
122
+ url: `/examples/portfolio-project/delete/${id}`,
123
123
  method: 'delete'
124
124
  })
125
125
  }
@@ -91,7 +91,7 @@ export interface ProgramQuery extends IPagination {
91
91
  */
92
92
  export const programTableApi = (params?: ProgramQuery): Promise<IPageTableData<Program>> => {
93
93
  return axiosRequest({
94
- url: '/agentic/program/list',
94
+ url: '/examples/program/list',
95
95
  method: 'get',
96
96
  params
97
97
  })
@@ -102,7 +102,7 @@ export const programTableApi = (params?: ProgramQuery): Promise<IPageTableData<P
102
102
  */
103
103
  export const addProgramApi = (data: AddProgram) => {
104
104
  return axiosRequest({
105
- url: '/agentic/program/save',
105
+ url: '/examples/program/save',
106
106
  method: 'post',
107
107
  data
108
108
  })
@@ -113,7 +113,7 @@ export const addProgramApi = (data: AddProgram) => {
113
113
  */
114
114
  export const editProgramApi = (data: UpdateProgram) => {
115
115
  return axiosRequest({
116
- url: '/agentic/program/save',
116
+ url: '/examples/program/save',
117
117
  method: 'post',
118
118
  data
119
119
  })
@@ -124,7 +124,7 @@ export const editProgramApi = (data: UpdateProgram) => {
124
124
  */
125
125
  export const deleteProgramApi = (id: string): Promise<IFullResponse<unknown>> => {
126
126
  return axiosRequest({
127
- url: `/agentic/program/delete/${id}`,
127
+ url: `/examples/program/delete/${id}`,
128
128
  method: 'delete',
129
129
  returnFullResponse: true
130
130
  })
@@ -135,7 +135,7 @@ export const deleteProgramApi = (id: string): Promise<IFullResponse<unknown>> =>
135
135
  */
136
136
  export const programEnableApi = (data: ProgramEnable) => {
137
137
  return axiosRequest({
138
- url: '/agentic/program/enable',
138
+ url: '/examples/program/enable',
139
139
  method: 'put',
140
140
  data,
141
141
  returnFullResponse: true
@@ -86,7 +86,7 @@ export interface SubProjectQuery extends IPagination {
86
86
  */
87
87
  export const subProjectTableApi = (params?: SubProjectQuery): Promise<IPageTableData<SubProject>> => {
88
88
  return axiosRequest({
89
- url: '/agentic/sub-project/list',
89
+ url: '/examples/sub-project/list',
90
90
  method: 'get',
91
91
  params
92
92
  })
@@ -97,7 +97,7 @@ export const subProjectTableApi = (params?: SubProjectQuery): Promise<IPageTable
97
97
  */
98
98
  export const addSubProjectApi = (data: AddSubProject) => {
99
99
  return axiosRequest({
100
- url: '/agentic/sub-project/save',
100
+ url: '/examples/sub-project/save',
101
101
  method: 'post',
102
102
  data
103
103
  })
@@ -108,7 +108,7 @@ export const addSubProjectApi = (data: AddSubProject) => {
108
108
  */
109
109
  export const editSubProjectApi = (data: UpdateSubProject) => {
110
110
  return axiosRequest({
111
- url: '/agentic/sub-project/save',
111
+ url: '/examples/sub-project/save',
112
112
  method: 'post',
113
113
  data
114
114
  })
@@ -119,7 +119,7 @@ export const editSubProjectApi = (data: UpdateSubProject) => {
119
119
  */
120
120
  export const deleteSubProjectApi = (id: string) => {
121
121
  return axiosRequest({
122
- url: `/agentic/sub-project/delete/${id}`,
122
+ url: `/examples/sub-project/delete/${id}`,
123
123
  method: 'delete'
124
124
  })
125
125
  }
@@ -132,7 +132,7 @@ export interface ProjectQuery extends IPagination {
132
132
  */
133
133
  export const addProjectApi = (data: AddProject) => {
134
134
  return axiosRequest({
135
- url: '/agentic/project/save',
135
+ url: '/examples/project/save',
136
136
  method: 'post',
137
137
  data: objectToFormData(data)
138
138
  })
@@ -143,7 +143,7 @@ export const addProjectApi = (data: AddProject) => {
143
143
  */
144
144
  export const editProjectApi = (data: UpdateProject) => {
145
145
  return axiosRequest({
146
- url: '/agentic/project/save',
146
+ url: '/examples/project/save',
147
147
  method: 'post',
148
148
  data: objectToFormData(data)
149
149
  })
@@ -154,7 +154,7 @@ export const editProjectApi = (data: UpdateProject) => {
154
154
  */
155
155
  export const updateProjectApi = (data: Project) => {
156
156
  return axiosRequest({
157
- url: '/agentic/project/update',
157
+ url: '/examples/project/update',
158
158
  method: 'put',
159
159
  data
160
160
  })
@@ -165,7 +165,7 @@ export const updateProjectApi = (data: Project) => {
165
165
  */
166
166
  export const deleteProjectApi = (id: string): Promise<IFullResponse<unknown>> => {
167
167
  return axiosRequest({
168
- url: `/agentic/project/delete/${id}`,
168
+ url: `/examples/project/delete/${id}`,
169
169
  method: 'delete',
170
170
  returnFullResponse: true
171
171
  })
@@ -176,7 +176,7 @@ export const deleteProjectApi = (id: string): Promise<IFullResponse<unknown>> =>
176
176
  */
177
177
  export const projectEnableApi = (data: ProjectEnable) => {
178
178
  return axiosRequest({
179
- url: '/agentic/project/enable',
179
+ url: '/examples/project/enable',
180
180
  method: 'put',
181
181
  data,
182
182
  returnFullResponse: true
@@ -188,18 +188,28 @@ export const projectEnableApi = (data: ProjectEnable) => {
188
188
  */
189
189
  export const projectTableApi = (params?: ProjectQuery): Promise<IPageTableData<Project>> => {
190
190
  return axiosRequest({
191
- url: '/agentic/project/list',
191
+ url: '/examples/project/list',
192
192
  method: 'get',
193
193
  params
194
194
  })
195
195
  }
196
196
 
197
+ /**
198
+ * 项目 - 按ID查询详情
199
+ */
200
+ export const getProjectByIdApi = (id: string): Promise<Project> => {
201
+ return axiosRequest({
202
+ url: `/examples/project/detail/${id}`,
203
+ method: 'get'
204
+ })
205
+ }
206
+
197
207
  /**
198
208
  * 下载数据导入模板
199
209
  */
200
210
  export const templateProjectApi = (): Promise<IBlobItem> => {
201
211
  return axiosRequest({
202
- url: '/agentic/project/template',
212
+ url: '/examples/project/template',
203
213
  method: 'post',
204
214
  responseType: 'blob'
205
215
  })
@@ -210,7 +220,7 @@ export const templateProjectApi = (): Promise<IBlobItem> => {
210
220
  */
211
221
  export const importProjectApi = (data: FormData): Promise<IFullResponse<unknown>> => {
212
222
  return axiosRequest({
213
- url: '/agentic/project/import',
223
+ url: '/examples/project/import',
214
224
  method: 'post',
215
225
  data,
216
226
  returnFullResponse: true
@@ -222,51 +232,9 @@ export const importProjectApi = (data: FormData): Promise<IFullResponse<unknown>
222
232
  */
223
233
  export const exportProjectApi = (data: Record<string, unknown>): Promise<IBlobItem> => {
224
234
  return axiosRequest({
225
- url: '/agentic/project/export',
235
+ url: '/examples/project/export',
226
236
  method: 'post',
227
237
  data,
228
238
  responseType: 'blob'
229
239
  })
230
240
  }
231
-
232
- /**
233
- * 测试 404 错误
234
- */
235
- export const NotFoundApi = () => {
236
- return axiosRequest({
237
- url: '/notFound',
238
- method: 'get'
239
- })
240
- }
241
-
242
- /**
243
- * 测试 不需要权限
244
- */
245
- export const NoNeedAuthApi = () => {
246
- return axiosRequest({
247
- url: '/auth/no',
248
- method: 'post',
249
- noAuth: true // 是否需要权限,默认为 false
250
- })
251
- }
252
-
253
- /**
254
- * 测试 无权限
255
- */
256
- export const NoAuthApi = (showErrorMsg: boolean) => {
257
- return axiosRequest({
258
- url: '/auth/no',
259
- method: 'post',
260
- showErrorMsg // 是否显示错误信息,默认为 true
261
- })
262
- }
263
-
264
- /**
265
- * 测试 请求错误
266
- */
267
- export const FailApi = () => {
268
- return axiosRequest({
269
- url: '/auth/fail',
270
- method: 'post'
271
- })
272
- }
@@ -35,7 +35,7 @@ export interface ManagerQuery extends IPagination {
35
35
  */
36
36
  export const ManagerListApi = (params?: ManagerQuery): Promise<IPageTableData<Manager>> => {
37
37
  return axiosRequest({
38
- url: '/agentic/manager/list',
38
+ url: '/examples/manager/list',
39
39
  method: 'get',
40
40
  params
41
41
  })
@@ -0,0 +1,70 @@
1
+ <!--
2
+ @Author : TanRui
3
+ @WeChat : Tan578853789
4
+ @File : DictSelector.vue
5
+ @Date : 2026/07/17
6
+ @Desc. : 字典下拉选择器,选项带背景和文字颜色
7
+ -->
8
+
9
+ <script setup lang="ts">
10
+ import type { IDictItem } from '@/types'
11
+ import { computed } from 'vue'
12
+ import { getDictList } from '@/utils'
13
+ import DictTag from '@/components/common/DictTag.vue'
14
+
15
+ export interface Props {
16
+ /** 字典名称 */
17
+ dictName: string
18
+ /** 选中的值 */
19
+ modelValue?: string | number
20
+ /** 是否可筛选 */
21
+ filterable?: boolean
22
+ /** 占位文本 */
23
+ placeholder?: string
24
+ /** 是否可清空 */
25
+ clearable?: boolean
26
+ /** 宽度 */
27
+ width?: string | number
28
+ /** 是否显示颜色 */
29
+ showColor?: boolean
30
+ }
31
+
32
+ const props = withDefaults(defineProps<Props>(), {
33
+ filterable: true,
34
+ placeholder: '',
35
+ clearable: true,
36
+ width: '100%',
37
+ showColor: true
38
+ })
39
+
40
+ const emit = defineEmits<{
41
+ 'update:modelValue': [value: string | number | undefined]
42
+ }>()
43
+
44
+ const options = computed<IDictItem[]>(() => getDictList(props.dictName))
45
+
46
+ const currentValue = computed({
47
+ get: () => props.modelValue ?? undefined,
48
+ set: (val) => emit('update:modelValue', val)
49
+ })
50
+ </script>
51
+
52
+ <template>
53
+ <el-select
54
+ v-model="currentValue"
55
+ :filterable="filterable"
56
+ :placeholder="placeholder"
57
+ :clearable="clearable"
58
+ :style="{ width: typeof width === 'number' ? width + 'px' : width }"
59
+ >
60
+ <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" class="dict-option">
61
+ <DictTag :dictName="props.dictName" :value="item.value" :height="24" />
62
+ </el-option>
63
+ </el-select>
64
+ </template>
65
+
66
+ <style lang="scss" scoped>
67
+ .dict-option {
68
+ text-align: left;
69
+ }
70
+ </style>
@@ -18,6 +18,10 @@ export interface Props {
18
18
  * 是否使用颜色
19
19
  */
20
20
  showColor?: boolean
21
+ /**
22
+ * 标签高度
23
+ */
24
+ height?: number
21
25
  /**
22
26
  * 是否使用 popover
23
27
  */
@@ -28,7 +32,7 @@ export interface Props {
28
32
  placement?: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right'
29
33
  }
30
34
 
31
- const { dictName = '', value = '', showColor = true, popover = '' } = defineProps<Props>()
35
+ const { dictName = '', value = '', showColor = true, height = 0, popover = '' } = defineProps<Props>()
32
36
 
33
37
  const computedColor = computed(() => {
34
38
  const c = getDictColor(dictName, value) || 'inherit'
@@ -47,7 +51,9 @@ const computedColor = computed(() => {
47
51
  class="dictTag"
48
52
  :class="{ dictTag_showColor: showColor }"
49
53
  :style="{
50
- backgroundColor: computedColor.backgroundColor
54
+ backgroundColor: computedColor.backgroundColor,
55
+ height: height ? height + 'px' : undefined,
56
+ lineHeight: height ? height + 'px' : undefined
51
57
  }"
52
58
  >
53
59
  <span
@@ -1,6 +1,6 @@
1
1
  export * from './packages'
2
2
  export * from './dict'
3
3
  export * from './file'
4
- export * from './field'
4
+ export { extractFieldId } from '@jnrs/shared'
5
5
  export * from './permissions'
6
6
  export * from './common'