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.
Files changed (203) hide show
  1. package/README.md +180 -0
  2. package/dist/codegen.d.ts +5 -0
  3. package/dist/codegen.d.ts.map +1 -0
  4. package/dist/codegen.js +112 -0
  5. package/dist/constants.d.ts +6 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +10 -0
  8. package/dist/index.d.ts +3 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +115 -0
  11. package/dist/resources.d.ts +3 -0
  12. package/dist/resources.d.ts.map +1 -0
  13. package/dist/resources.js +80 -0
  14. package/dist/tools.d.ts +3 -0
  15. package/dist/tools.d.ts.map +1 -0
  16. package/dist/tools.js +258 -0
  17. package/dist/utils.d.ts +26 -0
  18. package/dist/utils.d.ts.map +1 -0
  19. package/dist/utils.js +198 -0
  20. package/docs/codegen/pit-simplify-web.md +686 -0
  21. package/docs/pitBusinessUi/README.md +102 -0
  22. package/docs/pitBusinessUi/add-date-picker.md +57 -0
  23. package/docs/pitBusinessUi/add-operation.md +64 -0
  24. package/docs/pitBusinessUi/batch-download.md +44 -0
  25. package/docs/pitBusinessUi/bill-tree-dialog.md +82 -0
  26. package/docs/pitBusinessUi/collapse.md +88 -0
  27. package/docs/pitBusinessUi/date-time-picker.md +74 -0
  28. package/docs/pitBusinessUi/design-report-explain.md +47 -0
  29. package/docs/pitBusinessUi/dialog.md +89 -0
  30. package/docs/pitBusinessUi/dic-radio.md +67 -0
  31. package/docs/pitBusinessUi/dic.md +78 -0
  32. package/docs/pitBusinessUi/document-preview.md +54 -0
  33. package/docs/pitBusinessUi/drawer.md +67 -0
  34. package/docs/pitBusinessUi/editor.md +63 -0
  35. package/docs/pitBusinessUi/expand-search-form.md +65 -0
  36. package/docs/pitBusinessUi/file-preview.md +56 -0
  37. package/docs/pitBusinessUi/flow-table-status.md +47 -0
  38. package/docs/pitBusinessUi/icon-box.md +74 -0
  39. package/docs/pitBusinessUi/image-preview.md +55 -0
  40. package/docs/pitBusinessUi/image.md +53 -0
  41. package/docs/pitBusinessUi/input-formatter.md +100 -0
  42. package/docs/pitBusinessUi/input-number.md +47 -0
  43. package/docs/pitBusinessUi/input-select.md +68 -0
  44. package/docs/pitBusinessUi/input.md +56 -0
  45. package/docs/pitBusinessUi/jm-preview.md +47 -0
  46. package/docs/pitBusinessUi/json-editor.md +71 -0
  47. package/docs/pitBusinessUi/loading-btn.md +64 -0
  48. package/docs/pitBusinessUi/monaco.md +82 -0
  49. package/docs/pitBusinessUi/money-input.md +59 -0
  50. package/docs/pitBusinessUi/pagination.md +70 -0
  51. package/docs/pitBusinessUi/password-strength.md +59 -0
  52. package/docs/pitBusinessUi/positive-number.md +63 -0
  53. package/docs/pitBusinessUi/preview-image.md +62 -0
  54. package/docs/pitBusinessUi/preview-office.md +50 -0
  55. package/docs/pitBusinessUi/preview.md +57 -0
  56. package/docs/pitBusinessUi/quill.md +52 -0
  57. package/docs/pitBusinessUi/runflow-btn.md +52 -0
  58. package/docs/pitBusinessUi/search-date-picker.md +60 -0
  59. package/docs/pitBusinessUi/select-bid-list.md +66 -0
  60. package/docs/pitBusinessUi/select-color.md +38 -0
  61. package/docs/pitBusinessUi/select-contract-tree.md +41 -0
  62. package/docs/pitBusinessUi/select-dept.md +38 -0
  63. package/docs/pitBusinessUi/select-project-unit.md +48 -0
  64. package/docs/pitBusinessUi/select-section-tree.md +45 -0
  65. package/docs/pitBusinessUi/select-section.md +66 -0
  66. package/docs/pitBusinessUi/select-string.md +60 -0
  67. package/docs/pitBusinessUi/select-system-unit.md +41 -0
  68. package/docs/pitBusinessUi/select-user-by-role.md +51 -0
  69. package/docs/pitBusinessUi/switch.md +43 -0
  70. package/docs/pitBusinessUi/table-contract.md +66 -0
  71. package/docs/pitBusinessUi/table-operation.md +81 -0
  72. package/docs/pitBusinessUi/table.md +75 -0
  73. package/docs/pitBusinessUi/tag.md +86 -0
  74. package/docs/pitBusinessUi/textarea.md +65 -0
  75. package/docs/pitBusinessUi/transfer-direct.md +57 -0
  76. package/docs/pitBusinessUi/transfer-user-project.md +78 -0
  77. package/docs/pitBusinessUi/transfer.md +68 -0
  78. package/docs/pitBusinessUi/tree-lazy.md +72 -0
  79. package/docs/pitBusinessUi/tree-select-name.md +59 -0
  80. package/docs/pitBusinessUi/tree-select-plus.md +106 -0
  81. package/docs/pitBusinessUi/tree-select.md +86 -0
  82. package/docs/pitBusinessUi/upload-avatar.md +60 -0
  83. package/docs/pitBusinessUi/upload-file-dialog.md +86 -0
  84. package/docs/pitBusinessUi/upload-file.md +77 -0
  85. package/docs/pitBusinessUi/upload-list-card.md +62 -0
  86. package/docs/pitBusinessUi/upload-table.md +77 -0
  87. package/docs/pitBusinessUi/user-transform.md +72 -0
  88. package/docs/pitBusinessUi/utils.md +272 -0
  89. package/docs/pitBusinessUtils/README.md +144 -0
  90. package/docs/pitBusinessUtils/auth.md +170 -0
  91. package/docs/pitBusinessUtils/clipboard.md +72 -0
  92. package/docs/pitBusinessUtils/filePreview.md +60 -0
  93. package/docs/pitBusinessUtils/formValidate.md +75 -0
  94. package/docs/pitBusinessUtils/generateTitle.md +49 -0
  95. package/docs/pitBusinessUtils/get-page-title.md +65 -0
  96. package/docs/pitBusinessUtils/i18n.md +130 -0
  97. package/docs/pitBusinessUtils/jwks.md +82 -0
  98. package/docs/pitBusinessUtils/oss.md +391 -0
  99. package/docs/pitBusinessUtils/passwordValidate.md +120 -0
  100. package/docs/pitBusinessUtils/pit.md +496 -0
  101. package/docs/pitBusinessUtils/print.md +126 -0
  102. package/docs/pitBusinessUtils/request.md +137 -0
  103. package/docs/pitBusinessUtils/scroll-to.md +68 -0
  104. package/docs/pitBusinessUtils/utils.md +762 -0
  105. package/docs/pitBusinessUtils/validate.md +224 -0
  106. package/docs/pitElementUi/alert.md +238 -0
  107. package/docs/pitElementUi/avatar.md +147 -0
  108. package/docs/pitElementUi/backtop.md +60 -0
  109. package/docs/pitElementUi/badge.md +120 -0
  110. package/docs/pitElementUi/base-tabs.md +73 -0
  111. package/docs/pitElementUi/border.md +135 -0
  112. package/docs/pitElementUi/breadcrumb.md +44 -0
  113. package/docs/pitElementUi/button.md +301 -0
  114. package/docs/pitElementUi/calendar.md +66 -0
  115. package/docs/pitElementUi/card.md +170 -0
  116. package/docs/pitElementUi/carousel.md +212 -0
  117. package/docs/pitElementUi/cascader.md +1966 -0
  118. package/docs/pitElementUi/checkbox.md +283 -0
  119. package/docs/pitElementUi/collapse.md +131 -0
  120. package/docs/pitElementUi/color-picker.md +123 -0
  121. package/docs/pitElementUi/color.md +244 -0
  122. package/docs/pitElementUi/container.md +240 -0
  123. package/docs/pitElementUi/custom-theme.md +131 -0
  124. package/docs/pitElementUi/date-picker.md +448 -0
  125. package/docs/pitElementUi/datetime-picker.md +254 -0
  126. package/docs/pitElementUi/descriptions.md +191 -0
  127. package/docs/pitElementUi/dialog-header.md +53 -0
  128. package/docs/pitElementUi/dialog.md +239 -0
  129. package/docs/pitElementUi/divider.md +61 -0
  130. package/docs/pitElementUi/drawer.md +307 -0
  131. package/docs/pitElementUi/dropdown.md +308 -0
  132. package/docs/pitElementUi/empty.md +61 -0
  133. package/docs/pitElementUi/font-family.md +90 -0
  134. package/docs/pitElementUi/form-base.md +1239 -0
  135. package/docs/pitElementUi/form-item-checkbox-group.md +48 -0
  136. package/docs/pitElementUi/form-item-date.md +60 -0
  137. package/docs/pitElementUi/form-item-dic.md +18 -0
  138. package/docs/pitElementUi/form-item-editor.md +16 -0
  139. package/docs/pitElementUi/form-item-input-money.md +19 -0
  140. package/docs/pitElementUi/form-item-input-number.md +20 -0
  141. package/docs/pitElementUi/form-item-input.md +18 -0
  142. package/docs/pitElementUi/form-item-radio-group.md +21 -0
  143. package/docs/pitElementUi/form-item-select.md +21 -0
  144. package/docs/pitElementUi/form-item-switch.md +15 -0
  145. package/docs/pitElementUi/form-item-textarea.md +20 -0
  146. package/docs/pitElementUi/form-item-tree-select.md +27 -0
  147. package/docs/pitElementUi/form-item-upload-card.md +18 -0
  148. package/docs/pitElementUi/form-item-upload.md +1 -0
  149. package/docs/pitElementUi/form-two.md +102 -0
  150. package/docs/pitElementUi/form.md +952 -0
  151. package/docs/pitElementUi/i18n.md +228 -0
  152. package/docs/pitElementUi/icon-custom.md +99 -0
  153. package/docs/pitElementUi/icon-line-custom.md +12 -0
  154. package/docs/pitElementUi/icon.md +28 -0
  155. package/docs/pitElementUi/image.md +178 -0
  156. package/docs/pitElementUi/infiniteScroll.md +87 -0
  157. package/docs/pitElementUi/input-number.md +197 -0
  158. package/docs/pitElementUi/input-select.md +1 -0
  159. package/docs/pitElementUi/input.md +800 -0
  160. package/docs/pitElementUi/installation.md +9 -0
  161. package/docs/pitElementUi/layout-column.md +376 -0
  162. package/docs/pitElementUi/layout-tree.md +715 -0
  163. package/docs/pitElementUi/layout.md +354 -0
  164. package/docs/pitElementUi/link.md +66 -0
  165. package/docs/pitElementUi/loading.md +208 -0
  166. package/docs/pitElementUi/menu.md +403 -0
  167. package/docs/pitElementUi/message-box.md +326 -0
  168. package/docs/pitElementUi/message.md +219 -0
  169. package/docs/pitElementUi/notification.md +311 -0
  170. package/docs/pitElementUi/page-header.md +40 -0
  171. package/docs/pitElementUi/pagination.md +200 -0
  172. package/docs/pitElementUi/popconfirm.md +60 -0
  173. package/docs/pitElementUi/popover.md +167 -0
  174. package/docs/pitElementUi/progress.md +178 -0
  175. package/docs/pitElementUi/quickstart.md +290 -0
  176. package/docs/pitElementUi/radio.md +211 -0
  177. package/docs/pitElementUi/rate.md +135 -0
  178. package/docs/pitElementUi/result.md +76 -0
  179. package/docs/pitElementUi/select-tree.md +661 -0
  180. package/docs/pitElementUi/select.md +586 -0
  181. package/docs/pitElementUi/skeleton.md +316 -0
  182. package/docs/pitElementUi/slider.md +237 -0
  183. package/docs/pitElementUi/steps.md +154 -0
  184. package/docs/pitElementUi/switch.md +142 -0
  185. package/docs/pitElementUi/table.md +4023 -0
  186. package/docs/pitElementUi/tabs.md +303 -0
  187. package/docs/pitElementUi/tag.md +203 -0
  188. package/docs/pitElementUi/time-picker.md +199 -0
  189. package/docs/pitElementUi/timeline.md +154 -0
  190. package/docs/pitElementUi/tooltip.md +177 -0
  191. package/docs/pitElementUi/transfer.md +249 -0
  192. package/docs/pitElementUi/transition.md +155 -0
  193. package/docs/pitElementUi/tree.md +1157 -0
  194. package/docs/pitElementUi/typography.md +151 -0
  195. package/docs/pitElementUi/upload-table.md +39 -0
  196. package/docs/pitElementUi/upload.md +392 -0
  197. package/docs/pitElementUi/virtual-list.md +154 -0
  198. package/docs/pitElementUi/virtual-select-tree.md +243 -0
  199. package/docs/pitElementUi/virtual-select.md +451 -0
  200. package/docs/pitElementUi/virtual-table-column.md +1 -0
  201. package/docs/pitElementUi/virtual-table.md +490 -0
  202. package/docs/pitElementUi/virtual-tree.md +119 -0
  203. package/package.json +33 -0
@@ -0,0 +1,151 @@
1
+ <script>
2
+ import bus from '../../bus';
3
+ import { ACTION_USER_CONFIG_UPDATE } from '../../components/theme/constant.js';
4
+ const varMap = [
5
+ '$--font-size-extra-large',
6
+ '$--font-size-large',
7
+ '$--font-size-medium',
8
+ '$--font-size-base',
9
+ '$--font-size-small',
10
+ '$--font-size-extra-small'
11
+ ];
12
+ const original = {
13
+ 'font_size_extra_large': '20px',
14
+ 'font_size_large': '18px',
15
+ 'font_size_medium': '16px',
16
+ 'font_size_base': '14px',
17
+ 'font_size_small': '13px',
18
+ 'font_size_extra_small': '12px'
19
+ }
20
+ export default {
21
+ created() {
22
+ bus.$on(ACTION_USER_CONFIG_UPDATE, this.setGlobal);
23
+ },
24
+ mounted() {
25
+ this.setGlobal();
26
+ },
27
+ methods: {
28
+ tintColor(color, tint) {
29
+ return tintColor(color, tint);
30
+ },
31
+ setGlobal() {
32
+ if (window.userThemeConfig) {
33
+ this.global = window.userThemeConfig.global;
34
+ }
35
+ }
36
+ },
37
+ data() {
38
+ return {
39
+ global: {},
40
+ 'font_size_extra_large': '',
41
+ 'font_size_large': '',
42
+ 'font_size_medium': '',
43
+ 'font_size_base': '',
44
+ 'font_size_small': '',
45
+ 'font_size_extra_small': ''
46
+ }
47
+ },
48
+ watch: {
49
+ global: {
50
+ immediate: true,
51
+ handler(value) {
52
+ varMap.forEach((v) => {
53
+ const key = v.replace('$--', '').replace(/-/g, '_')
54
+ if (value[v]) {
55
+ this[key] = value[v]
56
+ } else {
57
+ this[key] = original[key]
58
+ }
59
+ });
60
+ }
61
+ }
62
+ },
63
+ }
64
+ </script>
65
+
66
+ ## Typography 字体
67
+
68
+ 我们对字体进行统一规范,力求在各个操作系统下都有最佳展示效果。
69
+
70
+ ### 字体
71
+ <div class="demo-term-box">
72
+ <img src="../../assets/images/term-pingfang.png" alt="">
73
+ <img src="../../assets/images/term-hiragino.png" alt="">
74
+ <img src="../../assets/images/term-microsoft.png" alt="">
75
+ <img src="../../assets/images/term-sf.png" alt="">
76
+ <img src="../../assets/images/term-helvetica.png" alt="">
77
+ <img src="../../assets/images/term-arial.png" alt="">
78
+ </div>
79
+
80
+ ### 字号
81
+
82
+ <table class="demo-typo-size">
83
+ <tbody>
84
+ <tr
85
+ >
86
+ <td>层级</td>
87
+ <td>字体大小</td>
88
+ <td class="color-dark-light">举例</td>
89
+ </tr>
90
+ <tr
91
+ :style="{ fontSize: font_size_extra_small }"
92
+ >
93
+ <td>辅助文字</td>
94
+ <td class="color-dark-light">{{font_size_extra_small}} Extra Small</td>
95
+ <td>用 Element 快速搭建页面</td>
96
+ </tr>
97
+ <tr
98
+ :style="{ fontSize: font_size_small }"
99
+ >
100
+ <td>正文(小)</td>
101
+ <td class="color-dark-light">{{font_size_small}} Small</td>
102
+ <td>用 Element 快速搭建页面</td>
103
+ </tr>
104
+ <tr
105
+ :style="{ fontSize: font_size_base }"
106
+ >
107
+ <td>正文</td>
108
+ <td class="color-dark-light">{{font_size_base}} Base</td>
109
+ <td>用 Element 快速搭建页面</td>
110
+ </tr>
111
+ <tr
112
+ :style="{ fontSize: font_size_medium }"
113
+ >
114
+ <td>小标题</td>
115
+ <td class="color-dark-light">{{font_size_medium}} Medium</td>
116
+ <td>用 Element 快速搭建页面</td>
117
+ </tr>
118
+ <tr
119
+ :style="{ fontSize: font_size_large }"
120
+ >
121
+ <td>标题</td>
122
+ <td class="color-dark-light">{{font_size_large}} large</td>
123
+ <td>用 Element 快速搭建页面</td>
124
+ </tr>
125
+ <tr
126
+ :style="{ fontSize: font_size_extra_large }"
127
+ >
128
+ <td>主标题</td>
129
+ <td class="color-dark-light">{{font_size_extra_large}} Extra large</td>
130
+ <td>用 Element 快速搭建页面</td>
131
+ </tr>
132
+ </tbody>
133
+ </table>
134
+
135
+ ### 行高
136
+
137
+ <div>
138
+ <img class="lineH-left" src="~examples/assets/images/typography.png" />
139
+ <ul class="lineH-right">
140
+ <li>line-height:1 <span>无行高</span></li>
141
+ <li>line-height:1.3 <span>紧凑</span></li>
142
+ <li>line-height:1.5 <span>常规</span></li>
143
+ <li>line-height:1.7 <span>宽松</span></li>
144
+ </ul>
145
+ </div>
146
+
147
+ ### Font-family 代码
148
+
149
+ ```css
150
+ font-family: "思源黑体";
151
+ ```
@@ -0,0 +1,39 @@
1
+ ## UploadTable 上传-表格展示方式
2
+
3
+ 通过点击或者拖拽上传文件
4
+
5
+ ### 点击上传
6
+
7
+ :::demo 通过 slot 你可以传入自定义的上传按钮类型和文字提示。可通过设置`limit`和`on-exceed`来限制上传文件的个数和定义超出限制时的行为。可通过设置`before-remove`来阻止文件移除操作。
8
+ ```html
9
+ <el-upload-table
10
+ ref="uploadList"
11
+ auto-upload
12
+ v-model="valued">
13
+ </el-upload-table>
14
+ <script>
15
+ export default {
16
+ data() {
17
+ return {
18
+ valued: '',
19
+ fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
20
+ };
21
+ },
22
+ methods: {
23
+ handleRemove(file, fileList) {
24
+ console.log(file, fileList);
25
+ },
26
+ handlePreview(file) {
27
+ console.log(file);
28
+ },
29
+ handleExceed(files, fileList) {
30
+ this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
31
+ },
32
+ beforeRemove(file, fileList) {
33
+ return this.$confirm(`确定移除 ${ file.name }?`);
34
+ }
35
+ }
36
+ }
37
+ </script>
38
+ ```
39
+ :::
@@ -0,0 +1,392 @@
1
+ ## Upload 上传
2
+
3
+ 通过点击或者拖拽上传文件
4
+
5
+ ### 点击上传
6
+
7
+ :::demo 通过 slot 你可以传入自定义的上传按钮类型和文字提示。可通过设置`limit`和`on-exceed`来限制上传文件的个数和定义超出限制时的行为。可通过设置`before-remove`来阻止文件移除操作。
8
+ ```html
9
+ <el-upload
10
+ class="upload-demo"
11
+ action="https://jsonplaceholder.typicode.com/posts/"
12
+ :on-preview="handlePreview"
13
+ :on-remove="handleRemove"
14
+ :before-remove="beforeRemove"
15
+ multiple
16
+ :limit="3"
17
+ :on-exceed="handleExceed"
18
+ :file-list="fileList">
19
+ <el-button size="small" type="primary">点击上传</el-button>
20
+ <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
21
+ </el-upload>
22
+ <script>
23
+ export default {
24
+ data() {
25
+ return {
26
+ fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
27
+ };
28
+ },
29
+ methods: {
30
+ handleRemove(file, fileList) {
31
+ console.log(file, fileList);
32
+ },
33
+ handlePreview(file) {
34
+ console.log(file);
35
+ },
36
+ handleExceed(files, fileList) {
37
+ this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
38
+ },
39
+ beforeRemove(file, fileList) {
40
+ return this.$confirm(`确定移除 ${ file.name }?`);
41
+ }
42
+ }
43
+ }
44
+ </script>
45
+ ```
46
+ :::
47
+
48
+ ### 用户头像上传
49
+
50
+ 使用 `before-upload` 限制用户上传的图片格式和大小。
51
+
52
+ :::demo
53
+ ```html
54
+ <el-upload
55
+ class="avatar-uploader"
56
+ action="https://jsonplaceholder.typicode.com/posts/"
57
+ :show-file-list="false"
58
+ :on-success="handleAvatarSuccess"
59
+ :before-upload="beforeAvatarUpload">
60
+ <img v-if="imageUrl" :src="imageUrl" class="avatar">
61
+ <i v-else class="el-icon-plus avatar-uploader-icon"></i>
62
+ </el-upload>
63
+
64
+ <style>
65
+ .avatar-uploader .el-upload {
66
+ border: 1px dashed #d9d9d9;
67
+ border-radius: 6px;
68
+ cursor: pointer;
69
+ position: relative;
70
+ overflow: hidden;
71
+ }
72
+ .avatar-uploader .el-upload:hover {
73
+ border-color: #409EFF;
74
+ }
75
+ .avatar-uploader-icon {
76
+ font-size: 28px;
77
+ color: #8c939d;
78
+ width: 178px;
79
+ height: 178px;
80
+ line-height: 178px;
81
+ text-align: center;
82
+ }
83
+ .avatar {
84
+ width: 178px;
85
+ height: 178px;
86
+ display: block;
87
+ }
88
+ </style>
89
+
90
+ <script>
91
+ export default {
92
+ data() {
93
+ return {
94
+ imageUrl: ''
95
+ };
96
+ },
97
+ methods: {
98
+ handleAvatarSuccess(res, file) {
99
+ this.imageUrl = URL.createObjectURL(file.raw);
100
+ },
101
+ beforeAvatarUpload(file) {
102
+ const isJPG = file.type === 'image/jpeg';
103
+ const isLt2M = file.size / 1024 / 1024 < 2;
104
+
105
+ if (!isJPG) {
106
+ this.$message.error('上传头像图片只能是 JPG 格式!');
107
+ }
108
+ if (!isLt2M) {
109
+ this.$message.error('上传头像图片大小不能超过 2MB!');
110
+ }
111
+ return isJPG && isLt2M;
112
+ }
113
+ }
114
+ }
115
+ </script>
116
+ ```
117
+ :::
118
+
119
+ ### 照片墙
120
+
121
+ 使用 `list-type` 属性来设置文件列表的样式。
122
+
123
+ :::demo
124
+ ```html
125
+ <el-upload
126
+ action="https://jsonplaceholder.typicode.com/posts/"
127
+ list-type="picture-card"
128
+ :on-preview="handlePictureCardPreview"
129
+ :auto-upload="false"
130
+ :on-remove="handleRemove">
131
+ <i class="el-icon-plus"></i>
132
+ </el-upload>
133
+ <el-dialog :visible.sync="dialogVisible">
134
+ <img width="100%" :src="dialogImageUrl" alt="">
135
+ </el-dialog>
136
+ <script>
137
+ export default {
138
+ data() {
139
+ return {
140
+ dialogImageUrl: '',
141
+ dialogVisible: false
142
+ };
143
+ },
144
+ methods: {
145
+ handleRemove(file, fileList) {
146
+ console.log(file, fileList);
147
+ },
148
+ handlePictureCardPreview(file) {
149
+ this.dialogImageUrl = file.url;
150
+ this.dialogVisible = true;
151
+ }
152
+ }
153
+ }
154
+ </script>
155
+ ```
156
+ :::
157
+
158
+ ### 文件缩略图
159
+
160
+ 使用 `scoped-slot` 去设置缩略图模版。
161
+
162
+ :::demo
163
+ ```html
164
+ <el-upload
165
+ action="#"
166
+ list-type="picture-card"
167
+ :auto-upload="false">
168
+ <i slot="default" class="el-icon-plus"></i>
169
+ <div slot="file" slot-scope="{file}">
170
+ <img
171
+ class="el-upload-list__item-thumbnail"
172
+ :src="file.url" alt=""
173
+ >
174
+ <span class="el-upload-list__item-actions">
175
+ <span
176
+ class="el-upload-list__item-preview"
177
+ @click="handlePictureCardPreview(file)"
178
+ >
179
+ <i class="el-icon-zoom-in"></i>
180
+ </span>
181
+ <span
182
+ v-if="!disabled"
183
+ class="el-upload-list__item-delete"
184
+ @click="handleDownload(file)"
185
+ >
186
+ <i class="el-icon-download"></i>
187
+ </span>
188
+ <span
189
+ v-if="!disabled"
190
+ class="el-upload-list__item-delete"
191
+ @click="handleRemove(file)"
192
+ >
193
+ <i class="el-icon-delete"></i>
194
+ </span>
195
+ </span>
196
+ </div>
197
+ </el-upload>
198
+ <el-dialog :visible.sync="dialogVisible">
199
+ <img width="100%" :src="dialogImageUrl" alt="">
200
+ </el-dialog>
201
+ <script>
202
+ export default {
203
+ data() {
204
+ return {
205
+ dialogImageUrl: '',
206
+ dialogVisible: false,
207
+ disabled: false
208
+ };
209
+ },
210
+ methods: {
211
+ handleRemove(file) {
212
+ console.log(file);
213
+ },
214
+ handlePictureCardPreview(file) {
215
+ this.dialogImageUrl = file.url;
216
+ this.dialogVisible = true;
217
+ },
218
+ handleDownload(file) {
219
+ console.log(file);
220
+ }
221
+ }
222
+ }
223
+ </script>
224
+ ```
225
+ :::
226
+
227
+ ### 图片列表缩略图
228
+
229
+ :::demo
230
+ ```html
231
+ <el-upload
232
+ class="upload-demo"
233
+ action="https://jsonplaceholder.typicode.com/posts/"
234
+ :on-preview="handlePreview"
235
+ :on-remove="handleRemove"
236
+ :file-list="fileList"
237
+ list-type="picture">
238
+ <el-button size="small" type="primary">点击上传</el-button>
239
+ <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
240
+ </el-upload>
241
+ <script>
242
+ export default {
243
+ data() {
244
+ return {
245
+ fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
246
+ };
247
+ },
248
+ methods: {
249
+ handleRemove(file, fileList) {
250
+ console.log(file, fileList);
251
+ },
252
+ handlePreview(file) {
253
+ console.log(file);
254
+ }
255
+ }
256
+ }
257
+ </script>
258
+ ```
259
+ :::
260
+
261
+ ### 上传文件列表控制
262
+
263
+ 通过 `on-change` 钩子函数来对列表进行控制
264
+
265
+ :::demo
266
+ ```html
267
+ <el-upload
268
+ class="upload-demo"
269
+ action="https://jsonplaceholder.typicode.com/posts/"
270
+ :on-change="handleChange"
271
+ :file-list="fileList">
272
+ <el-button size="small" type="primary">点击上传</el-button>
273
+ <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
274
+ </el-upload>
275
+ <script>
276
+ export default {
277
+ data() {
278
+ return {
279
+ fileList: [{
280
+ name: 'food.jpeg',
281
+ url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
282
+ }, {
283
+ name: 'food2.jpeg',
284
+ url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'
285
+ }]
286
+ };
287
+ },
288
+ methods: {
289
+ handleChange(file, fileList) {
290
+ this.fileList = fileList.slice(-3);
291
+ }
292
+ }
293
+ }
294
+ </script>
295
+ ```
296
+ :::
297
+
298
+ ### 拖拽上传
299
+
300
+ :::demo
301
+ ```html
302
+ <el-upload
303
+ class="upload-demo"
304
+ drag
305
+ action="https://jsonplaceholder.typicode.com/posts/"
306
+ multiple>
307
+ <i class="el-icon-upload"></i>
308
+ <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
309
+ <div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
310
+ </el-upload>
311
+ ```
312
+ :::
313
+
314
+ ### 手动上传
315
+
316
+ :::demo
317
+ ```html
318
+ <el-upload
319
+ class="upload-demo"
320
+ ref="upload"
321
+ action="https://jsonplaceholder.typicode.com/posts/"
322
+ :on-preview="handlePreview"
323
+ :on-remove="handleRemove"
324
+ :file-list="fileList"
325
+ :auto-upload="false">
326
+ <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
327
+ <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
328
+ <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
329
+ </el-upload>
330
+ <script>
331
+ export default {
332
+ data() {
333
+ return {
334
+ fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
335
+ };
336
+ },
337
+ methods: {
338
+ submitUpload() {
339
+ this.$refs.upload.submit();
340
+ },
341
+ handleRemove(file, fileList) {
342
+ console.log(file, fileList);
343
+ },
344
+ handlePreview(file) {
345
+ console.log(file);
346
+ }
347
+ }
348
+ }
349
+ </script>
350
+ ```
351
+ :::
352
+
353
+ ### Attribute
354
+ | 参数 | 说明 | 类型 | 可选值 | 默认值 |
355
+ |---------- |-------------- |---------- |-------------------------------- |-------- |
356
+ | action | 必选参数,上传的地址 | string | — | — |
357
+ | headers | 设置上传的请求头部 | object | — | — |
358
+ | multiple | 是否支持多选文件 | boolean | — | — |
359
+ | data | 上传时附带的额外参数 | object | — | — |
360
+ | name | 上传的文件字段名 | string | — | file |
361
+ | with-credentials | 支持发送 cookie 凭证信息 | boolean | — | false |
362
+ | show-file-list | 是否显示已上传文件列表 | boolean | — | true |
363
+ | drag | 是否启用拖拽上传 | boolean | — | false |
364
+ | accept | 接受上传的[文件类型](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept)(thumbnail-mode 模式下此参数无效)| string | — | — |
365
+ | on-preview | 点击文件列表中已上传的文件时的钩子 | function(file) | — | — |
366
+ | on-remove | 文件列表移除文件时的钩子 | function(file, fileList) | — | — |
367
+ | on-success | 文件上传成功时的钩子 | function(response, file, fileList) | — | — |
368
+ | on-error | 文件上传失败时的钩子 | function(err, file, fileList) | — | — |
369
+ | on-progress | 文件上传时的钩子 | function(event, file, fileList) | — | — |
370
+ | on-change | 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用 | function(file, fileList) | — | — |
371
+ | before-upload | 上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。 | function(file) | — | — |
372
+ | before-remove | 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止删除。| function(file, fileList) | — | — |
373
+ | list-type | 文件列表的类型 | string | text/picture/picture-card | text |
374
+ | auto-upload | 是否在选取文件后立即进行上传 | boolean | — | true |
375
+ | file-list | 上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}] | array | — | [] |
376
+ | http-request | 覆盖默认的上传行为,可以自定义上传的实现 | function | — | — |
377
+ | disabled | 是否禁用 | boolean | — | false |
378
+ | limit | 最大允许上传个数 | number | — | — |
379
+ | on-exceed | 文件超出个数限制时的钩子 | function(files, fileList) | — | - |
380
+
381
+ ### Slot
382
+ | name | 说明 |
383
+ |------|--------|
384
+ | trigger | 触发文件选择框的内容 |
385
+ | tip | 提示说明文字 |
386
+
387
+ ### Methods
388
+ | 方法名 | 说明 | 参数 |
389
+ |----------- |-------------- | -- |
390
+ | clearFiles | 清空已上传的文件列表(该方法不支持在 before-upload 中调用) | — |
391
+ | abort | 取消上传请求 | ( file: fileList 中的 file 对象 ) |
392
+ | submit | 手动上传文件列表 | — |