@jnrs/vue-core 1.2.7 → 1.2.8

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.
package/README.md CHANGED
@@ -28,13 +28,67 @@ import { useAuthStore } from '@jnrs/vue-core/pinia'
28
28
 
29
29
  #### @jnrs/vue-core 模块
30
30
  接口
31
- - User
32
- - DictItem
33
- - Dict
34
- - MenuItem
35
31
 
32
+ - ElSize(Element 尺寸类型)
33
+ ```
34
+ 类型定义:字面量联合类型
35
+ 可选值:'' | 'large' | 'default' | 'small'
36
+ ```
37
+
38
+ - ElButtonType(Element 按钮类型)
39
+ ```
40
+ 类型定义:字面量联合类型
41
+ 可选值:'default' | 'primary' | 'success' | 'info' | 'warning' | 'text' | 'danger'
42
+ ```
43
+
44
+ - MenuItem 菜单项
45
+
46
+ | 属性名 | 描述 | 类型 |
47
+ |--------|------|------|
48
+ | meta | 路由元信息 | `RouteMeta` |
49
+ | path | 路径 | `string` |
50
+ | name | 名称(可选) | `string` |
51
+ | component | 组件路径(可选) | `string` |
52
+ | redirect | 重定向路径(可选) | `string` |
53
+ | children | 子菜单项(可选) | `MenuItem[]` |
54
+
55
+ - Attachment(文件信息)
56
+
57
+ | 属性名 | 描述 | 类型 |
58
+ |--------|------|------|
59
+ | id | 数据 id | `number` |
60
+ | documentId | 文件 id | `number` |
61
+ | fileName | 文件名 | `string` |
62
+ | uniqueFileName | 文件名唯一标识(用于文件获取 API) | `string` |
63
+ | fileType | MIME 类型 | `string` |
64
+ | fileSize | 文件大小(单位:字节) | `number` |
65
+
66
+ - Pagination(分页)
67
+
68
+ | 属性名 | 描述 | 类型 |
69
+ |--------|------|------|
70
+ | pageNo | 当前页码 | `number` |
71
+ | pageSize | 每页大小 | `number` |
72
+
73
+ - PageTableDataT(分页列表数据)继承自 Pagination
74
+
75
+ | 属性名 | 描述 | 类型 |
76
+ |--------|------|------|
77
+ | list | 数据列表 | `T[]` |
78
+ | count | 数据总数 | `number` |
79
+
80
+
81
+ #### @jnrs/vue-core/request 模块
36
82
  函数
37
- - request 网络请求
83
+ ``` typescript
84
+ /**
85
+ * axios 请求方法(泛型拓展)
86
+ * @param options 请求配置项
87
+ * @returns Promise<T> 响应数据
88
+ */
89
+ axiosRequest: <T = BusinessResponse<unknown>>(options: BusinessRequest) => Promise<T>
90
+ ```
91
+
38
92
 
39
93
  #### @jnrs/vue-core/pinia 模块
40
94
  函数
@@ -87,15 +141,140 @@ import { useAuthStore } from '@jnrs/vue-core/pinia'
87
141
 
88
142
  #### @jnrs/vue-core/components 模块
89
143
  Vue 组件
90
- - GlobalSetting 全局偏好设置组件
91
- - JnImageView 图片预览组件
92
- ```ts
93
- type PreviewSrcList = {
94
- src: string
95
- fileName: string
96
- }
97
- ```
144
+ - JnTable.vue 表格组件
145
+
146
+ | 属性名 | 描述 | 类型 | 默认值 |
147
+ |--------|------|------|--------|
148
+ | data | 表数据 | `Record<string, any>[]` | — |
149
+ | rowKey | 行数据的 Key,在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。支持多层访问:user.info.id | `string` | `'id'` |
150
+ | showScrollbar | 总是显示横向滚动条 | `boolean` | `false` |
151
+ | height | 表格高度,默认为 100% | `string \| number` | `'100%'` |
152
+ | autoHeight | 表格高度是否自动计算 | `boolean` | `false` |
153
+ | autoHeightOptions | 表格高度自动计算配置项 | `UseReactivityTableHeighOptions` | `{}` |
154
+ | showIndexColumn | 是否显示序号列 | `boolean` | `false` |
155
+ | showSelectionColumn | 是否显示选择列 | `boolean` | `false` |
156
+ | showMouseSelection | 是否开启鼠标框选 | `boolean` | `false` |
157
+ | pagination | 当前页码和每页大小(用于序号计算) | `Pagination` | `{ pageNo: 0, pageSize: 0 }` |
158
+
159
+ - JnSelectTemplate.vue 选择组件通用模板
160
+
161
+ | 属性名 | 描述 | 类型 | 默认值 |
162
+ |--------|------|------|--------|
163
+ | listApi | 列表接口(必填) | `Function` | — |
164
+ | tableName | 列表名称 | `string` | `''` |
165
+ | tableWidth | 列表宽度 | `string` | `'60%'` |
166
+ | listParams | 列表查询参数 | `Record<string, unknown>` | `{}` |
167
+ | listParamsHandle | 列表查询参数前置处理函数 | `(params: Record<string, unknown>) => Record<string, unknown>` | `(params) => params` |
168
+ | listParamsHandleAfter | 列表查询参数后置处理函数 | `(params: Record<string, unknown>) => Record<string, unknown>` | `(params) => params` |
169
+ | keyValue | 真实数据匹配的键值对名,后续取值赋值都用 keyValue.name 和 keyValue.id | `{ name: string; id: string; [key: string]: string }` | `{ name: 'name', id: 'id' }` |
170
+ | optionSecondaryField | keyValue 的拓展字段,用于 el-option 中显示,使用时必须在 keyValue 中定义 | `string` | — |
171
+ | modelValue | 双向绑定值(支持多种类型) | `Record<string, unknown> \| Record<string, unknown>[] \| number \| string` | — |
172
+ | width | 宽度 | `string` | `'100%'` |
173
+ | simpleValue | 简单数据类型,仅返回 keyValue.id | `boolean` | `true` |
174
+ | showAllTips | option 组件是否显示 [全部] | `boolean` | `false` |
175
+ | onlyOption | 仅显示选择器 | `boolean` | `false` |
176
+ | onlyButton | 仅显示选择按钮 | `boolean` | `false` |
177
+ | filterable | 是否可筛选 | `boolean` | `true` |
178
+ | clearable | 是否可清空 | `boolean` | `true` |
179
+ | buttonDialogText | 按钮文字 | `string` | `'更多'` |
180
+ | size | 按钮大小 | `ElSize` | `'default'` |
181
+ | plain | 按钮 plain | `boolean` | `true` |
182
+ | formRef | 父级组件的表单对象 | `FormInstance` | `null` |
183
+ | validateFieldName | 父级表单验证的字段名(使用时必须同时传递 formRef) | `string` | `''` |
184
+ | limit | 可选择的数量 | `number` | `1` |
185
+ | queryForm | 表单查询参数 | `Record<string, unknown>` | — |
186
+ | initialParams | 初始查询参数 | `Record<string, unknown>` | — |
187
+ | remoteFilterKey | 下拉框查询参数远程过滤参数的 key 值 | `string` | `'name'` |
188
+
189
+ - JnPdfView.vue PDF 文件预览组件
190
+
191
+ | 属性名 | 描述 | 类型 | 默认值 |
192
+ |--------|------|------|--------|
193
+ | fileList | 文件列表 | `FileItem[]` | `[]` |
194
+ | showFileName | 是否显示文件名 | `boolean` | `true` |
195
+ | isPdf | 是否是 pdf 文件(pdf 文件直接预览,其他文件下载) | `boolean` | `false` |
196
+ | windowWidth | 预览窗口宽度 | `number` | `800` |
197
+ | windowHeight | 预览窗口高度 | `number` | `600` |
198
+
199
+ - JnPagination.vue 分页组件
200
+
201
+ | 属性名 | 描述 | 类型 | 默认值 |
202
+ |--------|------|------|--------|
203
+ | modelValue | 分页模型值 | `Pagination` | `{ pageNo: 1, pageSize: 20 }` |
204
+ | total | 总条数 | `number` | `0` |
205
+ | size | 按钮尺寸 | `ComponentSize` | `'small'` |
206
+ | background | 是否带背景色 | `boolean` | `true` |
207
+ | marginTop | 上边距 | `string` | `'10px'` |
208
+
209
+ - JnImportAndExport.vue 导入 & 导出,此组件依赖 JnFileUpload 文件上传组件
210
+
211
+ | 属性名 | 描述 | 类型 | 默认值 |
212
+ |--------|------|------|--------|
213
+ | importTemplateApi | 下载导入模板文件的 api 函数 | `() => Promise<Blob>` | — |
214
+ | importApi | 数据导入 api 函数 | `(data: FormData) => Promise<BusinessResponse>` | — |
215
+ | importFieldName | 数据导入的字段名 | `string` | `'file'` |
216
+ | importParams | 导入的参数 | `Record<string, unknown>` | — |
217
+ | fileUploadConfig | 导入的文件上传配置 | `{ accept: string; limit: number }` | `{ accept: '.xls,.xlsx', limit: 1 }` |
218
+ | importBtnName | 导入的按钮名称 | `string` | `'导入'` |
219
+ | importDisabled | 是否禁用导入按钮 | `boolean` | `false` |
220
+ | exportApi | 数据导出的 api 函数 | `(data: Record<string, unknown>) => Promise<Blob>` | — |
221
+ | exportParams | 导出的参数 | `Record<string, unknown>` | — |
222
+ | exportDynamicParamsConfig | 导出操作时,MessageBox 的参数配置 | `{ label: string; prop: string }` | — |
223
+ | messageBoxInputPattern | MessageBox 中输入框的校验表达式(正则) | `RegExp` | `/^\S+(?:\s+\S+)* $ /` |
224
+ | messageBoxInputErrorMessage | 校验未通过时的提示文本 | `string` | `'请输入参数'` |
225
+ | exportBtnName | 导出的按钮名称 | `string` | `'导出'` |
226
+ | exportDisabled | 是否禁用导出按钮 | `boolean` | `false` |
227
+ | size | 按钮尺寸 | `ElSize` | `'default'` |
228
+ | buttonType | 按钮类型 | `ElButtonType` | `'primary'` |
229
+ | plain | 是否为朴素按钮 | `boolean` | `true` |
230
+ | text | 是否为文字按钮 | `boolean` | `false` |
231
+ | icon | 是否显示图标 | `boolean` | `true` |
232
+
233
+ - JnImageView.vue 图片预览组件
234
+
235
+ | 属性名 | 描述 | 类型 | 默认值 |
236
+ |--------|------|------|--------|
237
+ | src | 图片源地址,同原生属性一致 | `string` | `''` |
238
+ | previewSrcList | 开启图片预览功能 | `FileItem[]` | `[]` |
239
+ | preview | 是否开启预览功能 | `boolean` | `false` |
240
+ | height | 图片高度 | `string` | — |
241
+ | maxHeight | 图片最大高度 | `string` | `'200px'` |
242
+
243
+ - JnFileUpload.vue 通用上传 & 回显组件
244
+
245
+ | 属性名 | 描述 | 类型 | 默认值 |
246
+ |--------|------|------|--------|
247
+ | modelValue | 绑定的模型值(文件列表) | `MixedUploadFile[]` | — |
248
+ | uploadName | 上传的文件字段名 | `string` | `'file'` |
249
+ | drag | 是否启用拖拽上传 | `boolean` | `false` |
250
+ | disabled | 是否禁用 | `boolean` | `false` |
251
+ | showFileList | 是否显示已上传文件列表 | `boolean` | `true` |
252
+ | accept | 接受的文件类型(如 .xls,.xlsx) | `string` | `''` |
253
+ | fileSizeMb | 单个文件大小限制(单位:MB) | `number` | `100` |
254
+ | limit | 最大上传文件数量,0 表示不限制 | `number` | `0` |
255
+ | size | Element Plus 组件的尺寸 | `'' \| 'small' \| 'default' \| 'large'` | `'small'` |
256
+ | formRef | 父级组件的表单引用 | `FormInstance` | — |
257
+ | validateFieldName | 父级表单中用于校验的字段名 | `string` | `''` |
258
+ | downloadFileFn | 文件下载的函数 | `(data: Attachment) => void` | — |
259
+ | autoUploadApi | 自动上传文件的 api 函数 | `(data: File) => void` | — |
260
+
261
+ - JnDialog.vue 表格编辑组件
262
+
263
+ | 属性名 | 描述 | 类型 | 默认值 |
264
+ |--------|------|------|--------|
265
+ | title | 对话框的标题 | `string` | `''` |
266
+ | width | 对话框的宽度 | `string \| number` | `'50%'` |
267
+
268
+ - JnDatetime.vue 显示时间格式化,第一行是日期,第二行是时间
269
+
270
+ | 属性名 | 描述 | 类型 | 默认值 |
271
+ |--------|------|------|--------|
272
+ | value | 时间字符串(支持 ISO 或空格分隔) | `string` | `''` |
273
+ | color | 文字颜色 | `string` | `''` |
274
+
98
275
 
99
276
  #### @jnrs/vue-core/composables 模块
100
277
  Vue 组合式 API
101
- - GlobalSetting 全局偏好设置
278
+ - useMouseSelection 鼠标框选表格进行多选
279
+ - useReactivityTableHeight 响应式根据视口动态计算表格高度
280
+ - useWebSocket WebSocket 封装(支持心跳机制)
@@ -97,6 +97,11 @@ interface Props {
97
97
  * @default 'default'
98
98
  */
99
99
  size?: ElSize;
100
+ /**
101
+ * 按钮 plain
102
+ * @default true
103
+ */
104
+ plain?: boolean;
100
105
  /**
101
106
  * 父级组件的表单对象
102
107
  * @default null