pit-docs-mcp 1.0.2
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 +180 -0
- package/dist/codegen.d.ts +5 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +112 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +10 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +115 -0
- package/dist/resources.d.ts +3 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +80 -0
- package/dist/tools.d.ts +3 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +258 -0
- package/dist/utils.d.ts +26 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +198 -0
- package/docs/codegen/pit-simplify-web.md +686 -0
- package/docs/pitBusinessUi/README.md +102 -0
- package/docs/pitBusinessUi/add-date-picker.md +57 -0
- package/docs/pitBusinessUi/add-operation.md +64 -0
- package/docs/pitBusinessUi/batch-download.md +44 -0
- package/docs/pitBusinessUi/bill-tree-dialog.md +82 -0
- package/docs/pitBusinessUi/collapse.md +88 -0
- package/docs/pitBusinessUi/date-time-picker.md +74 -0
- package/docs/pitBusinessUi/design-report-explain.md +47 -0
- package/docs/pitBusinessUi/dialog.md +89 -0
- package/docs/pitBusinessUi/dic-radio.md +67 -0
- package/docs/pitBusinessUi/dic.md +78 -0
- package/docs/pitBusinessUi/document-preview.md +54 -0
- package/docs/pitBusinessUi/drawer.md +67 -0
- package/docs/pitBusinessUi/editor.md +63 -0
- package/docs/pitBusinessUi/expand-search-form.md +65 -0
- package/docs/pitBusinessUi/file-preview.md +56 -0
- package/docs/pitBusinessUi/flow-table-status.md +47 -0
- package/docs/pitBusinessUi/icon-box.md +74 -0
- package/docs/pitBusinessUi/image-preview.md +55 -0
- package/docs/pitBusinessUi/image.md +53 -0
- package/docs/pitBusinessUi/input-formatter.md +100 -0
- package/docs/pitBusinessUi/input-number.md +47 -0
- package/docs/pitBusinessUi/input-select.md +68 -0
- package/docs/pitBusinessUi/input.md +56 -0
- package/docs/pitBusinessUi/jm-preview.md +47 -0
- package/docs/pitBusinessUi/json-editor.md +71 -0
- package/docs/pitBusinessUi/loading-btn.md +64 -0
- package/docs/pitBusinessUi/monaco.md +82 -0
- package/docs/pitBusinessUi/money-input.md +59 -0
- package/docs/pitBusinessUi/pagination.md +70 -0
- package/docs/pitBusinessUi/password-strength.md +59 -0
- package/docs/pitBusinessUi/positive-number.md +63 -0
- package/docs/pitBusinessUi/preview-image.md +62 -0
- package/docs/pitBusinessUi/preview-office.md +50 -0
- package/docs/pitBusinessUi/preview.md +57 -0
- package/docs/pitBusinessUi/quill.md +52 -0
- package/docs/pitBusinessUi/runflow-btn.md +52 -0
- package/docs/pitBusinessUi/search-date-picker.md +60 -0
- package/docs/pitBusinessUi/select-bid-list.md +66 -0
- package/docs/pitBusinessUi/select-color.md +38 -0
- package/docs/pitBusinessUi/select-contract-tree.md +41 -0
- package/docs/pitBusinessUi/select-dept.md +38 -0
- package/docs/pitBusinessUi/select-project-unit.md +48 -0
- package/docs/pitBusinessUi/select-section-tree.md +45 -0
- package/docs/pitBusinessUi/select-section.md +66 -0
- package/docs/pitBusinessUi/select-string.md +60 -0
- package/docs/pitBusinessUi/select-system-unit.md +41 -0
- package/docs/pitBusinessUi/select-user-by-role.md +51 -0
- package/docs/pitBusinessUi/switch.md +43 -0
- package/docs/pitBusinessUi/table-contract.md +66 -0
- package/docs/pitBusinessUi/table-operation.md +81 -0
- package/docs/pitBusinessUi/table.md +75 -0
- package/docs/pitBusinessUi/tag.md +86 -0
- package/docs/pitBusinessUi/textarea.md +65 -0
- package/docs/pitBusinessUi/transfer-direct.md +57 -0
- package/docs/pitBusinessUi/transfer-user-project.md +78 -0
- package/docs/pitBusinessUi/transfer.md +68 -0
- package/docs/pitBusinessUi/tree-lazy.md +72 -0
- package/docs/pitBusinessUi/tree-select-name.md +59 -0
- package/docs/pitBusinessUi/tree-select-plus.md +106 -0
- package/docs/pitBusinessUi/tree-select.md +86 -0
- package/docs/pitBusinessUi/upload-avatar.md +60 -0
- package/docs/pitBusinessUi/upload-file-dialog.md +86 -0
- package/docs/pitBusinessUi/upload-file.md +77 -0
- package/docs/pitBusinessUi/upload-list-card.md +62 -0
- package/docs/pitBusinessUi/upload-table.md +77 -0
- package/docs/pitBusinessUi/user-transform.md +72 -0
- package/docs/pitBusinessUi/utils.md +272 -0
- package/docs/pitBusinessUtils/README.md +144 -0
- package/docs/pitBusinessUtils/auth.md +170 -0
- package/docs/pitBusinessUtils/clipboard.md +72 -0
- package/docs/pitBusinessUtils/filePreview.md +60 -0
- package/docs/pitBusinessUtils/formValidate.md +75 -0
- package/docs/pitBusinessUtils/generateTitle.md +49 -0
- package/docs/pitBusinessUtils/get-page-title.md +65 -0
- package/docs/pitBusinessUtils/i18n.md +130 -0
- package/docs/pitBusinessUtils/jwks.md +82 -0
- package/docs/pitBusinessUtils/oss.md +391 -0
- package/docs/pitBusinessUtils/passwordValidate.md +120 -0
- package/docs/pitBusinessUtils/pit.md +496 -0
- package/docs/pitBusinessUtils/print.md +126 -0
- package/docs/pitBusinessUtils/request.md +137 -0
- package/docs/pitBusinessUtils/scroll-to.md +68 -0
- package/docs/pitBusinessUtils/utils.md +762 -0
- package/docs/pitBusinessUtils/validate.md +224 -0
- package/docs/pitElementUi/alert.md +238 -0
- package/docs/pitElementUi/avatar.md +147 -0
- package/docs/pitElementUi/backtop.md +60 -0
- package/docs/pitElementUi/badge.md +120 -0
- package/docs/pitElementUi/base-tabs.md +73 -0
- package/docs/pitElementUi/border.md +135 -0
- package/docs/pitElementUi/breadcrumb.md +44 -0
- package/docs/pitElementUi/button.md +301 -0
- package/docs/pitElementUi/calendar.md +66 -0
- package/docs/pitElementUi/card.md +170 -0
- package/docs/pitElementUi/carousel.md +212 -0
- package/docs/pitElementUi/cascader.md +1966 -0
- package/docs/pitElementUi/checkbox.md +283 -0
- package/docs/pitElementUi/collapse.md +131 -0
- package/docs/pitElementUi/color-picker.md +123 -0
- package/docs/pitElementUi/color.md +244 -0
- package/docs/pitElementUi/container.md +240 -0
- package/docs/pitElementUi/custom-theme.md +131 -0
- package/docs/pitElementUi/date-picker.md +448 -0
- package/docs/pitElementUi/datetime-picker.md +254 -0
- package/docs/pitElementUi/descriptions.md +191 -0
- package/docs/pitElementUi/dialog-header.md +53 -0
- package/docs/pitElementUi/dialog.md +239 -0
- package/docs/pitElementUi/divider.md +61 -0
- package/docs/pitElementUi/drawer.md +307 -0
- package/docs/pitElementUi/dropdown.md +308 -0
- package/docs/pitElementUi/empty.md +61 -0
- package/docs/pitElementUi/font-family.md +90 -0
- package/docs/pitElementUi/form-base.md +1239 -0
- package/docs/pitElementUi/form-item-checkbox-group.md +48 -0
- package/docs/pitElementUi/form-item-date.md +60 -0
- package/docs/pitElementUi/form-item-dic.md +18 -0
- package/docs/pitElementUi/form-item-editor.md +16 -0
- package/docs/pitElementUi/form-item-input-money.md +19 -0
- package/docs/pitElementUi/form-item-input-number.md +20 -0
- package/docs/pitElementUi/form-item-input.md +18 -0
- package/docs/pitElementUi/form-item-radio-group.md +21 -0
- package/docs/pitElementUi/form-item-select.md +21 -0
- package/docs/pitElementUi/form-item-switch.md +15 -0
- package/docs/pitElementUi/form-item-textarea.md +20 -0
- package/docs/pitElementUi/form-item-tree-select.md +27 -0
- package/docs/pitElementUi/form-item-upload-card.md +18 -0
- package/docs/pitElementUi/form-item-upload.md +1 -0
- package/docs/pitElementUi/form-two.md +102 -0
- package/docs/pitElementUi/form.md +952 -0
- package/docs/pitElementUi/i18n.md +228 -0
- package/docs/pitElementUi/icon-custom.md +99 -0
- package/docs/pitElementUi/icon-line-custom.md +12 -0
- package/docs/pitElementUi/icon.md +28 -0
- package/docs/pitElementUi/image.md +178 -0
- package/docs/pitElementUi/infiniteScroll.md +87 -0
- package/docs/pitElementUi/input-number.md +197 -0
- package/docs/pitElementUi/input-select.md +1 -0
- package/docs/pitElementUi/input.md +800 -0
- package/docs/pitElementUi/installation.md +9 -0
- package/docs/pitElementUi/layout-column.md +376 -0
- package/docs/pitElementUi/layout-tree.md +715 -0
- package/docs/pitElementUi/layout.md +354 -0
- package/docs/pitElementUi/link.md +66 -0
- package/docs/pitElementUi/loading.md +208 -0
- package/docs/pitElementUi/menu.md +403 -0
- package/docs/pitElementUi/message-box.md +326 -0
- package/docs/pitElementUi/message.md +219 -0
- package/docs/pitElementUi/notification.md +311 -0
- package/docs/pitElementUi/page-header.md +40 -0
- package/docs/pitElementUi/pagination.md +200 -0
- package/docs/pitElementUi/popconfirm.md +60 -0
- package/docs/pitElementUi/popover.md +167 -0
- package/docs/pitElementUi/progress.md +178 -0
- package/docs/pitElementUi/quickstart.md +290 -0
- package/docs/pitElementUi/radio.md +211 -0
- package/docs/pitElementUi/rate.md +135 -0
- package/docs/pitElementUi/result.md +76 -0
- package/docs/pitElementUi/select-tree.md +661 -0
- package/docs/pitElementUi/select.md +586 -0
- package/docs/pitElementUi/skeleton.md +316 -0
- package/docs/pitElementUi/slider.md +237 -0
- package/docs/pitElementUi/steps.md +154 -0
- package/docs/pitElementUi/switch.md +142 -0
- package/docs/pitElementUi/table.md +4023 -0
- package/docs/pitElementUi/tabs.md +303 -0
- package/docs/pitElementUi/tag.md +203 -0
- package/docs/pitElementUi/time-picker.md +199 -0
- package/docs/pitElementUi/timeline.md +154 -0
- package/docs/pitElementUi/tooltip.md +177 -0
- package/docs/pitElementUi/transfer.md +249 -0
- package/docs/pitElementUi/transition.md +155 -0
- package/docs/pitElementUi/tree.md +1157 -0
- package/docs/pitElementUi/typography.md +151 -0
- package/docs/pitElementUi/upload-table.md +39 -0
- package/docs/pitElementUi/upload.md +392 -0
- package/docs/pitElementUi/virtual-list.md +154 -0
- package/docs/pitElementUi/virtual-select-tree.md +243 -0
- package/docs/pitElementUi/virtual-select.md +451 -0
- package/docs/pitElementUi/virtual-table-column.md +1 -0
- package/docs/pitElementUi/virtual-table.md +490 -0
- package/docs/pitElementUi/virtual-tree.md +119 -0
- package/package.json +33 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# pit-upload-file-dialog 文件上传(弹窗式)
|
|
2
|
+
|
|
3
|
+
将文件列表管理放入弹窗,提供"上传输入框 + 触发按钮"的外观,点击打开管理弹窗后再保存。
|
|
4
|
+
|
|
5
|
+
## 前置依赖
|
|
6
|
+
|
|
7
|
+
与 `PitUploadFile` 一致:需注入 `this.env`、`this.request`、`this.isOk`。
|
|
8
|
+
|
|
9
|
+
## Props
|
|
10
|
+
|
|
11
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| value / v-model | 已上传文件 ID 串(逗号分隔) | String | `""` |
|
|
14
|
+
| limit | 最大上传数量 | Number | `10` |
|
|
15
|
+
| multiple | 是否支持多选 | Boolean | `false` |
|
|
16
|
+
| fileType | 允许的文件后缀数组 | Array | `[]` |
|
|
17
|
+
| fileSize | 单文件最大体积(MB) | Number | `5000` |
|
|
18
|
+
| drag | 是否支持拖拽 | Boolean | `false` |
|
|
19
|
+
| disabled | 是否禁用 | Boolean | `false` |
|
|
20
|
+
| hasSlice | 是否开启分片上传 | Boolean | `true` |
|
|
21
|
+
| autoSliceSize | 触发分片的文件大小阈值(MB) | Number | `50` |
|
|
22
|
+
| accept | 原生 accept 属性 | String | `"*"` |
|
|
23
|
+
| placeholder | 输入框占位文本 | String | `"请上传文件"` |
|
|
24
|
+
| isUploadInput | 是否显示展示文件名的输入框 | Boolean | `true` |
|
|
25
|
+
| isUploadBtn | 是否显示触发弹窗的按钮 | Boolean | `true` |
|
|
26
|
+
| buttonType | 触发按钮类型 | String | `"primary"` |
|
|
27
|
+
| buttonText | 触发按钮文案 | String | `"上传文件"` |
|
|
28
|
+
| buttonSize | 触发按钮大小 | String | `"small"` |
|
|
29
|
+
| fileBtnText | 弹窗内上传按钮文案 | String | `"点击上传"` |
|
|
30
|
+
| delBtnText | 弹窗内批量清空按钮文案 | String | `"清空列表"` |
|
|
31
|
+
| isHiddenPreviewBtn | 是否显示文件预览按钮 | Boolean | `true` |
|
|
32
|
+
| isHiddenDownloadBtn | 是否显示文件下载按钮 | Boolean | `true` |
|
|
33
|
+
| isHiddenDeleteBtn | 是否显示文件删除按钮 | Boolean | `true` |
|
|
34
|
+
| isHiddenFileBtn | 是否显示上传按钮(弹窗内) | Boolean | `true` |
|
|
35
|
+
| isHiddenFileBatchDelete | 是否显示批量删除按钮 | Boolean | `true` |
|
|
36
|
+
| bucketAccessPolicy | 存储桶访问策略 | String / Number | `null` |
|
|
37
|
+
| otherData | 额外上传参数 | Object | `{}` |
|
|
38
|
+
|
|
39
|
+
## Events
|
|
40
|
+
|
|
41
|
+
| 事件名 | 说明 | 参数 |
|
|
42
|
+
| --- | --- | --- |
|
|
43
|
+
| input | 点击"确认"后触发(v-model) | `String`(逗号分隔 ID) |
|
|
44
|
+
| file-success | 点击确认后返回文件列表和 ID 串 | `FileList[]`,`String` |
|
|
45
|
+
| preview | 点击文件预览按钮时触发 | `FileItem`,`Number`(index) |
|
|
46
|
+
|
|
47
|
+
## 示例
|
|
48
|
+
|
|
49
|
+
### 基础用法
|
|
50
|
+
|
|
51
|
+
```vue
|
|
52
|
+
<pit-upload-file-dialog v-model="form.attachments" />
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 只读模式(仅预览,不可上传/删除)
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<pit-upload-file-dialog
|
|
59
|
+
v-model="form.attachments"
|
|
60
|
+
:is-hidden-file-btn="false"
|
|
61
|
+
:is-hidden-delete-btn="false"
|
|
62
|
+
:is-hidden-file-batch-delete="false"
|
|
63
|
+
:disabled="true" />
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 监听预览事件
|
|
67
|
+
|
|
68
|
+
```vue
|
|
69
|
+
<pit-upload-file-dialog
|
|
70
|
+
v-model="form.attachments"
|
|
71
|
+
@preview="handlePreview" />
|
|
72
|
+
|
|
73
|
+
<script>
|
|
74
|
+
methods: {
|
|
75
|
+
handlePreview(item, index) {
|
|
76
|
+
// item: { fileUploadRecordId, originalFilename, ... }
|
|
77
|
+
this.$openFilePreview(item.fileUploadRecordId)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
</script>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 注意事项
|
|
84
|
+
|
|
85
|
+
- 文件不会在点击删除时立即调接口删除,而是**点击确认后才同步 value**。
|
|
86
|
+
- `isHiddenXxx` 命名语义为"是否显示"(`true` 显示,`false` 隐藏),注意不要误读为"是否隐藏"。
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# pit-upload-file 文件上传
|
|
2
|
+
|
|
3
|
+
基于 `el-upload` 封装,支持普通上传与分片上传,文件 ID 以逗号分隔字符串存储。
|
|
4
|
+
|
|
5
|
+
## 前置依赖
|
|
6
|
+
|
|
7
|
+
- 项目需注入 `this.env.VUE_APP_BASE_API`(上传接口 base URL)
|
|
8
|
+
- 需注入 `this.request`(HTTP 请求方法,分片上传时使用)
|
|
9
|
+
- 需注入 `this.isOk`(接口成功状态码,默认对比 `res.code`)
|
|
10
|
+
|
|
11
|
+
## Props
|
|
12
|
+
|
|
13
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
14
|
+
| --- | --- | --- | --- |
|
|
15
|
+
| value / v-model | 已上传文件 ID(逗号分隔字符串) | String | `""` |
|
|
16
|
+
| limit | 最大上传数量 | Number | `10` |
|
|
17
|
+
| multiple | 是否支持多选文件 | Boolean | `true` |
|
|
18
|
+
| fileType | 允许的文件后缀数组(空数组不限制) | Array | `[]` |
|
|
19
|
+
| fileSize | 单文件最大体积(MB) | Number | `50` |
|
|
20
|
+
| drag | 是否启用拖拽上传 | Boolean | `false` |
|
|
21
|
+
| showFileList | 是否显示文件列表 | Boolean | `true` |
|
|
22
|
+
| showFileTips | 是否显示格式/大小提示 | Boolean | `true` |
|
|
23
|
+
| disabled | 是否禁用 | Boolean | `false` |
|
|
24
|
+
| hasSlice | 是否启用分片上传 | Boolean | `false` |
|
|
25
|
+
| autoSliceSize | 触发分片上传的文件大小阈值(MB) | Number | `50` |
|
|
26
|
+
| accept | 原生 accept 属性 | String | `"*"` |
|
|
27
|
+
| bucketAccessPolicy | 存储桶访问策略 | String / Number | `null` |
|
|
28
|
+
| otherData | 额外上传参数(合并到 POST 请求) | Object | `{}` |
|
|
29
|
+
| fileBtnText | 上传按钮文案 | String | `"点击上传"` |
|
|
30
|
+
|
|
31
|
+
## Events
|
|
32
|
+
|
|
33
|
+
| 事件名 | 说明 | 参数 |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| input | 上传/删除文件后更新 ID 串(v-model) | `String`(逗号分隔) |
|
|
36
|
+
| change | 同 input | `String`,`FileResponse` |
|
|
37
|
+
| preview | 文件列表初始化完成后触发 | `Array`(文件对象列表) |
|
|
38
|
+
| file-success | 分片上传成功后触发 | `FileObj`,`FileList` |
|
|
39
|
+
|
|
40
|
+
## 示例
|
|
41
|
+
|
|
42
|
+
### 基础用法
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<pit-upload-file v-model="form.attachments" />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 限制类型与大小
|
|
49
|
+
|
|
50
|
+
```vue
|
|
51
|
+
<pit-upload-file
|
|
52
|
+
v-model="form.attachments"
|
|
53
|
+
:file-type="['pdf', 'doc', 'docx']"
|
|
54
|
+
:file-size="20"
|
|
55
|
+
:limit="5" />
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 启用分片上传(大文件)
|
|
59
|
+
|
|
60
|
+
```vue
|
|
61
|
+
<pit-upload-file
|
|
62
|
+
v-model="form.attachments"
|
|
63
|
+
:has-slice="true"
|
|
64
|
+
:auto-slice-size="10" />
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 拖拽上传
|
|
68
|
+
|
|
69
|
+
```vue
|
|
70
|
+
<pit-upload-file v-model="form.attachments" drag />
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 注意事项
|
|
74
|
+
|
|
75
|
+
- `value` 存储的是文件 ID(`fileUploadRecordId`),不是文件 URL。
|
|
76
|
+
- 组件初始化会根据传入的 ID 串自动调接口获取文件列表展示。
|
|
77
|
+
- 分片上传依赖 `this.request`、`this.env`、`this.isOk` 全局注入,需在项目根实例或混入中提供。
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# pit-upload-list-card 图片卡片上传
|
|
2
|
+
|
|
3
|
+
图片卡片式多图上传,展示缩略图列表,支持预览、重命名、删除,基于 `el-upload` 的 `picture-card` 模式。
|
|
4
|
+
|
|
5
|
+
## 前置依赖
|
|
6
|
+
|
|
7
|
+
- `this.request` / `this.env.VUE_APP_BASE_API` — 上传接口
|
|
8
|
+
- `pit-business-utils` — `reqOssListImage`、`reqOssRename`、`getToken`
|
|
9
|
+
|
|
10
|
+
## Props
|
|
11
|
+
|
|
12
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
13
|
+
| --- | --- | --- | --- |
|
|
14
|
+
| value / v-model | 文件 ID 字符串(逗号分隔)或 ID 数组 | Array / String | `""` |
|
|
15
|
+
| disabled | 是否禁用 | Boolean | `false` |
|
|
16
|
+
| size | 卡片尺寸(`"normal"` / `"small"` / `"mini"`) | String | `"normal"` |
|
|
17
|
+
| limit | 最大上传数量(`0` 表示无限制) | Number | `0` |
|
|
18
|
+
| fileSize | 单文件大小上限(MB) | Number | `50` |
|
|
19
|
+
| accept | 允许的文件类型(MIME 或扩展名) | String | `"image/*"` |
|
|
20
|
+
| multiple | 是否支持多文件同时上传 | Boolean | — |
|
|
21
|
+
| drag | 是否支持拖拽上传 | Boolean | — |
|
|
22
|
+
| beforeUploadCheck | 上传前自定义校验函数(返回 `true` 才继续上传) | Function | `() => true` |
|
|
23
|
+
| isShowDel | 是否显示删除按钮 | Boolean | `true` |
|
|
24
|
+
|
|
25
|
+
## Events
|
|
26
|
+
|
|
27
|
+
| 事件名 | 说明 | 参数 |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| input | 上传/删除后更新值(v-model) | `String`(逗号分隔 ID) |
|
|
30
|
+
|
|
31
|
+
## 示例
|
|
32
|
+
|
|
33
|
+
### 基础用法
|
|
34
|
+
|
|
35
|
+
```vue
|
|
36
|
+
<pit-upload-list-card v-model="form.imageIds" />
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 限制数量和格式
|
|
40
|
+
|
|
41
|
+
```vue
|
|
42
|
+
<pit-upload-list-card
|
|
43
|
+
v-model="form.photoIds"
|
|
44
|
+
:limit="9"
|
|
45
|
+
:file-size="10"
|
|
46
|
+
accept="image/jpeg,image/png" />
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 只读展示
|
|
50
|
+
|
|
51
|
+
```vue
|
|
52
|
+
<pit-upload-list-card
|
|
53
|
+
v-model="form.imageIds"
|
|
54
|
+
:disabled="true"
|
|
55
|
+
:is-show-del="false" />
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 注意事项
|
|
59
|
+
|
|
60
|
+
- 卡片内置支持"重命名"功能,通过弹窗输入新名称后调用 `reqOssRename` API 更新文件名。
|
|
61
|
+
- 点击预览图标调用 `el-image` 内置查看器;点击删除图标(非禁用状态)移除文件。
|
|
62
|
+
- `value` 支持逗号分隔字符串和数组两种格式,组件内部统一转换为文件列表。
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# pit-upload-table 表格式附件上传
|
|
2
|
+
|
|
3
|
+
带标题栏和 `el-form-item` 包裹的附件上传组件,内部使用 `PitUploadList` 展示文件列表,点击文件可触发内置预览。
|
|
4
|
+
|
|
5
|
+
## 前置依赖
|
|
6
|
+
|
|
7
|
+
- `this.request` / `this.env.VUE_APP_BASE_API` — 上传接口
|
|
8
|
+
- `pit-business-utils` — `fileType`、`reqOssDownload`
|
|
9
|
+
|
|
10
|
+
## Props
|
|
11
|
+
|
|
12
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
13
|
+
| --- | --- | --- | --- |
|
|
14
|
+
| value / v-model | 文件 ID 字符串(逗号分隔) | String | — |
|
|
15
|
+
| label | `el-form-item` 标签文字 | String | 国际化"附件" |
|
|
16
|
+
| propKey | `el-form-item` 的 prop(表单校验字段名) | String | `"fileId"` |
|
|
17
|
+
| title | 区块标题(`noTitle=false` 时显示) | String | 国际化"附件信息" |
|
|
18
|
+
| noTitle | 是否隐藏区块标题 | Boolean | `false` |
|
|
19
|
+
| noFormItem | 是否不渲染 `el-form-item` 包裹 | Boolean | `false` |
|
|
20
|
+
| disabled | 是否禁用上传 | Boolean | `false` |
|
|
21
|
+
| isShowBtn | 是否显示上传按钮 | Boolean | `true` |
|
|
22
|
+
| browse | 是否仅浏览(隐藏预览按钮,用于模型管理) | Boolean | `false` |
|
|
23
|
+
| previewType | 预览类型:`"preview"` / `"openFilePreview"` | String | `"preview"` |
|
|
24
|
+
| previewCallBack | 自定义预览回调(传入后替代内置预览) | Function | `null` |
|
|
25
|
+
| baseUrl | 上传接口 Base URL(覆盖默认) | String | `""` |
|
|
26
|
+
| drag | 是否启用拖拽上传(`null` 时读取全局 `$Business.uploadDefaultDrag`) | Boolean / null | `null` |
|
|
27
|
+
|
|
28
|
+
> 其余属性通过 `v-bind="$attrs"` / `v-on="$listeners"` 向内透传至 `PitUploadList`。
|
|
29
|
+
|
|
30
|
+
## Events
|
|
31
|
+
|
|
32
|
+
| 事件名 | 说明 | 参数 |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| input | 值变化(v-model) | `String`(逗号分隔 ID) |
|
|
35
|
+
| preview | 点击文件名预览时触发 | `fileObj` |
|
|
36
|
+
| download | 点击下载时触发 | `fileObj` |
|
|
37
|
+
|
|
38
|
+
## Slots
|
|
39
|
+
|
|
40
|
+
| 插槽名 | 说明 |
|
|
41
|
+
| --- | --- |
|
|
42
|
+
| fileTip | 上传区域下方的提示文字 |
|
|
43
|
+
|
|
44
|
+
## 示例
|
|
45
|
+
|
|
46
|
+
### 标准用法(表单内)
|
|
47
|
+
|
|
48
|
+
```vue
|
|
49
|
+
<pit-upload-table
|
|
50
|
+
v-model="form.fileId"
|
|
51
|
+
prop-key="fileId"
|
|
52
|
+
label="附件材料" />
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 无标题、无 FormItem 包裹
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<pit-upload-table
|
|
59
|
+
v-model="form.fileId"
|
|
60
|
+
no-title
|
|
61
|
+
no-form-item />
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 自定义上传提示
|
|
65
|
+
|
|
66
|
+
```vue
|
|
67
|
+
<pit-upload-table v-model="form.fileId">
|
|
68
|
+
<template slot="fileTip">
|
|
69
|
+
<span class="text-gray">仅支持 PDF、Word(≤50MB)</span>
|
|
70
|
+
</template>
|
|
71
|
+
</pit-upload-table>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 注意事项
|
|
75
|
+
|
|
76
|
+
- `drag` prop 为 `null` 时,组件读取 `this.$Business.uploadDefaultDrag` 全局配置决定是否显示拖拽区域。
|
|
77
|
+
- 内置预览支持 PDF、Office、视频、BIM 模型等类型(通过 `PitPreview` 分发),具体格式判断依赖 `pit-business-utils` 的 `fileType`。
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# pit-user-transform 用户穿梭选择器
|
|
2
|
+
|
|
3
|
+
左右双栏用户选择组件。左栏以懒加载树展示组织架构,支持关键词搜索;右栏显示已选用户列表,支持逐条删除或一键清空。与 `PitTransfer` 系列不同,内置调用用户/组织 API。
|
|
4
|
+
|
|
5
|
+
## 前置依赖
|
|
6
|
+
|
|
7
|
+
- `pit-business-utils` — `getImUserSelector`(关键词搜索用户)、`getOrganization`(懒加载组织树)
|
|
8
|
+
- mixin:`getFullName(data)` — 计算用户显示名称(`姓名(账号)`)
|
|
9
|
+
|
|
10
|
+
## Props
|
|
11
|
+
|
|
12
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
13
|
+
| --- | --- | --- | --- |
|
|
14
|
+
| value / v-model | 已选用户数据对象数组 | Array | `[]` |
|
|
15
|
+
| multiple | 是否允许多选(`false` 时点击自动替换当前选中) | Boolean | `false` |
|
|
16
|
+
| height | 组件总高度 | String | `"420px"` |
|
|
17
|
+
|
|
18
|
+
## Events
|
|
19
|
+
|
|
20
|
+
| 事件名 | 说明 | 参数 |
|
|
21
|
+
| --- | --- | --- |
|
|
22
|
+
| input | 已选用户列表变化(v-model) | `Array`(用户对象数组) |
|
|
23
|
+
|
|
24
|
+
## 示例
|
|
25
|
+
|
|
26
|
+
### 单选(选择审批人)
|
|
27
|
+
|
|
28
|
+
```vue
|
|
29
|
+
<pit-user-transform
|
|
30
|
+
v-model="form.approver"
|
|
31
|
+
:multiple="false" />
|
|
32
|
+
|
|
33
|
+
<!-- form.approver 为长度 ≤ 1 的数组 -->
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 多选(选择抄送人)
|
|
37
|
+
|
|
38
|
+
```vue
|
|
39
|
+
<pit-user-transform
|
|
40
|
+
v-model="form.ccUsers"
|
|
41
|
+
:multiple="true"
|
|
42
|
+
height="500px" />
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 在弹窗中使用
|
|
46
|
+
|
|
47
|
+
```vue
|
|
48
|
+
<pit-dialog
|
|
49
|
+
title="选择用户"
|
|
50
|
+
:visible.sync="userPickerVisible"
|
|
51
|
+
width="700px">
|
|
52
|
+
<pit-user-transform
|
|
53
|
+
v-model="tempUsers"
|
|
54
|
+
:multiple="true" />
|
|
55
|
+
<div slot="footer">
|
|
56
|
+
<el-button @click="userPickerVisible = false">取消</el-button>
|
|
57
|
+
<el-button type="primary" @click="confirmUsers">确认</el-button>
|
|
58
|
+
</div>
|
|
59
|
+
</pit-dialog>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 交互说明
|
|
63
|
+
|
|
64
|
+
1. **左栏树**:懒加载组织架构(点击展开),支持在搜索框输入关键词后按 Enter 或点击搜索按钮过滤用户。
|
|
65
|
+
2. **选中高亮**:已在右栏的用户在左树中以不同样式高亮显示。
|
|
66
|
+
3. **右栏操作**:逐条 × 删除 或"清空"按钮一键清除所有已选。
|
|
67
|
+
|
|
68
|
+
## 注意事项
|
|
69
|
+
|
|
70
|
+
- 组件注册名为 `user-transform`,但源码中组件名为 `PitUserTransform`(非 `PitUserTransfer`),注意与 `PitTransfer` 系列的区分。
|
|
71
|
+
- `value` 数组中每个用户对象由 API 返回的原始结构组成,`getFullName(data)` mixin 从 `data.name`(姓名)和 `data.loginName`(账号)生成显示文字。
|
|
72
|
+
- 非 `multiple` 模式下,点击新用户自动替换已选用户(右栏始终 ≤ 1 条)。
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
# 原型工具函数
|
|
2
|
+
|
|
3
|
+
安装 `PitBusinessUI` 后,以下方法挂载到 `Vue.prototype`,在任意组件中通过 `this.$xxx()` 调用。**所有方法均以 `this` 作为上下文执行**,内部调用 `this.request`、`this.$message` 等,须在组件实例内使用(不可在普通函数中直接调用)。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 文件下载系列
|
|
8
|
+
|
|
9
|
+
### `$downloadFile(fileId, progressOptions?)`
|
|
10
|
+
|
|
11
|
+
通过文件 ID 从 OSS 下载单个文件,顶部显示 NProgress 进度条。
|
|
12
|
+
|
|
13
|
+
**参数**
|
|
14
|
+
|
|
15
|
+
| 参数 | 说明 | 类型 | 必填 |
|
|
16
|
+
| --- | --- | --- | --- |
|
|
17
|
+
| fileId | 文件上传记录 ID(`fileUploadRecordId`) | String | ✅ |
|
|
18
|
+
| progressOptions | NProgress 配置项(如 `{ minimum: 0.1 }`) | Object | — |
|
|
19
|
+
|
|
20
|
+
**流程**
|
|
21
|
+
|
|
22
|
+
1. 调用 `/api/oss/info/:fileId` 获取原始文件名
|
|
23
|
+
2. 调用 `/api/oss/download?fileUploadRecordId=xxx` 以 blob 方式下载
|
|
24
|
+
3. 通过 `js-file-download` 触发浏览器保存对话框
|
|
25
|
+
|
|
26
|
+
**示例**
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
// 下载单个附件
|
|
30
|
+
this.$downloadFile(row.fileUploadRecordId)
|
|
31
|
+
|
|
32
|
+
// 自定义 NProgress 最小进度
|
|
33
|
+
this.$downloadFile(fileId, { minimum: 0.05 })
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### `$downloadZip(fileIds, fileName?)`
|
|
39
|
+
|
|
40
|
+
将多个文件 ID 打包为 ZIP 后下载。
|
|
41
|
+
|
|
42
|
+
**参数**
|
|
43
|
+
|
|
44
|
+
| 参数 | 说明 | 类型 | 必填 |
|
|
45
|
+
| --- | --- | --- | --- |
|
|
46
|
+
| fileIds | 文件 ID 数组 | Array\<String\> | ✅ |
|
|
47
|
+
| fileName | ZIP 文件名(含 `.zip` 后缀) | String | — |
|
|
48
|
+
|
|
49
|
+
**接口**:`POST /api/oss/download-zip`,请求体 `{ parentFileName, fileIds }`
|
|
50
|
+
|
|
51
|
+
**示例**
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
this.$downloadZip(['id1', 'id2', 'id3'], '合同附件.zip')
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### `$downloadBlob(blob, fileName?, isTip?)`
|
|
60
|
+
|
|
61
|
+
直接将内存中的 Blob 对象保存为文件,常用于接口返回二进制流的场景。
|
|
62
|
+
|
|
63
|
+
**参数**
|
|
64
|
+
|
|
65
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
66
|
+
| --- | --- | --- | --- |
|
|
67
|
+
| blob | Blob 对象 | Blob | — |
|
|
68
|
+
| fileName | 保存的文件名 | String | `"导入模板"` |
|
|
69
|
+
| isTip | 是否弹出下载成功提示 | Boolean | `true` |
|
|
70
|
+
|
|
71
|
+
**示例**
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
this.request({ url: '/api/report/export', responseType: 'blob' }).then(res => {
|
|
75
|
+
this.$downloadBlob(res.data, '月度报表.xlsx')
|
|
76
|
+
})
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### `$downloadUrl(url, fileName?, type?)`
|
|
82
|
+
|
|
83
|
+
通过 XHR 下载远程 URL 的文件内容(GET 请求),不带鉴权头,适合下载公开静态资源(如模板文件)。
|
|
84
|
+
|
|
85
|
+
**参数**
|
|
86
|
+
|
|
87
|
+
| 参数 | 说明 | 类型 | 默认值 |
|
|
88
|
+
| --- | --- | --- | --- |
|
|
89
|
+
| url | 文件完整 URL | String | — |
|
|
90
|
+
| fileName | 保存的文件名 | String | `"导入模板"` |
|
|
91
|
+
| type | Blob MIME 类型 | String | `"text/csv"` |
|
|
92
|
+
|
|
93
|
+
**示例**
|
|
94
|
+
|
|
95
|
+
```js
|
|
96
|
+
// 下载 CSV 模板
|
|
97
|
+
this.$downloadUrl(
|
|
98
|
+
'https://cdn.example.com/templates/import.csv',
|
|
99
|
+
'标准导入模板.csv',
|
|
100
|
+
'text/csv'
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
// 下载 Excel 模板
|
|
104
|
+
this.$downloadUrl(templateUrl, '导入模板.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### `$exportMeted(response, fileName?)`
|
|
110
|
+
|
|
111
|
+
将 Axios 响应对象中的 blob 数据保存为文件,自动从响应头 `content-disposition` 提取文件名。
|
|
112
|
+
|
|
113
|
+
**参数**
|
|
114
|
+
|
|
115
|
+
| 参数 | 说明 | 类型 |
|
|
116
|
+
| --- | --- | --- |
|
|
117
|
+
| response | Axios 完整响应对象(需设置 `responseType: 'blob'`) | AxiosResponse |
|
|
118
|
+
| fileName | 兜底文件名(优先使用响应头中的文件名) | String |
|
|
119
|
+
|
|
120
|
+
**示例**
|
|
121
|
+
|
|
122
|
+
```js
|
|
123
|
+
this.request({
|
|
124
|
+
url: '/api/export/contract',
|
|
125
|
+
method: 'post',
|
|
126
|
+
data: this.queryParams,
|
|
127
|
+
responseType: 'blob'
|
|
128
|
+
}).then(res => {
|
|
129
|
+
this.$exportMeted(res, '合同列表导出.xlsx')
|
|
130
|
+
})
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 文件预览
|
|
136
|
+
|
|
137
|
+
### `$openFilePreview(fileId, option?)`
|
|
138
|
+
|
|
139
|
+
根据文件格式自动选择预览策略,新窗口打开(图片格式使用页内浮层)。
|
|
140
|
+
|
|
141
|
+
**参数**
|
|
142
|
+
|
|
143
|
+
| 参数 | 说明 | 类型 | 必填 |
|
|
144
|
+
| --- | --- | --- | --- |
|
|
145
|
+
| fileId | 文件上传记录 ID | String | ✅ |
|
|
146
|
+
| option | 预览选项(见下表) | Object | — |
|
|
147
|
+
|
|
148
|
+
**option 字段**
|
|
149
|
+
|
|
150
|
+
| 字段 | 说明 | 类型 | 默认值 |
|
|
151
|
+
| --- | --- | --- | --- |
|
|
152
|
+
| `key` | 预览路由传参方式(`"fileObj"` 或自定义) | String | `"fileObj"` |
|
|
153
|
+
| `watermark` | 水印配置对象(`{ text, watermark_alpha, watermark_angle }`) | Object | `null` |
|
|
154
|
+
| `onBeforeOpend` | 打开新窗口前的回调 | Function(fileInfo) | — |
|
|
155
|
+
| `onOpened` | 新窗口 `onload` 后的回调 | Function(win, fileInfo) | — |
|
|
156
|
+
| `onClosed` | 新窗口关闭后的回调(轮询检测) | Function(win, fileInfo) | — |
|
|
157
|
+
| `onError` | 方法内部异常的回调 | Function(error) | — |
|
|
158
|
+
| `onApiSuccess` | 接口成功回调 | Function(url, response) | — |
|
|
159
|
+
| `onApiError` | 接口失败回调 | Function(url, error) | — |
|
|
160
|
+
|
|
161
|
+
**预览策略**
|
|
162
|
+
|
|
163
|
+
| 文件格式 | 策略 |
|
|
164
|
+
| --- | --- |
|
|
165
|
+
| `png / jpg / jpeg / ico` | 页内图片浏览器(`PitPreviewImage` 浮层) |
|
|
166
|
+
| `xlsx / xls / doc / docx / pdf` | 打开 `/previewOffice_0X1` 路由页(`key="fileObj"` 时跳转 `/preview`) |
|
|
167
|
+
| 其他 | 提示"不支持预览" |
|
|
168
|
+
|
|
169
|
+
**示例**
|
|
170
|
+
|
|
171
|
+
```js
|
|
172
|
+
// 基础用法
|
|
173
|
+
this.$openFilePreview(row.fileUploadRecordId)
|
|
174
|
+
|
|
175
|
+
// 携带水印
|
|
176
|
+
this.$openFilePreview(fileId, {
|
|
177
|
+
watermark: {
|
|
178
|
+
text: `${this.userInfo.username} ${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}`,
|
|
179
|
+
watermark_alpha: 0.2
|
|
180
|
+
},
|
|
181
|
+
onClosed: () => {
|
|
182
|
+
this.$message.info('预览窗口已关闭')
|
|
183
|
+
}
|
|
184
|
+
})
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## 通用导入弹窗
|
|
190
|
+
|
|
191
|
+
### `$openBaseImport(option)`
|
|
192
|
+
|
|
193
|
+
以编程方式创建并挂载通用导入弹窗,弹窗提供"下载模板"和"上传文件"两步交互,无需在模板中声明组件。
|
|
194
|
+
|
|
195
|
+
**option 字段**
|
|
196
|
+
|
|
197
|
+
| 字段 | 说明 | 类型 | 默认值 |
|
|
198
|
+
| --- | --- | --- | --- |
|
|
199
|
+
| `title` | 弹窗标题 | String | `"导入"` |
|
|
200
|
+
| `templateInterface` | 下载模板的接口 URL | String | — |
|
|
201
|
+
| `templateInterfaceMethod` | 下载模板接口请求方法 | String | `"POST"` |
|
|
202
|
+
| `templateParams` | 下载模板接口附加参数 | Object | `{}` |
|
|
203
|
+
| `templateFileName` | 模板保存文件名(优先于响应头) | String | — |
|
|
204
|
+
| `importInterface` | 上传导入的接口 URL | String | — |
|
|
205
|
+
| `importInterfaceMethod` | 上传接口请求方法 | String | `"POST"` |
|
|
206
|
+
| `importParams` | 上传接口附加 URL 参数 | Object | `{}` |
|
|
207
|
+
| `importData` | 上传接口附加 FormData 字段 | Object | `{}` |
|
|
208
|
+
| `limit` | 单次上传文件数量限制 | Number | `1` |
|
|
209
|
+
| `category` | OSS 文件分类标识 | String | `""` |
|
|
210
|
+
| `accept` | 允许的文件类型 | String | `".xls,.xlsx,.xlsb,.xlsm,.xlst"` |
|
|
211
|
+
| `importResponseType` | 导入接口响应类型 | String | `"blob"` |
|
|
212
|
+
| `beforeUpload` | 自定义上传前钩子(替换默认上传按钮行为) | Function(app) | `null` |
|
|
213
|
+
| `beforeImportParams` | 修改 FormData 的钩子 | Function(formData) | `null` |
|
|
214
|
+
| `beforeHttpRequest` | 完全接管 HTTP 请求的钩子 | Function(file) | `null` |
|
|
215
|
+
| `success` | 导入成功回调 | Function(app, responseData) | — |
|
|
216
|
+
| `close` | 弹窗关闭回调 | Function(app) | — |
|
|
217
|
+
|
|
218
|
+
**返回值**:弹窗 Vue 实例 `app`,可调用 `app.close()` 编程关闭。
|
|
219
|
+
|
|
220
|
+
**示例**
|
|
221
|
+
|
|
222
|
+
```js
|
|
223
|
+
// 基础用法:模板下载 + 文件上传
|
|
224
|
+
this.$openBaseImport({
|
|
225
|
+
title: '导入合同',
|
|
226
|
+
templateInterface: '/api/contract/importTemplate',
|
|
227
|
+
importInterface: '/api/contract/import',
|
|
228
|
+
importData: { projectId: this.projectId },
|
|
229
|
+
success(app, data) {
|
|
230
|
+
app.close() // 关闭弹窗
|
|
231
|
+
this.$message.success('导入成功')
|
|
232
|
+
this.loadTable() // 刷新列表
|
|
233
|
+
}
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
// 导入成功后需要下载错误报告(接口返回 blob)
|
|
237
|
+
this.$openBaseImport({
|
|
238
|
+
title: '批量导入人员',
|
|
239
|
+
templateInterface: '/api/user/template',
|
|
240
|
+
importInterface: '/api/user/import',
|
|
241
|
+
importResponseType: 'blob',
|
|
242
|
+
success(app, blobData) {
|
|
243
|
+
// 如果后端返回了错误报表 blob,直接下载
|
|
244
|
+
this.$downloadBlob(blobData, '导入结果.xlsx')
|
|
245
|
+
app.close()
|
|
246
|
+
}
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
// 自定义上传前操作(如需手动触发上传)
|
|
250
|
+
this.$openBaseImport({
|
|
251
|
+
beforeUpload: (app) => {
|
|
252
|
+
// app 是弹窗实例,自行触发文件选择
|
|
253
|
+
app.$refs.fileInputRef.click()
|
|
254
|
+
},
|
|
255
|
+
success(app) { app.close() }
|
|
256
|
+
})
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**注意事项**
|
|
260
|
+
|
|
261
|
+
- `success` 和 `close` 回调中的 `this` **不是组件 this**,是弹窗 Vue 实例(`app`)。若需访问父组件,请用箭头函数 + 外层变量捕获:
|
|
262
|
+
```js
|
|
263
|
+
const self = this
|
|
264
|
+
this.$openBaseImport({
|
|
265
|
+
success(app) {
|
|
266
|
+
app.close()
|
|
267
|
+
self.loadTable()
|
|
268
|
+
}
|
|
269
|
+
})
|
|
270
|
+
```
|
|
271
|
+
- 弹窗实例在关闭后自动 `$destroy()` 并从 DOM 移除,无需手动清理。
|
|
272
|
+
- 上传接口固定为 `POST /api/oss/upload`(FormData),导入接口由 `importInterface` 单独配置。
|