Blame view

src/components/community/UploadVedio.vue 2.66 KB
6ec243d6   wuxw   v1.9 点击提交后,成功提示没有...
1
  <template>
8fc7c791   wuxw   测试完成房屋装修模块
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
    <div class="upload-vedio-container">
      <div v-if="progress > 0" class="progress-container">
        <el-progress :percentage="progress" :stroke-width="2" />
        <div class="file-name">{{ fileName }}</div>
      </div>
      <el-button type="primary" @click="triggerUpload">
        {{ $t('common.upload') }}
      </el-button>
      <input
        ref="fileInput"
        type="file"
        accept="video/*"
        hidden
        @change="handleFileChange"
      />
    </div>
  </template>
  
  <script>
  import { uploadVedio } from '@/api/community/listRoomDecorationRecordApi'
  import { getCommunityId } from '@/api/community/communityApi'
  
  export default {
    name: 'UploadVedio',
    props: {
      callBackListener: {
        type: String,
        default: ''
      },
      callBackFunction: {
        type: String,
        default: ''
      }
    },
    data() {
      return {
        vedio: {},
        fileName: '',
        realFileName: '',
        progress: 0
      }
    },
    watch: {
      vedio: {
        handler(newVal) {
          this.$emit('change', newVal)
        },
        deep: true
      }
    },
    methods: {
      triggerUpload() {
        this.$refs.fileInput.click()
      },
      async handleFileChange(event) {
        const file = event.target.files[0]
        if (!file) return
  
        if (file.size > 500 * 1024 * 1024) {
          this.$message.error(this.$t('uploadVedio.sizeLimit'))
          return
        }
  
        this.fileName = file.name
        await this.uploadFile(file)
        event.target.value = null
      },
      async uploadFile(file) {
        const formData = new FormData()
        formData.append('uploadFile', file)
        formData.append('communityId', getCommunityId())
  
        try {
          const response = await uploadVedio(formData, {
            onUploadProgress: (progressEvent) => {
              const percentCompleted = Math.round(
                (progressEvent.loaded * 90) / progressEvent.total
              )
              this.progress = percentCompleted
            }
          })
  
          this.progress = 100
          this.realFileName = response.realFileName
          this.vedio = response
6ec243d6   wuxw   v1.9 点击提交后,成功提示没有...
87
          this.$message.success(this.$t('common.operationSuccess'))
8fc7c791   wuxw   测试完成房屋装修模块
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
        } catch (error) {
          this.$message.error(this.$t('uploadVedio.failed'))
          this.progress = 0
        }
      },
      clear() {
        this.vedio = {}
        this.fileName = ''
        this.realFileName = ''
        this.progress = 0
      },
      notifyVedio(fileName) {
        this.fileName = fileName
        this.realFileName = fileName
        this.progress = 100
      }
    }
  }
  </script>
  
  <style lang="scss" scoped>
  .upload-vedio-container {
    .progress-container {
      margin-bottom: 15px;
  
      .file-name {
        margin-top: 5px;
        font-size: 12px;
        color: #606266;
      }
    }
  }
  </style>