Bläddra i källkod

上传组件单独使用

tongshangming 2 år sedan
förälder
incheckning
42ca5a7764
2 ändrade filer med 20 tillägg och 17 borttagningar
  1. 13 11
      src/components/form/ElFileUpload.vue
  2. 7 6
      src/components/form/ElImageUpload.vue

+ 13 - 11
src/components/form/ElFileUpload.vue

@@ -8,8 +8,8 @@ import type { UploadProps, UploadFile } from 'element-plus'
 import type { BasicFormItem } from '@/types/form'
 
 interface Props {
-  item: BasicFormItem
   modelValue: any
+  item?: BasicFormItem
   fileSize?: number | string
   uploadApi?: string
   oss?: boolean
@@ -58,17 +58,19 @@ const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
   uploadList.value = uploadFiles
 }
 
-// 接口需要的属性
-props.item.extra = computed(() =>
-  uploadList.value.map((item: any) => ({
-    name: item.name,
-    url: item.response?.url || item.url
-  }))
-)
 // 动态属性
 const attrs: any = props.oss ? { 'http-request': ossUpload } : {}
-if (!props.item.props?.onSuccess) {
-  attrs['on-success'] = handleUploadSuccess
+if (props.item) {
+  // 接口需要的属性
+  props.item.extra = computed(() =>
+    uploadList.value.map((item: any) => ({
+      name: item.name,
+      url: item.response?.url || item.url
+    }))
+  )
+  if (!props.item.props?.onSuccess) {
+    attrs['on-success'] = handleUploadSuccess
+  }
 }
 </script>
 
@@ -81,7 +83,7 @@ if (!props.item.props?.onSuccess) {
     :on-remove="handleRemove"
     v-bind="{ ...attrs, ...$attrs }"
   >
-    <template #[slot.name]="slotProps" v-for="slot in item.slots" :key="slot.alias">
+    <template #[slot.name]="slotProps" v-for="slot in item?.slots" :key="slot.alias">
       <slot :name="slot.alias" v-bind="slotProps">
         <el-button type="primary">上传</el-button>
       </slot>

+ 7 - 6
src/components/form/ElImageUpload.vue

@@ -8,8 +8,8 @@ import type { UploadProps, UploadFile } from 'element-plus'
 import type { BasicFormItem } from '@/types/form'
 
 interface Props {
-  item: BasicFormItem
   modelValue: any
+  item?: BasicFormItem
   size?: number | string
   iconSize?: number | string
   fileSize?: number | string
@@ -88,13 +88,14 @@ const closeViewer = () => {
   showViewer.value = false
 }
 
-// 接口需要的属性
-props.item.extra = computed(() => uploadList.value.map((item: any) => item.response?.url || item.url))
-
 // 动态属性
 const attrs: any = props.oss ? { 'http-request': ossUpload } : {}
-if (!props.item.props?.onSuccess) {
-  attrs['on-success'] = handleUploadSuccess
+if (props.item) {
+  // 接口需要的属性
+  props.item.extra = computed(() => uploadList.value.map((item: any) => item.response?.url || item.url))
+  if (!props.item.props?.onSuccess) {
+    attrs['on-success'] = handleUploadSuccess
+  }
 }
 </script>