|
@@ -166,7 +166,7 @@
|
|
|
<span class="table-file-name" v-show="editIndex !== index">{{row.name}}</span>
|
|
|
<Input v-model="fileListShow[index].name" v-show="editIndex == index" style="width: 300px;" @on-change="checkName" />
|
|
|
<span style="color:#ed4014" v-show="editIndex == index && formatErr">{{$t('teachContent.specialChart')}}(?*:"<>\/|)</span>
|
|
|
- <Icon type="md-checkmark" v-show="editIndex == index && !formatErr" @click="confirmRename" class="rename-action-icon" />
|
|
|
+ <Icon type="md-checkmark" v-show="editIndex == index && !formatErr" @click="confirmRename('list')" class="rename-action-icon" />
|
|
|
<Icon type="md-close" v-show="editIndex == index" @click="cancelRename" class="rename-action-icon" />
|
|
|
</div>
|
|
|
</template>
|
|
@@ -178,7 +178,7 @@
|
|
|
<Icon type="md-download" size="18" color="white" :title="$t('teachContent.tips3')" @click="downloadFile(index)" />
|
|
|
<Icon v-if="activeType !== 'other' && (activeType == 'res' && row.extension != 'HTE')" type="md-eye" size="18" color="white" :title="$t('teachContent.tips4')" @click="openPreviewFile(index)" />
|
|
|
<Icon v-if="$access.can('admin.*|content-upd') || routerScope == 'private'" type="md-trash" size="18" color="white" :title="$t('teachContent.tips7')" @click="delFile(row,index)" />
|
|
|
- <Icon v-if="$access.can('admin.*|content-upd') || routerScope == 'private'" type="md-create" size="18" color="white" :title="$t('teachContent.tips6')" @click="rename(row,index)" />
|
|
|
+ <Icon v-if="$access.can('admin.*|content-upd') || routerScope == 'private'" type="md-create" size="18" color="white" :title="$t('teachContent.tips6')" @click="rename(row,index,'list')" />
|
|
|
</div>
|
|
|
</template>
|
|
|
</Table>
|
|
@@ -192,6 +192,7 @@
|
|
|
<Icon type="md-download" size="18" color="white" :title="$t('teachContent.tips3')" @click.stop="downloadFile(props.index)" />
|
|
|
<Icon type="md-eye" size="18" color="white" :title="$t('teachContent.tips4')" @click.stop="openPreviewFile(props.index)" />
|
|
|
<Icon v-if="$access.can('admin.*|content-upd') || routerScope == 'private'" type="md-trash" size="18" color="white" :title="$t('teachContent.tips7')" @click.stop="delFile(props.value, props.index)" />
|
|
|
+ <Icon v-if="$access.can('admin.*|content-upd') || routerScope == 'private'" type="md-create" size="18" color="white" :title="$t('teachContent.tips6')" @click.stop="rename(props.value, props.index, 'card')" />
|
|
|
<span style="color:white; float:right;margin-right:10px;">{{$jsFn.formatBytes(props.value.size)}}</span>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -222,6 +223,10 @@
|
|
|
<MyHTEXRender v-else-if="previewFile.extension == 'HTEX'" :url="previewFile.url"></MyHTEXRender>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <Modal v-model="edidNameStatus" title="重命名" @on-ok="confirmRename('card')" @on-cancel="cancelRename">
|
|
|
+ <span style="margin-right:10px">文件名:</span>
|
|
|
+ <Input v-model="edName" :placeholder="renameBefore" style="width: 300px" />
|
|
|
+ </Modal>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script>
|
|
@@ -239,6 +244,9 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ renameBefore: '',
|
|
|
+ edName: '',
|
|
|
+ edidNameStatus: false,
|
|
|
teachSpace: 0,
|
|
|
schoolBase: {
|
|
|
period: []
|
|
@@ -363,7 +371,18 @@ export default {
|
|
|
this.formatErr = false
|
|
|
}
|
|
|
},
|
|
|
- rename(row, index) {
|
|
|
+ /**
|
|
|
+ * type list:列表模式 card:图片模式
|
|
|
+ */
|
|
|
+ rename(row, index, type) {
|
|
|
+ if (type == 'list') {
|
|
|
+
|
|
|
+ } else if (type == 'card') {
|
|
|
+ this.edidNameStatus = true
|
|
|
+ this.edName = row.name
|
|
|
+ } else {
|
|
|
+ return
|
|
|
+ }
|
|
|
this.editIndex = index
|
|
|
this.renameBefore = row.name
|
|
|
},
|
|
@@ -374,11 +393,18 @@ export default {
|
|
|
this.fileListShow = JSON.parse(dataTemp);
|
|
|
this.editIndex = -1
|
|
|
},
|
|
|
- confirmRename() {
|
|
|
+ /**
|
|
|
+ * type list | card
|
|
|
+ */
|
|
|
+ confirmRename(mode) {
|
|
|
let editIndex = this.editIndex
|
|
|
- console.log(this.fileListShow[editIndex])
|
|
|
- let newName = this.fileListShow[editIndex].name
|
|
|
-
|
|
|
+ let newName = mode == 'list' ? this.fileListShow[editIndex].name : this.edName
|
|
|
+ // 检查文件后缀
|
|
|
+ let oldEx = this.renameBefore.substring(this.renameBefore.lastIndexOf('.'), this.renameBefore.length)
|
|
|
+ let newEx = newName.substring(newName.lastIndexOf('.'), newName.length)
|
|
|
+ if (oldEx != newEx) {
|
|
|
+ this.$Message('不能修改文件后缀名')
|
|
|
+ }
|
|
|
let params = {
|
|
|
scope: this.routerScope,
|
|
|
cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
@@ -388,6 +414,9 @@ export default {
|
|
|
this.$api.blob.blobRename(params).then(
|
|
|
res => {
|
|
|
this.$Message.success(this.$t('teachContent.nameOk'))
|
|
|
+ if (mode == 'card') {
|
|
|
+ this.$set(this.fileListShow[editIndex], 'name', newName)
|
|
|
+ }
|
|
|
let orginUrl = this.fileListShow[editIndex].url
|
|
|
let thum = this.fileListShow[editIndex].url
|
|
|
this.fileListShow[editIndex].blob = '/' + params.newName
|
|
@@ -410,52 +439,6 @@ export default {
|
|
|
).finally(() => {
|
|
|
this.editIndex = -1
|
|
|
})
|
|
|
- // if (this.fileListShow[this.editIndex].extension == 'HTEX') {
|
|
|
- // let newName = this.fileListShow[editIndex].name
|
|
|
- // this.containerClient.copyFolder(`res/${newName.replace('.HTEX', '/')}`, `res/${this.renameBefore.replace('.HTEX', '')}`).then(
|
|
|
- // res => {
|
|
|
- // this.$api.blob.deletePrefix({
|
|
|
- // cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
- // prefix: `res/${this.renameBefore.replace('.HTEX', '')}`
|
|
|
- // }).then(
|
|
|
- // res => {
|
|
|
- // this.$Message.success(this.$t('teachContent.nameOk'))
|
|
|
- // let orginUrl = this.fileListShow[editIndex].url
|
|
|
- // this.fileListShow[editIndex].blob = `/res/${this.newName}/index.json`
|
|
|
- // this.fileListShow[editIndex].url = orginUrl.replace(this.renameBefore, this.fileListShow[editIndex].name)
|
|
|
- // }
|
|
|
- // )
|
|
|
- // },
|
|
|
- // err => {
|
|
|
- // this.$Message.error(this.$t('teachContent.nameErr'))
|
|
|
- // }
|
|
|
- // ).finally(() => {
|
|
|
- // this.editIndex = -1
|
|
|
- // })
|
|
|
- // } else {
|
|
|
- // let sourceUrl = this.fileListShow[this.editIndex].url.substring(0, this.fileListShow[this.editIndex].url.lastIndexOf('?')) //截取授权之前的,授权不能encode
|
|
|
- // let targetUrl = this.fileListShow[this.editIndex].blob
|
|
|
- // targetUrl = targetUrl.replace(this.renameBefore, this.fileListShow[this.editIndex].name)
|
|
|
- // targetUrl = targetUrl.substring(1)
|
|
|
- // this.containerClient.copyBlob(targetUrl, sourceUrl, this.sasString).then(
|
|
|
- // res => {
|
|
|
- // //这里虽然是复制,但是是重命名操作,所以空间不会变化,就设置为0
|
|
|
- // this.containerClient.deleteBlob(this.fileListShow[editIndex].blob, 0).then(
|
|
|
- // res => {
|
|
|
- // this.$Message.success(this.$t('teachContent.nameOk'))
|
|
|
- // let orginUrl = this.fileListShow[editIndex].url
|
|
|
- // this.fileListShow[editIndex].blob = '/' + targetUrl
|
|
|
- // this.fileListShow[editIndex].url = orginUrl.replace(this.renameBefore, this.fileListShow[editIndex].name)
|
|
|
- // }
|
|
|
- // )
|
|
|
- // },
|
|
|
- // err => {
|
|
|
- // this.$Message.error(this.$t('teachContent.nameErr'))
|
|
|
- // }
|
|
|
- // ).finally(() => {
|
|
|
- // this.editIndex = -1
|
|
|
- // })
|
|
|
- // }
|
|
|
},
|
|
|
getFileUrl(files) { // 获取文件地址
|
|
|
this.preUpdFiles.push(...files)
|
|
@@ -741,23 +724,23 @@ export default {
|
|
|
{
|
|
|
label: this.$t('teachContent.filterVideo'),
|
|
|
type: 'video',
|
|
|
- icon: 'logo-youtube'
|
|
|
+ icon: 'iconfont icon-video-outline'
|
|
|
},
|
|
|
{
|
|
|
label: this.$t('teachContent.filterAudio'),
|
|
|
type: 'audio',
|
|
|
- icon: 'iconfont icon-audio2'
|
|
|
+ icon: 'iconfont icon-audio-outline'
|
|
|
},
|
|
|
{
|
|
|
label: this.$t('teachContent.filterDoc'),
|
|
|
type: 'doc',
|
|
|
- icon: 'logo-wordpress'
|
|
|
+ icon: 'iconfont icon-document'
|
|
|
},
|
|
|
|
|
|
{
|
|
|
label: this.$t('teachContent.filterOther'),
|
|
|
type: 'other',
|
|
|
- icon: 'md-filing'
|
|
|
+ icon: 'iconfont icon-other-grad'
|
|
|
}
|
|
|
]
|
|
|
},
|
|
@@ -875,107 +858,6 @@ export default {
|
|
|
this.$Message.error(this.$t('teachContent.props3'))
|
|
|
}
|
|
|
)
|
|
|
- // if (this.activeType == 'res') {
|
|
|
- // //批量删除HTEX需要循环删除每个文件夹下面的文件
|
|
|
- // this.selections.forEach((item, index) => {
|
|
|
- // this.$api.blob.deletePrefix({
|
|
|
- // cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
- // prefix: `res/${item.name.replace('.HTEX', '')}`,
|
|
|
- // scope: this.routerScope
|
|
|
- // }).then(
|
|
|
- // res => {
|
|
|
- // let fileNames = this.selections.map((item) => { return item.name })
|
|
|
- // for (let i = 0; i < this.fileList[this.activeType].length; i++) {
|
|
|
- // let index = fileNames.indexOf(this.fileList[this.activeType][i].name)
|
|
|
- // if (index > -1) {
|
|
|
- // this.sizeInfo[this.activeType] -= this.fileList[this.activeType][i].size
|
|
|
- // this.sizeInfo.total -= this.fileList[this.activeType][i].size
|
|
|
- // this.fileList[this.activeType].splice(i, 1)
|
|
|
- // i--
|
|
|
- // }
|
|
|
- // }
|
|
|
- // let fs = this.fileList[this.activeType] ? this.fileList[this.activeType] : []
|
|
|
- // this.fileListShow = this._.cloneDeep(fs)
|
|
|
- // this.$Message.success(this.$t('teachContent.props2'))
|
|
|
- // },
|
|
|
- // err => {
|
|
|
- // this.$Message.error(this.$t('teachContent.props3'))
|
|
|
- // }
|
|
|
- // ).finally(() => {
|
|
|
- // this.isLoading = false
|
|
|
- // })
|
|
|
- // })
|
|
|
- // //删除本地最近上传数据
|
|
|
- // let ids = this.selections.map(item => {
|
|
|
- // return item.id
|
|
|
- // })
|
|
|
- // this.delCacheFiles(ids)
|
|
|
- // } else {
|
|
|
- // let blobs = this.selections.map((item) => {
|
|
|
- // return item.url.substring(0, item.url.lastIndexOf('?'))
|
|
|
- // })
|
|
|
- // let ids = this.selections.map((item) => {
|
|
|
- // return item.id
|
|
|
- // })
|
|
|
- // this.$api.blob.deleteBlobs({
|
|
|
- // cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
- // urls: blobs,
|
|
|
- // scope: this.routerScope,
|
|
|
- // ids
|
|
|
- // }).then(
|
|
|
- // res => {
|
|
|
- // let thums = this.selections.map((item) => {
|
|
|
- // if (item.type == 'image') {
|
|
|
- // return item.url.substring(0, item.url.lastIndexOf('?')).replace('/image/', '/thum/')
|
|
|
- // } else if (item.extension == 'MP4') {
|
|
|
- // let n = item.url.substring(0, item.url.lastIndexOf('?')).replace('/video/', '/thum/')
|
|
|
- // return n.slice(0, n.lastIndexOf('.')) + '.png'
|
|
|
- // }
|
|
|
-
|
|
|
- // })
|
|
|
- // if (thums.length) {
|
|
|
- // this.$api.blob.deleteBlobs({
|
|
|
- // cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
- // urls: thums,
|
|
|
- // scope: this.routerScope,
|
|
|
- // ids: []
|
|
|
- // })
|
|
|
- // }
|
|
|
-
|
|
|
- // let files = this.selections.map((item) => { return item.blob })
|
|
|
- // for (let i = 0; i < this.fileList[this.activeType].length; i++) {
|
|
|
- // let index = files.indexOf(this.fileList[this.activeType][i].blob)
|
|
|
- // if (index != -1) {
|
|
|
- // this.sizeInfo[this.activeType] -= this.fileList[this.activeType][i].size
|
|
|
- // this.sizeInfo.total -= this.fileList[this.activeType][i].size
|
|
|
- // this.fileList[this.activeType].splice(i, 1)
|
|
|
- // i--
|
|
|
- // }
|
|
|
- // }
|
|
|
- // let fs = this.fileList[this.activeType] ? this.fileList[this.activeType] : []
|
|
|
- // this.fileListShow = this._.cloneDeep(fs)
|
|
|
- // this.$Message.success(this.$t('teachContent.props2'))
|
|
|
-
|
|
|
- // if (this.activeType == 'recent') {
|
|
|
- // this.selections.forEach(item => {
|
|
|
- // let type = item.type
|
|
|
- // if (this.fileList[type]) {
|
|
|
- // for (let i = 0; i < this.fileList[type].length; i++) {
|
|
|
- // if (item.id == this.fileList[type][i].id) {
|
|
|
- // this.fileList[type].splice(i, 1)
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // })
|
|
|
- // }
|
|
|
- // //删除本地最近上传数据
|
|
|
- // this.delCacheFiles(ids)
|
|
|
- // },
|
|
|
- // err => {
|
|
|
- // this.$Message.success(this.$t('teachContent.props3'))
|
|
|
- // }
|
|
|
- // )
|
|
|
- // }
|
|
|
}
|
|
|
})
|
|
|
},
|
|
@@ -992,87 +874,92 @@ export default {
|
|
|
//需要先删除CosmosDB记录的Blob信息
|
|
|
let params = {
|
|
|
scope: this.routerScope,
|
|
|
- name: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
- opt: 'del',
|
|
|
- id: [file.id]
|
|
|
+ cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
+ blobs: []
|
|
|
}
|
|
|
- this.$api.blob.BlobInfoMgt(params).then(
|
|
|
+ params.blobs.push({
|
|
|
+ path: file.blob.substring(1),
|
|
|
+ id: file.id
|
|
|
+ })
|
|
|
+ this.$api.blob.deleteBlobs(params).then(
|
|
|
res => {
|
|
|
- //这里开始真正的删除Blob
|
|
|
+ this.$Message.success(this.$t('teachContent.props2'))
|
|
|
+ //这里开始真正的删除Blob,后端处理,前端不用处理blob
|
|
|
//删除HTEX需要批量删除
|
|
|
- if (file.extension == 'HTEX') {
|
|
|
- this.sizeInfo[this.activeType] -= file.size
|
|
|
- this.sizeInfo.total -= file.size
|
|
|
- this.fileListShow.splice(index, 1)
|
|
|
- for (let i in this.fileList[this.activeType]) {
|
|
|
- if (this.fileList[this.activeType][i].url == file.url) {
|
|
|
- this.fileList[this.activeType].splice(i, 1)
|
|
|
- }
|
|
|
- }
|
|
|
- this.$api.blob.deletePrefix({
|
|
|
- cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
- prefix: `res/${file.name.replace('.HTEX', '')}`
|
|
|
- }).then(
|
|
|
- res => {
|
|
|
- this.$Message.success(this.$t('teachContent.props2'))
|
|
|
- },
|
|
|
- err => {
|
|
|
- // this.$Message.error(this.$t('teachContent.props3'))
|
|
|
- console.log('delete blob error')
|
|
|
- }
|
|
|
- ).finally(() => {
|
|
|
- this.isLoading = false
|
|
|
- })
|
|
|
- } else {
|
|
|
- this.sizeInfo[this.activeType] -= file.size
|
|
|
- this.sizeInfo.total -= file.size
|
|
|
- this.fileListShow.splice(index, 1)
|
|
|
- for (let i in this.fileList[this.activeType]) {
|
|
|
- if (this.fileList[this.activeType][i].url == file.url) this.fileList[this.activeType].splice(i, 1)
|
|
|
- }
|
|
|
- this.$Message.success(this.$t('teachContent.props2'))
|
|
|
- this.containerClient.deleteBlob(file.blob, file.size).then(
|
|
|
- (res) => {
|
|
|
- //删除缩略图或封面
|
|
|
- if (file.type == 'image') {
|
|
|
- let thum = file.blob.replace('/image/', '/thum/')
|
|
|
- //这里暂时预设缩略图大小为60KB
|
|
|
- this.containerClient.deleteBlob(thum, 60 * 1024)
|
|
|
- } else if (file.type == 'video' && file.extension == 'MP4') {
|
|
|
- let thum = file.blob.replace('/video/', '/thum/')
|
|
|
- thum = thum.slice(0, thum.lastIndexOf('.')) + '.png'
|
|
|
- //这里暂时预封面大小为60KB
|
|
|
- this.containerClient.deleteBlob(thum, 60 * 1024)
|
|
|
- }
|
|
|
- //如果是从最近上传删除,则需要判断是否已经请求对接类型的数据,如果有则需要删除对应的数据
|
|
|
- if (this.activeType == 'recent') {
|
|
|
- let type = file.type
|
|
|
- if (this.fileList[type]) {
|
|
|
- for (let i = 0; i < this.fileList[type].length; i++) {
|
|
|
- if (file.id == this.fileList[type][i].id) {
|
|
|
- this.fileList[type].splice(i, 1)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- (err) => {
|
|
|
- // this.$Message.error(this.$t('teachContent.props3'))
|
|
|
- console.log('delete blob error')
|
|
|
- }
|
|
|
- ).finally(() => {
|
|
|
- this.isLoading = false
|
|
|
- })
|
|
|
+ // if (file.extension == 'HTEX') {
|
|
|
+ // this.sizeInfo[this.activeType] -= file.size
|
|
|
+ // this.sizeInfo.total -= file.size
|
|
|
+ // this.fileListShow.splice(index, 1)
|
|
|
+ // for (let i in this.fileList[this.activeType]) {
|
|
|
+ // if (this.fileList[this.activeType][i].url == file.url) {
|
|
|
+ // this.fileList[this.activeType].splice(i, 1)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // this.$api.blob.deletePrefix({
|
|
|
+ // cntr: this.routerScope == 'school' ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo.TEAMModelId,
|
|
|
+ // prefix: `res/${file.name.replace('.HTEX', '')}`
|
|
|
+ // }).then(
|
|
|
+ // res => {
|
|
|
+ // this.$Message.success(this.$t('teachContent.props2'))
|
|
|
+ // },
|
|
|
+ // err => {
|
|
|
+ // // this.$Message.error(this.$t('teachContent.props3'))
|
|
|
+ // console.log('delete blob error')
|
|
|
+ // }
|
|
|
+ // ).finally(() => {
|
|
|
+ // this.isLoading = false
|
|
|
+ // })
|
|
|
+ // } else {
|
|
|
+ // this.sizeInfo[this.activeType] -= file.size
|
|
|
+ // this.sizeInfo.total -= file.size
|
|
|
+ // this.fileListShow.splice(index, 1)
|
|
|
+ // for (let i in this.fileList[this.activeType]) {
|
|
|
+ // if (this.fileList[this.activeType][i].url == file.url) this.fileList[this.activeType].splice(i, 1)
|
|
|
+ // }
|
|
|
+ // this.$Message.success(this.$t('teachContent.props2'))
|
|
|
+ // this.containerClient.deleteBlob(file.blob, file.size).then(
|
|
|
+ // (res) => {
|
|
|
+ // //删除缩略图或封面
|
|
|
+ // if (file.type == 'image') {
|
|
|
+ // let thum = file.blob.replace('/image/', '/thum/')
|
|
|
+ // //这里暂时预设缩略图大小为60KB
|
|
|
+ // this.containerClient.deleteBlob(thum, 60 * 1024)
|
|
|
+ // } else if (file.type == 'video' && file.extension == 'MP4') {
|
|
|
+ // let thum = file.blob.replace('/video/', '/thum/')
|
|
|
+ // thum = thum.slice(0, thum.lastIndexOf('.')) + '.png'
|
|
|
+ // //这里暂时预封面大小为60KB
|
|
|
+ // this.containerClient.deleteBlob(thum, 60 * 1024)
|
|
|
+ // }
|
|
|
+ // //如果是从最近上传删除,则需要判断是否已经请求对接类型的数据,如果有则需要删除对应的数据
|
|
|
+ // if (this.activeType == 'recent') {
|
|
|
+ // let type = file.type
|
|
|
+ // if (this.fileList[type]) {
|
|
|
+ // for (let i = 0; i < this.fileList[type].length; i++) {
|
|
|
+ // if (file.id == this.fileList[type][i].id) {
|
|
|
+ // this.fileList[type].splice(i, 1)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // (err) => {
|
|
|
+ // // this.$Message.error(this.$t('teachContent.props3'))
|
|
|
+ // console.log('delete blob error')
|
|
|
+ // }
|
|
|
+ // ).finally(() => {
|
|
|
+ // this.isLoading = false
|
|
|
+ // })
|
|
|
|
|
|
- }
|
|
|
+ // }
|
|
|
//删除本地最近上传数据
|
|
|
this.delCacheFiles([file.id])
|
|
|
},
|
|
|
err => {
|
|
|
this.$Message.error(this.$t('teachContent.props3'))
|
|
|
}
|
|
|
- )
|
|
|
-
|
|
|
+ ).finally(() => {
|
|
|
+ this.isLoading = false
|
|
|
+ })
|
|
|
}
|
|
|
})
|
|
|
},
|