fast-element-plus 1.0.0-alpha.9 → 1.0.1

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 (155) hide show
  1. package/dist/index.full.js +3180 -4581
  2. package/dist/index.full.js.map +1 -1
  3. package/dist/index.full.min.js +5 -5
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +5 -5
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +3180 -4581
  8. package/dist/index.full.mjs.map +1 -1
  9. package/dist/styles/index.css +2 -2
  10. package/es/components/avatar/index.d.ts +1 -1
  11. package/es/components/avatar/index.mjs.map +1 -1
  12. package/es/components/avatar/src/avatar.d.ts +18 -102
  13. package/es/components/avatar/src/avatar.mjs +1 -2
  14. package/es/components/avatar/src/avatar.mjs.map +1 -1
  15. package/es/components/button/index.d.ts +1 -1
  16. package/es/components/button/index.mjs.map +1 -1
  17. package/es/components/button/src/button.d.ts +35 -180
  18. package/es/components/button/src/button.mjs +14 -4
  19. package/es/components/button/src/button.mjs.map +1 -1
  20. package/es/components/carNumber/src/carNumber.d.ts +58 -194
  21. package/es/components/contextMenu/src/contextMenu.mjs +1 -1
  22. package/es/components/contextMenu/src/contextMenu.mjs.map +1 -1
  23. package/es/components/dialog/src/dialog.d.ts +45 -297
  24. package/es/components/drawer/src/drawer.d.ts +72 -450
  25. package/es/components/form/src/form.d.ts +28 -133
  26. package/es/components/form/src/formItem.d.ts +32 -137
  27. package/es/components/iconSelector/src/iconSelector.mjs +2 -2
  28. package/es/components/iconSelector/src/iconSelector.mjs.map +1 -1
  29. package/es/components/image/src/image.d.ts +43 -253
  30. package/es/components/select/src/select.d.ts +25 -81
  31. package/es/components/select/src/select.mjs +1 -0
  32. package/es/components/select/src/select.mjs.map +1 -1
  33. package/es/components/selectPage/src/selectPage.d.ts +19 -61
  34. package/es/components/selectV2/src/selectV2.d.ts +25 -81
  35. package/es/components/selectV2/src/selectV2.mjs +1 -0
  36. package/es/components/selectV2/src/selectV2.mjs.map +1 -1
  37. package/es/components/table/src/table.d.ts +5 -12
  38. package/es/components/table/src/table.mjs +4 -6
  39. package/es/components/table/src/table.mjs.map +1 -1
  40. package/es/components/table/src/table.state.d.ts +1 -1
  41. package/es/components/table/src/table.type.d.ts +4 -1
  42. package/es/components/table/src/table.type.mjs.map +1 -1
  43. package/es/components/table/src/tableColumn.d.ts +1 -1
  44. package/es/components/table/src/tableColumn.mjs +7 -7
  45. package/es/components/table/src/tableColumn.mjs.map +1 -1
  46. package/es/components/table/src/tableSearchForm.d.ts +6 -4
  47. package/es/components/table/src/tableSearchForm.mjs +2 -2
  48. package/es/components/table/src/tableSearchForm.mjs.map +1 -1
  49. package/es/components/table/src/useTable.mjs +3 -3
  50. package/es/components/table/src/useTable.mjs.map +1 -1
  51. package/es/components/tree/src/tree.d.ts +23 -653
  52. package/es/components/tree/src/tree.mjs +1 -1
  53. package/es/components/tree/src/tree.mjs.map +1 -1
  54. package/es/components/tree/src/tree.type.d.ts +1 -1
  55. package/es/components/treeSelect/src/treeSelect.d.ts +20 -62
  56. package/es/components/treeSelect/src/treeSelect.mjs +1 -0
  57. package/es/components/treeSelect/src/treeSelect.mjs.map +1 -1
  58. package/es/components/upload/src/upload.d.ts +298 -460
  59. package/es/components/upload/src/useUpload.mjs +2 -2
  60. package/es/components/upload/src/useUpload.mjs.map +1 -1
  61. package/es/components/uploadImage/src/uploadImage.d.ts +295 -394
  62. package/es/components/uploadImage/src/uploadImage.mjs +1 -1
  63. package/es/components/uploadImage/src/uploadImage.mjs.map +1 -1
  64. package/es/components/uploadImages/src/uploadImages.d.ts +300 -420
  65. package/es/components/uploadImages/src/uploadImages.mjs +4 -4
  66. package/es/components/uploadImages/src/uploadImages.mjs.map +1 -1
  67. package/es/constants/regex.mjs +13 -13
  68. package/es/constants/regex.mjs.map +1 -1
  69. package/es/directive.d.ts +1 -1
  70. package/es/directives/click-copy/index.d.ts +1 -1
  71. package/es/directives/click-debounce/index.d.ts +1 -1
  72. package/es/directives/click-draggable/index.d.ts +1 -1
  73. package/es/directives/click-icon-copy/index.d.ts +1 -1
  74. package/es/directives/click-longpress/index.d.ts +1 -1
  75. package/es/directives/click-throttle/index.d.ts +1 -1
  76. package/es/element-plus.mjs +1 -1
  77. package/es/element-plus.mjs.map +1 -1
  78. package/es/make-installer.mjs +4 -0
  79. package/es/make-installer.mjs.map +1 -1
  80. package/es/version.d.ts +1 -1
  81. package/es/version.mjs +1 -1
  82. package/es/version.mjs.map +1 -1
  83. package/lib/components/avatar/index.d.ts +1 -1
  84. package/lib/components/avatar/index.js.map +1 -1
  85. package/lib/components/avatar/src/avatar.d.ts +18 -102
  86. package/lib/components/avatar/src/avatar.js +1 -1
  87. package/lib/components/avatar/src/avatar.js.map +1 -1
  88. package/lib/components/button/index.d.ts +1 -1
  89. package/lib/components/button/index.js.map +1 -1
  90. package/lib/components/button/src/button.d.ts +35 -180
  91. package/lib/components/button/src/button.js +1 -1
  92. package/lib/components/button/src/button.js.map +1 -1
  93. package/lib/components/carNumber/src/carNumber.d.ts +58 -194
  94. package/lib/components/contextMenu/src/contextMenu.js +1 -1
  95. package/lib/components/contextMenu/src/contextMenu.js.map +1 -1
  96. package/lib/components/dialog/src/dialog.d.ts +45 -297
  97. package/lib/components/drawer/src/drawer.d.ts +72 -450
  98. package/lib/components/form/src/form.d.ts +28 -133
  99. package/lib/components/form/src/formItem.d.ts +32 -137
  100. package/lib/components/image/src/image.d.ts +43 -253
  101. package/lib/components/select/src/select.d.ts +25 -81
  102. package/lib/components/select/src/select.js +1 -1
  103. package/lib/components/select/src/select.js.map +1 -1
  104. package/lib/components/selectPage/src/selectPage.d.ts +19 -61
  105. package/lib/components/selectV2/src/selectV2.d.ts +25 -81
  106. package/lib/components/selectV2/src/selectV2.js +1 -1
  107. package/lib/components/selectV2/src/selectV2.js.map +1 -1
  108. package/lib/components/table/src/table.d.ts +5 -12
  109. package/lib/components/table/src/table.js +1 -1
  110. package/lib/components/table/src/table.js.map +1 -1
  111. package/lib/components/table/src/table.state.d.ts +1 -1
  112. package/lib/components/table/src/table.type.d.ts +4 -1
  113. package/lib/components/table/src/table.type.js.map +1 -1
  114. package/lib/components/table/src/tableColumn.d.ts +1 -1
  115. package/lib/components/table/src/tableColumn.js +1 -1
  116. package/lib/components/table/src/tableColumn.js.map +1 -1
  117. package/lib/components/table/src/tableSearchForm.d.ts +6 -4
  118. package/lib/components/table/src/tableSearchForm.js +1 -1
  119. package/lib/components/table/src/tableSearchForm.js.map +1 -1
  120. package/lib/components/table/src/useTable.js +1 -1
  121. package/lib/components/table/src/useTable.js.map +1 -1
  122. package/lib/components/tree/src/tree.d.ts +23 -653
  123. package/lib/components/tree/src/tree.js +1 -1
  124. package/lib/components/tree/src/tree.js.map +1 -1
  125. package/lib/components/tree/src/tree.type.d.ts +1 -1
  126. package/lib/components/treeSelect/src/treeSelect.d.ts +20 -62
  127. package/lib/components/treeSelect/src/treeSelect.js +1 -1
  128. package/lib/components/treeSelect/src/treeSelect.js.map +1 -1
  129. package/lib/components/upload/src/upload.d.ts +298 -460
  130. package/lib/components/upload/src/useUpload.js +1 -1
  131. package/lib/components/upload/src/useUpload.js.map +1 -1
  132. package/lib/components/uploadImage/src/uploadImage.d.ts +295 -394
  133. package/lib/components/uploadImage/src/uploadImage.js +1 -1
  134. package/lib/components/uploadImage/src/uploadImage.js.map +1 -1
  135. package/lib/components/uploadImages/src/uploadImages.d.ts +300 -420
  136. package/lib/components/uploadImages/src/uploadImages.js +1 -1
  137. package/lib/components/uploadImages/src/uploadImages.js.map +1 -1
  138. package/lib/constants/regex.js +1 -1
  139. package/lib/constants/regex.js.map +1 -1
  140. package/lib/directive.d.ts +1 -1
  141. package/lib/directives/click-copy/index.d.ts +1 -1
  142. package/lib/directives/click-debounce/index.d.ts +1 -1
  143. package/lib/directives/click-draggable/index.d.ts +1 -1
  144. package/lib/directives/click-icon-copy/index.d.ts +1 -1
  145. package/lib/directives/click-longpress/index.d.ts +1 -1
  146. package/lib/directives/click-throttle/index.d.ts +1 -1
  147. package/lib/element-plus.js +1 -1
  148. package/lib/element-plus.js.map +1 -1
  149. package/lib/make-installer.js +1 -1
  150. package/lib/make-installer.js.map +1 -1
  151. package/lib/version.d.ts +1 -1
  152. package/lib/version.js +1 -1
  153. package/lib/version.js.map +1 -1
  154. package/package.json +8 -8
  155. package/styles/components/contextMenu.scss +2 -2
@@ -14,7 +14,7 @@ const useUpload = (componentName, fileTypeName, props, emit, data) => {
14
14
  const maxSizeKB = new Decimal(isNumber(data?.maxSize) ? data?.maxSize : Number(data?.maxSize));
15
15
  const maxSizeMB = maxSizeKB.div(mbNum);
16
16
  onMounted(() => {
17
- if (!data.uploadApi && !data.uploadUrl) {
17
+ if (props.autoUpload && !data.uploadApi && !data.uploadUrl) {
18
18
  consoleWarn(componentName, "['uploadApi', 'uploadUrl'] 属性必须二选一。");
19
19
  }
20
20
  });
@@ -43,7 +43,7 @@ const useUpload = (componentName, fileTypeName, props, emit, data) => {
43
43
  if (props.data) {
44
44
  propsData = uploadUtil.getPropsData(options.file, props.data);
45
45
  }
46
- if (!data?.uploadUrl && !data?.uploadUrl) {
46
+ if (!data?.uploadApi && !data?.uploadUrl) {
47
47
  ElMessage.error(`上传${fileTypeName}Api或地址不能为空`);
48
48
  consoleError(componentName, `上传${fileTypeName}接口 “uploadApi” 或地址 “uploadUrl” 不能为空`);
49
49
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"useUpload.mjs","sources":["../../../../../packages/components/upload/src/useUpload.ts"],"sourcesContent":["import { inject, onMounted, ref, watch } from \"vue\";\nimport { ElMessage, ElNotification, formContextKey, formItemContextKey, genFileId } from \"element-plus\";\nimport { consoleError, consoleWarn } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { Decimal } from \"decimal.js\";\nimport { isArray, isNumber, isString } from \"lodash-unified\";\nimport { uploadUtil } from \"../utils/upload\";\nimport type { UploadFile, UploadFiles, UploadProps, UploadRawFile, UploadRequestOptions, UploadUserFile } from \"element-plus\";\n\nexport const useUpload = <T extends string | string[]>(\n\tcomponentName: string,\n\tfileTypeName: string,\n\tprops: UploadProps & {\n\t\tmodelValue: T;\n\t},\n\temit: ((event: \"update:fileList\", value: UploadUserFile[]) => void) &\n\t\t((event: \"update:modelValue\", value: T) => void) &\n\t\t((event: \"change\", value: T) => void),\n\tdata?: {\n\t\tmaxSize?: string | number;\n\t\tuploadApi?: (formData: FormData) => Promise<string>;\n\t\tuploadUrl?: string;\n\t}\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\n) => {\n\tconst fileList = useVModel(props, \"fileList\", emit, { passive: true });\n\n\tconst loading = ref(false);\n\n\t// 获取 el-form 组件上下文\n\tconst formContext = inject(formContextKey, undefined);\n\t// 获取 el-form-item 组件上下文\n\tconst formItemContext = inject(formItemContextKey, undefined);\n\n\tconst mbNum = new Decimal(1024);\n\tconst maxSizeKB = new Decimal(isNumber(data?.maxSize) ? data?.maxSize : Number(data?.maxSize));\n\tconst maxSizeMB = maxSizeKB.div(mbNum);\n\n\tonMounted(() => {\n\t\tif (!data.uploadApi && !data.uploadUrl) {\n\t\t\tconsoleWarn(componentName, \"['uploadApi', 'uploadUrl'] 属性必须二选一。\");\n\t\t}\n\t});\n\n\tconst handleValue = (): void => {\n\t\tif (fileList.value.length > 0) {\n\t\t\tif (isString(props.modelValue)) {\n\t\t\t\temit(\"update:modelValue\", fileList.value[0].url as T);\n\t\t\t\temit(\"change\", fileList.value[0].url as T);\n\t\t\t} else {\n\t\t\t\tif (props.multiple) {\n\t\t\t\t\tconst value = fileList.value.map((m) => m.url);\n\t\t\t\t\temit(\"update:modelValue\", value as T);\n\t\t\t\t\temit(\"change\", value as T);\n\t\t\t\t} else {\n\t\t\t\t\temit(\"update:modelValue\", fileList.value[0].url as T);\n\t\t\t\t\temit(\"change\", fileList.value[0].url as T);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"change\", null);\n\t\t}\n\t};\n\n\tconst handleHttpRequest = async (options: UploadRequestOptions): Promise<void> => {\n\t\tlet propsData;\n\t\tif (props.data) {\n\t\t\tpropsData = uploadUtil.getPropsData(options.file, props.data);\n\t\t}\n\t\tif (!data?.uploadUrl && !data?.uploadUrl) {\n\t\t\tElMessage.error(`上传${fileTypeName}Api或地址不能为空`);\n\t\t\tconsoleError(componentName, `上传${fileTypeName}接口 “uploadApi” 或地址 “uploadUrl” 不能为空`);\n\t\t\treturn;\n\t\t}\n\t\tloading.value = true;\n\t\ttry {\n\t\t\tlet fileUrl: string;\n\t\t\tif (data.uploadApi) {\n\t\t\t\tfileUrl = await uploadUtil.uploadFileByApi(data.uploadApi, options.file, options.filename, propsData);\n\t\t\t} else {\n\t\t\t\tfileUrl = await uploadUtil.uploadFile(data.uploadUrl, options.file, options.filename, propsData);\n\t\t\t}\n\t\t\toptions.onSuccess(fileUrl);\n\t\t} finally {\n\t\t\tloading.value = false;\n\t\t}\n\t};\n\n\tconst handleOnSuccess = (fileUrl: string, uploadFile: UploadFile, uploadFiles: UploadFiles): void => {\n\t\tif (!fileUrl) return;\n\t\tif (!props.multiple && uploadFiles.length > 1) {\n\t\t\tuploadFiles.shift();\n\t\t}\n\t\tuploadFile.url = fileUrl;\n\t\thandleValue();\n\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\tformItemContext?.prop && formContext?.validateField([formItemContext.prop as string]);\n\t\tElMessage.success(\"上传成功\");\n\t\tprops.onSuccess && props.onSuccess(fileUrl, uploadFile, uploadFiles);\n\t};\n\n\tconst handleOnError = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles): void => {\n\t\tElNotification({\n\t\t\tmessage: `【${uploadFile.name}】${fileTypeName}上传失败,请您重新上传`,\n\t\t\ttype: \"error\",\n\t\t});\n\t\tprops.onError && props.onError(error, uploadFile, uploadFiles);\n\t};\n\n\tconst handleOnExceed = (files: File[], uploadFiles: UploadUserFile[]): void => {\n\t\tElMessage.warning(`最多只能上传 ${props.limit} 个${fileTypeName},请移除后再进行上传`);\n\t\tprops.onExceed && props.onExceed(files, uploadFiles);\n\t};\n\n\tconst handleOnUpload = (file: UploadFile | UploadRawFile): boolean => {\n\t\tconst fileSizeKB = new Decimal(file.size).div(mbNum);\n\n\t\tif (fileSizeKB.greaterThan(maxSizeKB)) {\n\t\t\tconsoleWarn(componentName, `【${file.name}】${fileTypeName}上传大小不能超过 ${maxSizeMB.toString()}MB`);\n\t\t\tElMessage.warning(`【${file.name}】${fileTypeName}上传大小不能超过 ${maxSizeMB.toString()}MB`);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst fileType = \"type\" in file ? file.type : file.raw.type;\n\n\t\tif (props.accept && props.accept.split(\",\").every((e) => e !== fileType)) {\n\t\t\tconst uploadFileNames = uploadUtil.detectFileType(props.accept);\n\t\t\tconsoleError(componentName, `只允许上传【${uploadFileNames}】格式的${fileTypeName}`);\n\t\t\tElMessage.error(`只允许上传【${uploadFileNames}】格式的${fileTypeName}`);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * 监听 v-model 绑定数据\n\t */\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newValue) => {\n\t\t\tif (newValue) {\n\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\tfileList.value = newValue.map((m) => {\n\t\t\t\t\t\tconst find = fileList.value.find((f) => f.url === m);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: \"\",\n\t\t\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\t\t\tuid: find?.uid ?? genFileId(),\n\t\t\t\t\t\t\turl: m,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst find = fileList.value.find((f) => f.url === newValue);\n\t\t\t\t\tfileList.value = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"\",\n\t\t\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\t\t\tuid: find?.uid ?? genFileId(),\n\t\t\t\t\t\t\turl: newValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\timmediate: true,\n\t\t}\n\t);\n\n\treturn {\n\t\tfileList,\n\t\tloading,\n\t\tformContext,\n\t\tformItemContext,\n\t\tmaxSizeMB,\n\t\thandleValue,\n\t\thandleHttpRequest,\n\t\thandleOnSuccess,\n\t\thandleOnError,\n\t\thandleOnExceed,\n\t\thandleOnUpload,\n\t};\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useUpload.mjs","sources":["../../../../../packages/components/upload/src/useUpload.ts"],"sourcesContent":["import { inject, onMounted, ref, watch } from \"vue\";\nimport { ElMessage, ElNotification, formContextKey, formItemContextKey, genFileId } from \"element-plus\";\nimport { consoleError, consoleWarn } from \"@fast-china/utils\";\nimport { useVModel } from \"@vueuse/core\";\nimport { Decimal } from \"decimal.js\";\nimport { isArray, isNumber, isString } from \"lodash-unified\";\nimport { uploadUtil } from \"../utils/upload\";\nimport type { UploadFile, UploadFiles, UploadProps, UploadRawFile, UploadRequestOptions, UploadUserFile } from \"element-plus\";\n\nexport const useUpload = <T extends string | string[]>(\n\tcomponentName: string,\n\tfileTypeName: string,\n\tprops: UploadProps & {\n\t\tmodelValue: T;\n\t},\n\temit: ((event: \"update:fileList\", value: UploadUserFile[]) => void) &\n\t\t((event: \"update:modelValue\", value: T) => void) &\n\t\t((event: \"change\", value: T) => void),\n\tdata?: {\n\t\tmaxSize?: string | number;\n\t\tuploadApi?: (formData: FormData) => Promise<string>;\n\t\tuploadUrl?: string;\n\t}\n\t// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\n) => {\n\tconst fileList = useVModel(props, \"fileList\", emit, { passive: true });\n\n\tconst loading = ref(false);\n\n\t// 获取 el-form 组件上下文\n\tconst formContext = inject(formContextKey, undefined);\n\t// 获取 el-form-item 组件上下文\n\tconst formItemContext = inject(formItemContextKey, undefined);\n\n\tconst mbNum = new Decimal(1024);\n\tconst maxSizeKB = new Decimal(isNumber(data?.maxSize) ? data?.maxSize : Number(data?.maxSize));\n\tconst maxSizeMB = maxSizeKB.div(mbNum);\n\n\tonMounted(() => {\n\t\tif (props.autoUpload && !data.uploadApi && !data.uploadUrl) {\n\t\t\tconsoleWarn(componentName, \"['uploadApi', 'uploadUrl'] 属性必须二选一。\");\n\t\t}\n\t});\n\n\tconst handleValue = (): void => {\n\t\tif (fileList.value.length > 0) {\n\t\t\tif (isString(props.modelValue)) {\n\t\t\t\temit(\"update:modelValue\", fileList.value[0].url as T);\n\t\t\t\temit(\"change\", fileList.value[0].url as T);\n\t\t\t} else {\n\t\t\t\tif (props.multiple) {\n\t\t\t\t\tconst value = fileList.value.map((m) => m.url);\n\t\t\t\t\temit(\"update:modelValue\", value as T);\n\t\t\t\t\temit(\"change\", value as T);\n\t\t\t\t} else {\n\t\t\t\t\temit(\"update:modelValue\", fileList.value[0].url as T);\n\t\t\t\t\temit(\"change\", fileList.value[0].url as T);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\temit(\"update:modelValue\", null);\n\t\t\temit(\"change\", null);\n\t\t}\n\t};\n\n\tconst handleHttpRequest = async (options: UploadRequestOptions): Promise<void> => {\n\t\tlet propsData;\n\t\tif (props.data) {\n\t\t\tpropsData = uploadUtil.getPropsData(options.file, props.data);\n\t\t}\n\t\tif (!data?.uploadApi && !data?.uploadUrl) {\n\t\t\tElMessage.error(`上传${fileTypeName}Api或地址不能为空`);\n\t\t\tconsoleError(componentName, `上传${fileTypeName}接口 “uploadApi” 或地址 “uploadUrl” 不能为空`);\n\t\t\treturn;\n\t\t}\n\t\tloading.value = true;\n\t\ttry {\n\t\t\tlet fileUrl: string;\n\t\t\tif (data.uploadApi) {\n\t\t\t\tfileUrl = await uploadUtil.uploadFileByApi(data.uploadApi, options.file, options.filename, propsData);\n\t\t\t} else {\n\t\t\t\tfileUrl = await uploadUtil.uploadFile(data.uploadUrl, options.file, options.filename, propsData);\n\t\t\t}\n\t\t\toptions.onSuccess(fileUrl);\n\t\t} finally {\n\t\t\tloading.value = false;\n\t\t}\n\t};\n\n\tconst handleOnSuccess = (fileUrl: string, uploadFile: UploadFile, uploadFiles: UploadFiles): void => {\n\t\tif (!fileUrl) return;\n\t\tif (!props.multiple && uploadFiles.length > 1) {\n\t\t\tuploadFiles.shift();\n\t\t}\n\t\tuploadFile.url = fileUrl;\n\t\thandleValue();\n\t\t// 调用 el-form 内部的校验方法(可自动校验)\n\t\tformItemContext?.prop && formContext?.validateField([formItemContext.prop as string]);\n\t\tElMessage.success(\"上传成功\");\n\t\tprops.onSuccess && props.onSuccess(fileUrl, uploadFile, uploadFiles);\n\t};\n\n\tconst handleOnError = (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles): void => {\n\t\tElNotification({\n\t\t\tmessage: `【${uploadFile.name}】${fileTypeName}上传失败,请您重新上传`,\n\t\t\ttype: \"error\",\n\t\t});\n\t\tprops.onError && props.onError(error, uploadFile, uploadFiles);\n\t};\n\n\tconst handleOnExceed = (files: File[], uploadFiles: UploadUserFile[]): void => {\n\t\tElMessage.warning(`最多只能上传 ${props.limit} 个${fileTypeName},请移除后再进行上传`);\n\t\tprops.onExceed && props.onExceed(files, uploadFiles);\n\t};\n\n\tconst handleOnUpload = (file: UploadFile | UploadRawFile): boolean => {\n\t\tconst fileSizeKB = new Decimal(file.size).div(mbNum);\n\n\t\tif (fileSizeKB.greaterThan(maxSizeKB)) {\n\t\t\tconsoleWarn(componentName, `【${file.name}】${fileTypeName}上传大小不能超过 ${maxSizeMB.toString()}MB`);\n\t\t\tElMessage.warning(`【${file.name}】${fileTypeName}上传大小不能超过 ${maxSizeMB.toString()}MB`);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst fileType = \"type\" in file ? file.type : file.raw.type;\n\n\t\tif (props.accept && props.accept.split(\",\").every((e) => e !== fileType)) {\n\t\t\tconst uploadFileNames = uploadUtil.detectFileType(props.accept);\n\t\t\tconsoleError(componentName, `只允许上传【${uploadFileNames}】格式的${fileTypeName}`);\n\t\t\tElMessage.error(`只允许上传【${uploadFileNames}】格式的${fileTypeName}`);\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\t/**\n\t * 监听 v-model 绑定数据\n\t */\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newValue) => {\n\t\t\tif (newValue) {\n\t\t\t\tif (isArray(newValue)) {\n\t\t\t\t\tfileList.value = newValue.map((m) => {\n\t\t\t\t\t\tconst find = fileList.value.find((f) => f.url === m);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tname: \"\",\n\t\t\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\t\t\tuid: find?.uid ?? genFileId(),\n\t\t\t\t\t\t\turl: m,\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst find = fileList.value.find((f) => f.url === newValue);\n\t\t\t\t\tfileList.value = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: \"\",\n\t\t\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\t\t\tuid: find?.uid ?? genFileId(),\n\t\t\t\t\t\t\turl: newValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\timmediate: true,\n\t\t}\n\t);\n\n\treturn {\n\t\tfileList,\n\t\tloading,\n\t\tformContext,\n\t\tformItemContext,\n\t\tmaxSizeMB,\n\t\thandleValue,\n\t\thandleHttpRequest,\n\t\thandleOnSuccess,\n\t\thandleOnError,\n\t\thandleOnExceed,\n\t\thandleOnUpload,\n\t};\n};\n"],"names":[],"mappings":"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"}