el-plus 0.0.113 → 0.0.115

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 (255) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +85 -85
  3. package/dist/index.css +1 -1
  4. package/dist/index.full.js +15 -5
  5. package/dist/index.full.min.js +4 -4
  6. package/dist/index.full.min.js.map +1 -1
  7. package/dist/index.full.min.mjs +4 -4
  8. package/dist/index.full.min.mjs.map +1 -1
  9. package/dist/index.full.mjs +15 -6
  10. package/docs/CHANGELOG.md +5 -5
  11. package/docs/api-examples.md +49 -49
  12. package/docs/components/attachment.md +118 -111
  13. package/docs/components/buttons.md +179 -179
  14. package/docs/components/custom-column.md +70 -70
  15. package/docs/components/date-picker-range.md +61 -61
  16. package/docs/components/dialog.md +104 -104
  17. package/docs/components/footer-info.md +101 -101
  18. package/docs/components/form.md +211 -211
  19. package/docs/components/header.md +117 -117
  20. package/docs/components/input.md +111 -111
  21. package/docs/components/link.md +63 -63
  22. package/docs/components/search-list-page.md +91 -91
  23. package/docs/components/select.md +249 -249
  24. package/docs/components/table.md +145 -145
  25. package/docs/components/title.md +70 -70
  26. package/docs/components/use-choose-dialog.md +114 -114
  27. package/docs/components/use-confirm-dialog.md +86 -86
  28. package/docs/components/use-form-dialog.md +85 -85
  29. package/docs/guide/markdown-examples.md +85 -85
  30. package/docs/hooks/use-navigation.md +131 -131
  31. package/docs/hooks/use-utils.md +162 -162
  32. package/docs/index.md +25 -25
  33. package/docs/overview.md +99 -99
  34. package/docs/pages/detail.md +66 -66
  35. package/docs/pages/list.md +74 -74
  36. package/docs/pages/router.md +151 -151
  37. package/es/components/attachment/index.d.ts +12 -2
  38. package/es/components/attachment/index.mjs +1 -1
  39. package/es/components/attachment/index.mjs.map +1 -1
  40. package/es/components/attachment/src/attachment.d.ts +6 -0
  41. package/es/components/attachment/src/attachment.mjs +7 -1
  42. package/es/components/attachment/src/attachment.mjs.map +1 -1
  43. package/es/components/attachment/src/attachment.vue.d.ts +5 -1
  44. package/es/components/attachment/src/attachment.vue2.mjs +7 -4
  45. package/es/components/attachment/src/attachment.vue2.mjs.map +1 -1
  46. package/es/components/attachment/src/use-attachment.mjs.map +1 -1
  47. package/es/components/buttons/index.mjs.map +1 -1
  48. package/es/components/buttons/src/buttons-vue.mjs.map +1 -1
  49. package/es/components/buttons/src/buttons.mjs.map +1 -1
  50. package/es/components/custom-column/index.mjs.map +1 -1
  51. package/es/components/custom-column/src/custom-column.mjs.map +1 -1
  52. package/es/components/custom-column/src/custom-column.vue2.mjs.map +1 -1
  53. package/es/components/date-picker-range/index.mjs.map +1 -1
  54. package/es/components/date-picker-range/src/date-picker-range.mjs.map +1 -1
  55. package/es/components/date-picker-range/src/date-picker-range.vue2.mjs.map +1 -1
  56. package/es/components/footer-info/index.mjs.map +1 -1
  57. package/es/components/footer-info/src/footer-info.mjs.map +1 -1
  58. package/es/components/footer-info/src/footer-info.vue2.mjs.map +1 -1
  59. package/es/components/form/index.mjs.map +1 -1
  60. package/es/components/form/src/form-item-vue.mjs.map +1 -1
  61. package/es/components/form/src/form-item.mjs.map +1 -1
  62. package/es/components/form/src/form.mjs.map +1 -1
  63. package/es/components/form/src/form.vue2.mjs.map +1 -1
  64. package/es/components/form/src/hooks/use-form-item.mjs.map +1 -1
  65. package/es/components/form/src/hooks/use-form.mjs.map +1 -1
  66. package/es/components/header/index.mjs.map +1 -1
  67. package/es/components/header/src/header.mjs.map +1 -1
  68. package/es/components/header/src/header.vue2.mjs.map +1 -1
  69. package/es/components/header/src/use-header.mjs.map +1 -1
  70. package/es/components/index.mjs +1 -1
  71. package/es/components/input/index.mjs.map +1 -1
  72. package/es/components/input/src/input.mjs.map +1 -1
  73. package/es/components/input/src/input.vue2.mjs.map +1 -1
  74. package/es/components/link/index.mjs.map +1 -1
  75. package/es/components/link/src/link.mjs.map +1 -1
  76. package/es/components/link/src/link.vue2.mjs.map +1 -1
  77. package/es/components/search-list-page/index.mjs.map +1 -1
  78. package/es/components/search-list-page/src/search-list-page.mjs.map +1 -1
  79. package/es/components/search-list-page/src/search-list-page.vue2.mjs.map +1 -1
  80. package/es/components/search-list-page/src/use-search-list-page.mjs.map +1 -1
  81. package/es/components/select/index.mjs.map +1 -1
  82. package/es/components/select/src/select.mjs.map +1 -1
  83. package/es/components/select/src/select.vue2.mjs.map +1 -1
  84. package/es/components/select/src/use-select.mjs.map +1 -1
  85. package/es/components/table/index.mjs.map +1 -1
  86. package/es/components/table/src/table.mjs.map +1 -1
  87. package/es/components/table/src/table.vue2.mjs.map +1 -1
  88. package/es/components/table/src/use-table.mjs.map +1 -1
  89. package/es/components/title/index.mjs.map +1 -1
  90. package/es/components/title/src/title.mjs.map +1 -1
  91. package/es/components/title/src/title.vue2.mjs.map +1 -1
  92. package/es/components/title/src/use-title.mjs.map +1 -1
  93. package/es/components/uni-vue/index.mjs.map +1 -1
  94. package/es/components/uni-vue/src/uni-vue.mjs.map +1 -1
  95. package/es/components/uni-vue/src/uni-vue.vue2.mjs.map +1 -1
  96. package/es/components/uni-vue/src/use-uni-vue.mjs.map +1 -1
  97. package/es/components.mjs.map +1 -1
  98. package/es/directives/permission/index.mjs.map +1 -1
  99. package/es/directives/repeat-click/index.mjs.map +1 -1
  100. package/es/hooks/dialog/use-choose-dialog.mjs.map +1 -1
  101. package/es/hooks/dialog/use-confirm-dialog.mjs.map +1 -1
  102. package/es/hooks/dialog/use-dialog.mjs.map +1 -1
  103. package/es/hooks/dialog/use-form-dialog.mjs.map +1 -1
  104. package/es/hooks/use-locale.mjs.map +1 -1
  105. package/es/hooks/use-navigation.mjs.map +1 -1
  106. package/es/hooks/use-request.mjs.map +1 -1
  107. package/es/hooks/use-template-promise.mjs.map +1 -1
  108. package/es/hooks/use-utils.mjs.map +1 -1
  109. package/es/index.mjs +1 -1
  110. package/es/index.mjs.map +1 -1
  111. package/es/locale/lang/en.mjs.map +1 -1
  112. package/es/locale/lang/zh-cn.mjs.map +1 -1
  113. package/es/package.json.mjs +1 -1
  114. package/es/plugins/globalProperties.mjs.map +1 -1
  115. package/es/types/global.d.ts +30 -30
  116. package/es/types/index.d.ts +2 -2
  117. package/es/types/utils.d.ts +19 -19
  118. package/es/utils/bem.mjs.map +1 -1
  119. package/es/utils/cookie.mjs.map +1 -1
  120. package/es/utils/dom.mjs.map +1 -1
  121. package/es/utils/env.mjs.map +1 -1
  122. package/es/utils/file.mjs.map +1 -1
  123. package/es/utils/http/core/modules/interceptor.mjs.map +1 -1
  124. package/es/utils/http/core/modules/loading.mjs.map +1 -1
  125. package/es/utils/http/core/preset-interceptors.mjs.map +1 -1
  126. package/es/utils/http/core/request-client.mjs.map +1 -1
  127. package/es/utils/http/index.mjs.map +1 -1
  128. package/es/utils/mitt.mjs.map +1 -1
  129. package/es/utils/navigation.mjs.map +1 -1
  130. package/es/utils/props.mjs.map +1 -1
  131. package/es/utils/time.mjs.map +1 -1
  132. package/es/utils/utils.mjs.map +1 -1
  133. package/es/utils/with-install.mjs.map +1 -1
  134. package/global.d.ts +21 -21
  135. package/lib/components/attachment/index.d.ts +12 -2
  136. package/lib/components/attachment/index.js +1 -0
  137. package/lib/components/attachment/index.js.map +1 -1
  138. package/lib/components/attachment/src/attachment.d.ts +6 -0
  139. package/lib/components/attachment/src/attachment.js +7 -0
  140. package/lib/components/attachment/src/attachment.js.map +1 -1
  141. package/lib/components/attachment/src/attachment.vue.d.ts +5 -1
  142. package/lib/components/attachment/src/attachment.vue2.js +6 -3
  143. package/lib/components/attachment/src/attachment.vue2.js.map +1 -1
  144. package/lib/components/attachment/src/use-attachment.js.map +1 -1
  145. package/lib/components/buttons/index.js.map +1 -1
  146. package/lib/components/buttons/src/buttons-vue.js.map +1 -1
  147. package/lib/components/buttons/src/buttons.js.map +1 -1
  148. package/lib/components/custom-column/index.js.map +1 -1
  149. package/lib/components/custom-column/src/custom-column.js.map +1 -1
  150. package/lib/components/custom-column/src/custom-column.vue2.js.map +1 -1
  151. package/lib/components/date-picker-range/index.js.map +1 -1
  152. package/lib/components/date-picker-range/src/date-picker-range.js.map +1 -1
  153. package/lib/components/date-picker-range/src/date-picker-range.vue2.js.map +1 -1
  154. package/lib/components/footer-info/index.js.map +1 -1
  155. package/lib/components/footer-info/src/footer-info.js.map +1 -1
  156. package/lib/components/footer-info/src/footer-info.vue2.js.map +1 -1
  157. package/lib/components/form/index.js.map +1 -1
  158. package/lib/components/form/src/form-item-vue.js.map +1 -1
  159. package/lib/components/form/src/form-item.js.map +1 -1
  160. package/lib/components/form/src/form.js.map +1 -1
  161. package/lib/components/form/src/form.vue2.js.map +1 -1
  162. package/lib/components/form/src/hooks/use-form-item.js.map +1 -1
  163. package/lib/components/form/src/hooks/use-form.js.map +1 -1
  164. package/lib/components/header/index.js.map +1 -1
  165. package/lib/components/header/src/header.js.map +1 -1
  166. package/lib/components/header/src/header.vue2.js.map +1 -1
  167. package/lib/components/header/src/use-header.js.map +1 -1
  168. package/lib/components/index.js +1 -0
  169. package/lib/components/index.js.map +1 -1
  170. package/lib/components/input/index.js.map +1 -1
  171. package/lib/components/input/src/input.js.map +1 -1
  172. package/lib/components/input/src/input.vue2.js.map +1 -1
  173. package/lib/components/link/index.js.map +1 -1
  174. package/lib/components/link/src/link.js.map +1 -1
  175. package/lib/components/link/src/link.vue2.js.map +1 -1
  176. package/lib/components/search-list-page/index.js.map +1 -1
  177. package/lib/components/search-list-page/src/search-list-page.js.map +1 -1
  178. package/lib/components/search-list-page/src/search-list-page.vue2.js.map +1 -1
  179. package/lib/components/search-list-page/src/use-search-list-page.js.map +1 -1
  180. package/lib/components/select/index.js.map +1 -1
  181. package/lib/components/select/src/select.js.map +1 -1
  182. package/lib/components/select/src/select.vue2.js.map +1 -1
  183. package/lib/components/select/src/use-select.js.map +1 -1
  184. package/lib/components/table/index.js.map +1 -1
  185. package/lib/components/table/src/table.js.map +1 -1
  186. package/lib/components/table/src/table.vue2.js.map +1 -1
  187. package/lib/components/table/src/use-table.js.map +1 -1
  188. package/lib/components/title/index.js.map +1 -1
  189. package/lib/components/title/src/title.js.map +1 -1
  190. package/lib/components/title/src/title.vue2.js.map +1 -1
  191. package/lib/components/title/src/use-title.js.map +1 -1
  192. package/lib/components/uni-vue/index.js.map +1 -1
  193. package/lib/components/uni-vue/src/uni-vue.js.map +1 -1
  194. package/lib/components/uni-vue/src/uni-vue.vue2.js.map +1 -1
  195. package/lib/components/uni-vue/src/use-uni-vue.js.map +1 -1
  196. package/lib/components.js.map +1 -1
  197. package/lib/directives/permission/index.js.map +1 -1
  198. package/lib/directives/repeat-click/index.js.map +1 -1
  199. package/lib/hooks/dialog/use-choose-dialog.js.map +1 -1
  200. package/lib/hooks/dialog/use-confirm-dialog.js.map +1 -1
  201. package/lib/hooks/dialog/use-dialog.js.map +1 -1
  202. package/lib/hooks/dialog/use-form-dialog.js.map +1 -1
  203. package/lib/hooks/use-locale.js.map +1 -1
  204. package/lib/hooks/use-navigation.js.map +1 -1
  205. package/lib/hooks/use-request.js.map +1 -1
  206. package/lib/hooks/use-template-promise.js.map +1 -1
  207. package/lib/hooks/use-utils.js.map +1 -1
  208. package/lib/index.js +1 -0
  209. package/lib/index.js.map +1 -1
  210. package/lib/locale/lang/en.js.map +1 -1
  211. package/lib/locale/lang/zh-cn.js.map +1 -1
  212. package/lib/package.json.js +1 -1
  213. package/lib/plugins/globalProperties.js.map +1 -1
  214. package/lib/types/global.d.ts +30 -30
  215. package/lib/types/index.d.ts +2 -2
  216. package/lib/types/utils.d.ts +19 -19
  217. package/lib/utils/bem.js.map +1 -1
  218. package/lib/utils/cookie.js.map +1 -1
  219. package/lib/utils/dom.js.map +1 -1
  220. package/lib/utils/env.js.map +1 -1
  221. package/lib/utils/file.js.map +1 -1
  222. package/lib/utils/http/core/modules/interceptor.js.map +1 -1
  223. package/lib/utils/http/core/modules/loading.js.map +1 -1
  224. package/lib/utils/http/core/preset-interceptors.js.map +1 -1
  225. package/lib/utils/http/core/request-client.js.map +1 -1
  226. package/lib/utils/http/index.js.map +1 -1
  227. package/lib/utils/mitt.js.map +1 -1
  228. package/lib/utils/navigation.js.map +1 -1
  229. package/lib/utils/props.js.map +1 -1
  230. package/lib/utils/time.js.map +1 -1
  231. package/lib/utils/utils.js.map +1 -1
  232. package/lib/utils/with-install.js.map +1 -1
  233. package/package.json +1 -1
  234. package/theme-chalk/base.css +1 -1
  235. package/theme-chalk/index.css +1 -1
  236. package/theme-chalk/src/attachment.scss +39 -39
  237. package/theme-chalk/src/base.scss +2 -2
  238. package/theme-chalk/src/buttons.scss +22 -22
  239. package/theme-chalk/src/common/common.scss +7 -4
  240. package/theme-chalk/src/common/transition.scss +9 -9
  241. package/theme-chalk/src/custom-column.scss +55 -55
  242. package/theme-chalk/src/dialog.scss +62 -62
  243. package/theme-chalk/src/footer-info.scss +18 -18
  244. package/theme-chalk/src/form.scss +80 -72
  245. package/theme-chalk/src/header.scss +19 -19
  246. package/theme-chalk/src/index.scss +15 -15
  247. package/theme-chalk/src/link.scss +5 -5
  248. package/theme-chalk/src/mixins/config.scss +3 -3
  249. package/theme-chalk/src/mixins/mixins.scss +37 -37
  250. package/theme-chalk/src/search-list-page.scss +22 -22
  251. package/theme-chalk/src/select.scss +10 -10
  252. package/theme-chalk/src/table.scss +91 -91
  253. package/theme-chalk/src/tabs.scss +55 -55
  254. package/theme-chalk/src/title.scss +52 -52
  255. package/theme-chalk/src/uni-vue.scss +10 -10
@@ -1,249 +1,249 @@
1
- # EpSelect 下拉选择
2
-
3
- 基于 el-select 封装,支持接口获取选项、自定义 label 等功能。
4
-
5
- ## 基本用法
6
-
7
- ```vue
8
- <template>
9
- <EpSelect v-model="value" :options="options" />
10
- </template>
11
-
12
- <script setup>
13
- import { ref } from 'vue'
14
-
15
- const value = ref('')
16
- const options = [
17
- { label: '选项1', value: '1' },
18
- { label: '选项2', value: '2' },
19
- ]
20
- </script>
21
- ```
22
-
23
- ## Props
24
-
25
- | 属性 | 说明 | 类型 | 默认值 |
26
- |------|------|------|--------|
27
- | v-model | 绑定值 ^el^ | `string \| number \| array` | - |
28
- | options | 选项列表 ^el^ | `array` | `[]` |
29
- | api | 选项接口地址 | `string \| (reqData) => Promise` | - |
30
- | method | 请求方法 | `string` | `'post'` |
31
- | reqData | 请求体数据 | `object` | `{}` |
32
- | reqParams | URL 参数 | `object` | `{}` |
33
- | reqBefore | 请求前处理 | `(reqData) => reqData` | - |
34
- | reqAfter | 响应后处理 | `(res) => options` | - |
35
- | labelKey | label 字段名 | `string` | `'label'` |
36
- | valueKey | value 字段名 | `string` | `'value'` |
37
- | formatLabel | 自定义 label 格式化 | `(item) => string` | - |
38
- | disabledOption | 禁用选项判断 | `(item) => boolean` | - |
39
- | lazy | 延迟加载(api模式) | `boolean` | `false` |
40
- | codeInLabel | 下拉label 中显示 code ,当为boolean默认是valueKey| `boolean \| string` | - |
41
- | clearable | 是否可清空 ^el^ | `boolean` | `true` |
42
-
43
- > ^el^ 表示继承自 [el-select](https://element-plus.org/zh-CN/component/select.html#select-attributes) 的属性
44
-
45
- ## 在 Form 中使用
46
-
47
- ```tsx
48
- const formItemList = [
49
- {
50
- prop: 'status',
51
- label: '状态',
52
- type: 'EpSelect',
53
- props: {
54
- options: [
55
- { label: '启用', value: 1 },
56
- { label: '禁用', value: 0 },
57
- ],
58
- },
59
- },
60
- ]
61
- ```
62
-
63
- ## 接口获取选项
64
-
65
- ```tsx
66
- {
67
- prop: 'testCode',
68
- label: '测试',
69
- type: 'EpSelect',
70
- props: {
71
- api: '/test',
72
- valueKey: 'code',
73
- labelKey: 'name',
74
- },
75
- }
76
- ```
77
-
78
- ## 远程搜索
79
- ```tsx
80
- {
81
- prop: 'testCode',
82
- label: '测试',
83
- type: 'EpSelect',
84
- props: {
85
- api: '/test',
86
- valueKey: 'code',
87
- labelKey: 'name',
88
- remote: true,
89
- filterable: true,
90
- },
91
- }
92
-
93
- ```
94
-
95
- ## 带描述
96
- - 适用于有code,但配置为remote/lazy,导致没有name的情况
97
- ```tsx
98
- {
99
- prop: 'testCode',
100
- label: '测试',
101
- type: 'EpSelect',
102
- props: {
103
- api: '/test',
104
- valueKey: 'code',
105
- labelKey: 'name',
106
- lazy: true,
107
- desc: '描述信息'
108
- },
109
- }
110
- ```
111
-
112
- ## 自定义 label 格式
113
-
114
- ```tsx
115
- {
116
- prop: 'testCode',
117
- label: '测试',
118
- type: 'EpSelect',
119
- props: {
120
- api: '/test',
121
- valueKey: 'code',
122
- labelKey: 'name',
123
- formatLabel: (item) => `${item.name} (${item.code})`,
124
- },
125
- }
126
- ```
127
-
128
- ## 监听变化
129
-
130
- ```tsx
131
- {
132
- prop: 'testCode',
133
- label: '测试',
134
- type: 'EpSelect',
135
- props: {
136
- options: [],
137
- },
138
- onChange: (value, item) => {
139
- // value: 选中的值
140
- // item: 选中的选项对象
141
- formData.testName = item?.name
142
- },
143
- }
144
- ```
145
-
146
- ## codeInLabel 模式
147
-
148
- 下拉同时显示 code 和 label:
149
-
150
- ```tsx
151
- {
152
- prop: 'testCode',
153
- label: '测试',
154
- type: 'EpSelect',
155
- props: {
156
- api: '/test',
157
- valueKey: 'code',
158
- labelKey: 'name',
159
- codeInLabel: true, // 显示为 "name code"
160
- // codeInLabel: 'testCode', // 显示为 "name testCode字段值"
161
- },
162
- }
163
- ```
164
-
165
- ## 常用场景
166
-
167
- ```tsx
168
- // 公司 - 简单接口选择
169
- {
170
- prop: 'companyCode',
171
- label: '公司',
172
- type: 'EpSelect',
173
- props: {
174
- api: '/api-pms-order/api/common/queryAllCompany',
175
- method: 'post',
176
- labelKey: 'name',
177
- valueKey: 'code',
178
- },
179
- }
180
-
181
- // 币种 - 简单接口选择
182
- {
183
- prop: 'currencyCode',
184
- label: '币种',
185
- type: 'EpSelect',
186
- props: {
187
- api: '/api-finance-base/api/finance/base/currency/queryList',
188
- method: 'post',
189
- labelKey: 'name',
190
- valueKey: 'code',
191
- },
192
- }
193
-
194
- // 账套 - 简单接口选择
195
- {
196
- prop: 'accountSetCode',
197
- label: '账套',
198
- type: 'EpSelect',
199
- props: {
200
- api: '/api-globalization/api/accountSet/queryLatestVerAccountSet',
201
- labelKey: 'accountSetName',
202
- valueKey: 'accountSetCode',
203
- },
204
- }
205
-
206
- // 仓库 - 远程搜索(数据量大,输入关键词搜索)
207
- {
208
- prop: 'warehouseCode',
209
- label: '仓库',
210
- type: 'EpSelect',
211
- props: {
212
- api: '/api-wms/api/warehouse/search/list',
213
- method: 'post',
214
- remote: true,
215
- filterable: true,
216
- reqData: {
217
- statusList: [1],
218
- name: '$query',
219
- pageNum: 1,
220
- pageSize: 20,
221
- },
222
- labelKey: 'name',
223
- valueKey: 'code',
224
- },
225
- }
226
-
227
- // 人员 - 远程搜索 + 自定义格式(同时展示编码和名称)
228
- {
229
- prop: 'personAccount',
230
- label: '人员',
231
- type: 'EpSelect',
232
- props: {
233
- api: '/api-u/api/saas/user/personInfoManage/queryPersonInfoPage',
234
- method: 'post',
235
- remote: true,
236
- filterable: true,
237
- reqData: {
238
- page: 1,
239
- pageSize: 20,
240
- searchText: '$query',
241
- },
242
- labelKey: 'name',
243
- valueKey: 'account',
244
- formatLabel: (item) => `${item.account || ''} ${item.name || ''}`,
245
- },
246
- }
247
- ```
248
-
249
- > `reqData` 中 `$query` 为占位符,组件会自动替换为用户输入的搜索关键词。
1
+ # EpSelect 下拉选择
2
+
3
+ 基于 el-select 封装,支持接口获取选项、自定义 label 等功能。
4
+
5
+ ## 基本用法
6
+
7
+ ```vue
8
+ <template>
9
+ <EpSelect v-model="value" :options="options" />
10
+ </template>
11
+
12
+ <script setup>
13
+ import { ref } from 'vue'
14
+
15
+ const value = ref('')
16
+ const options = [
17
+ { label: '选项1', value: '1' },
18
+ { label: '选项2', value: '2' },
19
+ ]
20
+ </script>
21
+ ```
22
+
23
+ ## Props
24
+
25
+ | 属性 | 说明 | 类型 | 默认值 |
26
+ |------|------|------|--------|
27
+ | v-model | 绑定值 ^el^ | `string \| number \| array` | - |
28
+ | options | 选项列表 ^el^ | `array` | `[]` |
29
+ | api | 选项接口地址 | `string \| (reqData) => Promise` | - |
30
+ | method | 请求方法 | `string` | `'post'` |
31
+ | reqData | 请求体数据 | `object` | `{}` |
32
+ | reqParams | URL 参数 | `object` | `{}` |
33
+ | reqBefore | 请求前处理 | `(reqData) => reqData` | - |
34
+ | reqAfter | 响应后处理 | `(res) => options` | - |
35
+ | labelKey | label 字段名 | `string` | `'label'` |
36
+ | valueKey | value 字段名 | `string` | `'value'` |
37
+ | formatLabel | 自定义 label 格式化 | `(item) => string` | - |
38
+ | disabledOption | 禁用选项判断 | `(item) => boolean` | - |
39
+ | lazy | 延迟加载(api模式) | `boolean` | `false` |
40
+ | codeInLabel | 下拉label 中显示 code ,当为boolean默认是valueKey| `boolean \| string` | - |
41
+ | clearable | 是否可清空 ^el^ | `boolean` | `true` |
42
+
43
+ > ^el^ 表示继承自 [el-select](https://element-plus.org/zh-CN/component/select.html#select-attributes) 的属性
44
+
45
+ ## 在 Form 中使用
46
+
47
+ ```tsx
48
+ const formItemList = [
49
+ {
50
+ prop: 'status',
51
+ label: '状态',
52
+ type: 'EpSelect',
53
+ props: {
54
+ options: [
55
+ { label: '启用', value: 1 },
56
+ { label: '禁用', value: 0 },
57
+ ],
58
+ },
59
+ },
60
+ ]
61
+ ```
62
+
63
+ ## 接口获取选项
64
+
65
+ ```tsx
66
+ {
67
+ prop: 'testCode',
68
+ label: '测试',
69
+ type: 'EpSelect',
70
+ props: {
71
+ api: '/test',
72
+ valueKey: 'code',
73
+ labelKey: 'name',
74
+ },
75
+ }
76
+ ```
77
+
78
+ ## 远程搜索
79
+ ```tsx
80
+ {
81
+ prop: 'testCode',
82
+ label: '测试',
83
+ type: 'EpSelect',
84
+ props: {
85
+ api: '/test',
86
+ valueKey: 'code',
87
+ labelKey: 'name',
88
+ remote: true,
89
+ filterable: true,
90
+ },
91
+ }
92
+
93
+ ```
94
+
95
+ ## 带描述
96
+ - 适用于有code,但配置为remote/lazy,导致没有name的情况
97
+ ```tsx
98
+ {
99
+ prop: 'testCode',
100
+ label: '测试',
101
+ type: 'EpSelect',
102
+ props: {
103
+ api: '/test',
104
+ valueKey: 'code',
105
+ labelKey: 'name',
106
+ lazy: true,
107
+ desc: '描述信息'
108
+ },
109
+ }
110
+ ```
111
+
112
+ ## 自定义 label 格式
113
+
114
+ ```tsx
115
+ {
116
+ prop: 'testCode',
117
+ label: '测试',
118
+ type: 'EpSelect',
119
+ props: {
120
+ api: '/test',
121
+ valueKey: 'code',
122
+ labelKey: 'name',
123
+ formatLabel: (item) => `${item.name} (${item.code})`,
124
+ },
125
+ }
126
+ ```
127
+
128
+ ## 监听变化
129
+
130
+ ```tsx
131
+ {
132
+ prop: 'testCode',
133
+ label: '测试',
134
+ type: 'EpSelect',
135
+ props: {
136
+ options: [],
137
+ },
138
+ onChange: (value, item) => {
139
+ // value: 选中的值
140
+ // item: 选中的选项对象
141
+ formData.testName = item?.name
142
+ },
143
+ }
144
+ ```
145
+
146
+ ## codeInLabel 模式
147
+
148
+ 下拉同时显示 code 和 label:
149
+
150
+ ```tsx
151
+ {
152
+ prop: 'testCode',
153
+ label: '测试',
154
+ type: 'EpSelect',
155
+ props: {
156
+ api: '/test',
157
+ valueKey: 'code',
158
+ labelKey: 'name',
159
+ codeInLabel: true, // 显示为 "name code"
160
+ // codeInLabel: 'testCode', // 显示为 "name testCode字段值"
161
+ },
162
+ }
163
+ ```
164
+
165
+ ## 常用场景
166
+
167
+ ```tsx
168
+ // 公司 - 简单接口选择
169
+ {
170
+ prop: 'companyCode',
171
+ label: '公司',
172
+ type: 'EpSelect',
173
+ props: {
174
+ api: '/api-pms-order/api/common/queryAllCompany',
175
+ method: 'post',
176
+ labelKey: 'name',
177
+ valueKey: 'code',
178
+ },
179
+ }
180
+
181
+ // 币种 - 简单接口选择
182
+ {
183
+ prop: 'currencyCode',
184
+ label: '币种',
185
+ type: 'EpSelect',
186
+ props: {
187
+ api: '/api-finance-base/api/finance/base/currency/queryList',
188
+ method: 'post',
189
+ labelKey: 'name',
190
+ valueKey: 'code',
191
+ },
192
+ }
193
+
194
+ // 账套 - 简单接口选择
195
+ {
196
+ prop: 'accountSetCode',
197
+ label: '账套',
198
+ type: 'EpSelect',
199
+ props: {
200
+ api: '/api-globalization/api/accountSet/queryLatestVerAccountSet',
201
+ labelKey: 'accountSetName',
202
+ valueKey: 'accountSetCode',
203
+ },
204
+ }
205
+
206
+ // 仓库 - 远程搜索(数据量大,输入关键词搜索)
207
+ {
208
+ prop: 'warehouseCode',
209
+ label: '仓库',
210
+ type: 'EpSelect',
211
+ props: {
212
+ api: '/api-wms/api/warehouse/search/list',
213
+ method: 'post',
214
+ remote: true,
215
+ filterable: true,
216
+ reqData: {
217
+ statusList: [1],
218
+ '$query':'name',
219
+ pageNum: 1,
220
+ pageSize: 20,
221
+ },
222
+ labelKey: 'name',
223
+ valueKey: 'code',
224
+ },
225
+ }
226
+
227
+ // 人员 - 远程搜索 + 自定义格式(同时展示编码和名称)
228
+ {
229
+ prop: 'personAccount',
230
+ label: '人员',
231
+ type: 'EpSelect',
232
+ props: {
233
+ api: '/api-u/api/saas/user/personInfoManage/queryPersonInfoPage',
234
+ method: 'post',
235
+ remote: true,
236
+ filterable: true,
237
+ reqData: {
238
+ page: 1,
239
+ pageSize: 20,
240
+ searchText: '$query',
241
+ },
242
+ labelKey: 'name',
243
+ valueKey: 'account',
244
+ formatLabel: (item) => `${item.account || ''} ${item.name || ''}`,
245
+ },
246
+ }
247
+ ```
248
+
249
+ > `reqData` 中 `$query` 为占位符,组件会自动替换为用户输入的搜索关键词。