index.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <script setup lang="ts">
  2. import { ElMessage } from 'element-plus'
  3. import ImageUpload from '@/components/FsImageUpload/index.vue'
  4. const images = ref([])
  5. // 手动上传数据
  6. const images2 = ref([])
  7. const images3 = ref([])
  8. const imageUploadRef = ref()
  9. const isReload = ref(false)
  10. const onRemove = (file: any) => {
  11. console.log(file)
  12. }
  13. const uploadFunction = (item: any) => {
  14. return new Promise(() => {
  15. item.status = 'uploading'
  16. item.progress = 50
  17. setTimeout(() => {
  18. item.progress = 90
  19. }, 1000)
  20. setTimeout(() => {
  21. item.progress = 100
  22. item.status = Math.random() > 0.5 ? 'success' : 'danger'
  23. }, 1500)
  24. })
  25. }
  26. const upload = () => {
  27. imageUploadRef.value?.submit()
  28. }
  29. const submit = () => {
  30. if (!imageUploadRef.value?.checkUpload()) {
  31. ElMessage.error('请等待图片上传完成')
  32. return
  33. }
  34. }
  35. </script>
  36. <template>
  37. <el-card header="基础示例" shadow="never">
  38. <ImageUpload
  39. v-model="images"
  40. :readonly="isReload"
  41. :limit="5"
  42. :uploadFunction="uploadFunction"
  43. drag
  44. @remove="onRemove"
  45. />
  46. <div class="flex items-center mt-2">
  47. <div>是否只读:</div>
  48. <el-radio-group v-model="isReload">
  49. <el-radio label="是" :value="true"> </el-radio>
  50. <el-radio label="否" :value="false"> </el-radio>
  51. </el-radio-group>
  52. </div>
  53. </el-card>
  54. <el-card header="支持多选" shadow="never" class="mt-3">
  55. <ImageUpload v-model="images2" multiple :limit="5" :uploadFunction="uploadFunction" @remove="onRemove" />
  56. </el-card>
  57. <el-card header="基础示例" shadow="never" class="mt-3">
  58. <ImageUpload
  59. v-model="images3"
  60. :auto-upload="false"
  61. :limit="5"
  62. :uploadFunction="uploadFunction"
  63. ref="imageUploadRef"
  64. @remove="onRemove"
  65. />
  66. <div class="flex items-center mt-2">
  67. <el-button type="primary" @click="upload">手动上传</el-button>
  68. <el-button type="primary" @click="submit">检查是否上传完毕</el-button>
  69. </div>
  70. </el-card>
  71. </template>
  72. <style scoped></style>