|
@@ -57,112 +57,6 @@
|
|
<i v-if="searchKey" @click="searchKey=''" class="iconfont icontoast_red clear-icon"></i>
|
|
<i v-if="searchKey" @click="searchKey=''" class="iconfont icontoast_red clear-icon"></i>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <div class="table table-image" v-show="currentMaterialType === 'image'">
|
|
|
|
- <div class="table-head-row">
|
|
|
|
- <span class="table-head">1</span>
|
|
|
|
- <span class="table-head" v-for="(item,i) in tableHeadersForImage" :key="i">{{item.name}}</span>
|
|
|
|
- </div>
|
|
|
|
- <div
|
|
|
|
- v-if="imageListRealLength !== 0 || hasMoreImageData"
|
|
|
|
- class="table-body"
|
|
|
|
- v-infinite-scroll="requestMoreImageData"
|
|
|
|
- :infinite-scroll-disabled="!hasMoreImageData || isRequestingMoreImageData"
|
|
|
|
- >
|
|
|
|
- <!-- vuex中的上传中数据 -->
|
|
|
|
- <div class="table-body-row" v-for="(item, i) in uploadStatusListImage" :key="item.uid">
|
|
|
|
- <!-- 如果已经上传成功 -->
|
|
|
|
- <template v-if="item.status === 'SUCCESS'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item.successInfo, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForImage" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
|
|
- <img :src="item.successInfo[tableItemStructure.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
|
|
|
|
- </div>
|
|
|
|
- <span v-else class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.successInfo[tableItemStructure.key] : ''">{{ item.successInfo[tableItemStructure.key] }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- <!-- 如果还在上传中 -->
|
|
|
|
- <template v-else-if="item.status = 'LOADING'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle disabled"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForImage" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
|
|
- <img src="@/assets/images/icons/upload-file-type-icon-image@2x.png" alt="">
|
|
|
|
- </div>
|
|
|
|
- <span v-if="tableItemStructure.key !== 'name' && tableItemStructure.key !== 'dpi'"></span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'dpi'">上传素材 {{Math.round(item.progress * 100)}}%</span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'name'" class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.title : ''">{{ item.title }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- <!-- 如果上传失败了 -->
|
|
|
|
- <template v-else-if="item.status = 'FAIL'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle disabled"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForImage" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
|
|
- <img src="@/assets/images/icons/upload-file-type-icon-image@2x.png" alt="">
|
|
|
|
- </div>
|
|
|
|
- <span v-if="tableItemStructure.key !== 'name' && tableItemStructure.key !== 'dpi'"></span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'dpi'">上传失败</span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'name'" class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.title : ''">{{ item.title }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- </div>
|
|
|
|
- <!-- 本组件内的列表数据 -->
|
|
|
|
- <div class="table-body-row" v-for="(item,i) in imageList" :key="i">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(sub,idx) in tableHeadersForImage" :key="idx">
|
|
|
|
- <div v-if="sub.type=='image'" class="list-img">
|
|
|
|
- <img :src="item[sub.key] + `?x-oss-process=image/resize,p_20&${Math.random()}`" alt="">
|
|
|
|
- </div>
|
|
|
|
- <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{ item[sub.key] }}</span>
|
|
|
|
- </span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <!-- 无数据时的提示 -->
|
|
|
|
- <div v-else class="no-data">
|
|
|
|
- <div v-if="latestUsedSearchKey">
|
|
|
|
- <img :src="require('@/assets/images/default/empty_04_search.png')" alt="">
|
|
|
|
- <span>{{'未搜索到结果~'}}</span>
|
|
|
|
- </div>
|
|
|
|
- <div v-if="!latestUsedSearchKey">
|
|
|
|
- <img :src="require('@/assets/images/default/empty_04.png')" alt="">
|
|
|
|
- <span>{{'暂无素材~'}}</span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
<div class="table table-pano" v-show="currentMaterialType === 'pano'">
|
|
<div class="table table-pano" v-show="currentMaterialType === 'pano'">
|
|
<div class="table-head-row">
|
|
<div class="table-head-row">
|
|
<span class="table-head">1</span>
|
|
<span class="table-head">1</span>
|
|
@@ -175,21 +69,18 @@
|
|
:infinite-scroll-disabled="!hasMorePanoData || isRequestingMorePanoData"
|
|
:infinite-scroll-disabled="!hasMorePanoData || isRequestingMorePanoData"
|
|
>
|
|
>
|
|
<!-- vuex中的上传中数据 -->
|
|
<!-- vuex中的上传中数据 -->
|
|
- <div class="table-body-row" v-for="(item, i) in uploadStatusListPano" :key="item.uid">
|
|
|
|
|
|
+ <div class="table-body-row" v-for="(item, i) in uploadStatusListPano" :key="item.uid" @click="onClickRow">
|
|
<!-- 如果已经上传成功 -->
|
|
<!-- 如果已经上传成功 -->
|
|
<template v-if="item.status === 'SUCCESS'">
|
|
<template v-if="item.status === 'SUCCESS'">
|
|
<span class="table-data">
|
|
<span class="table-data">
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item.successInfo, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <RadioOrCheckbox
|
|
|
|
+ class="checkbox"
|
|
|
|
+ :isLightTheme="true"
|
|
|
|
+ :isMultiSelection="isMultiSelection"
|
|
|
|
+ :isCheckedInitial="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
|
|
|
|
+ @change="v => selectItem(item.successInfo, v)"
|
|
|
|
+ @click.native.stop
|
|
|
|
+ />
|
|
</span>
|
|
</span>
|
|
<span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForPano" :key="idx">
|
|
<span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForPano" :key="idx">
|
|
<div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
<div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
@@ -235,19 +126,16 @@
|
|
</template>
|
|
</template>
|
|
</div>
|
|
</div>
|
|
<!-- 本组件内的列表数据 -->
|
|
<!-- 本组件内的列表数据 -->
|
|
- <div class="table-body-row" v-for="(item,i) in panoList" :key="i">
|
|
|
|
|
|
+ <div class="table-body-row" v-for="(item,i) in panoList" :key="i" @click="onClickRow">
|
|
<span class="table-data">
|
|
<span class="table-data">
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <RadioOrCheckbox
|
|
|
|
+ class="checkbox"
|
|
|
|
+ :isLightTheme="true"
|
|
|
|
+ :isMultiSelection="isMultiSelection"
|
|
|
|
+ :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
|
|
|
|
+ @change="v => selectItem(item, v)"
|
|
|
|
+ @click.native.stop
|
|
|
|
+ />
|
|
</span>
|
|
</span>
|
|
<span class="table-data" v-for="(sub,idx) in tableHeadersForPano" :key="idx">
|
|
<span class="table-data" v-for="(sub,idx) in tableHeadersForPano" :key="idx">
|
|
<div v-if="sub.type=='image'" class="list-img">
|
|
<div v-if="sub.type=='image'" class="list-img">
|
|
@@ -270,260 +158,6 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
- <div class="table table-audio" v-show="currentMaterialType === 'audio'">
|
|
|
|
- <div class="table-head-row">
|
|
|
|
- <span class="table-head">1</span>
|
|
|
|
- <span class="table-head" v-for="(item,i) in tableHeadersForAudio" :key="i">{{item.name}}</span>
|
|
|
|
- </div>
|
|
|
|
- <div
|
|
|
|
- v-if="audioListRealLength !== 0 || hasMoreAudioData"
|
|
|
|
- class="table-body"
|
|
|
|
- v-infinite-scroll="requestMoreAudioData"
|
|
|
|
- :infinite-scroll-disabled="!hasMoreAudioData || isRequestingMoreAudioData"
|
|
|
|
- >
|
|
|
|
- <!-- vuex中的上传中数据 -->
|
|
|
|
- <div class="table-body-row" v-for="(item, i) in uploadStatusListAudio" :key="item.uid">
|
|
|
|
- <!-- 如果已经上传成功 -->
|
|
|
|
- <template v-if="item.status === 'SUCCESS'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item.successInfo, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForAudio" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='audio'" class="list-img">
|
|
|
|
- <!-- <img
|
|
|
|
- :src="require('@/assets/images/icons/upload-file-type-icon-audio@2x.png')"
|
|
|
|
- style="object-fit: contain;"
|
|
|
|
- alt=""
|
|
|
|
- > -->
|
|
|
|
- <AudioIconCanPlay
|
|
|
|
- class="icon"
|
|
|
|
- :vKey="item.successInfo.id"
|
|
|
|
- :idleft="`_${$randomWord(true, 8, 8)}`"
|
|
|
|
- :idright="`_${$randomWord(true, 8, 8)}`"
|
|
|
|
- :myAudioUrl="item.successInfo.ossPath"
|
|
|
|
- ></AudioIconCanPlay>
|
|
|
|
- </div>
|
|
|
|
- <span v-else class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.successInfo[tableItemStructure.key] : ''">{{ item.successInfo[tableItemStructure.key] }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- <!-- 如果还在上传中 -->
|
|
|
|
- <template v-else-if="item.status = 'LOADING'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle disabled"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForAudio" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='audio'" class="list-img">
|
|
|
|
- <img
|
|
|
|
- :src="require('@/assets/images/icons/upload-file-type-icon-audio@2x.png')"
|
|
|
|
- style="object-fit: contain;"
|
|
|
|
- alt=""
|
|
|
|
- >
|
|
|
|
- </div>
|
|
|
|
- <span v-if="tableItemStructure.key !== 'name' && tableItemStructure.key !== 'fileSize'"></span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'fileSize'">上传素材 {{Math.round(item.progress * 100)}}%</span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'name'" class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.title : ''">{{ item.title }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- <!-- 如果上传失败了 -->
|
|
|
|
- <template v-else-if="item.status = 'FAIL'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle disabled"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForImage" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='audio'" class="list-img">
|
|
|
|
- <img
|
|
|
|
- :src="require('@/assets/images/icons/upload-file-type-icon-audio@2x.png')"
|
|
|
|
- style="object-fit: contain;"
|
|
|
|
- alt=""
|
|
|
|
- >
|
|
|
|
- </div>
|
|
|
|
- <span v-if="tableItemStructure.key !== 'name' && tableItemStructure.key !== 'fileSize'"></span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'fileSize'">上传失败</span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'name'" class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.title : ''">{{ item.title }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- </div>
|
|
|
|
- <!-- 本组件内的列表数据 -->
|
|
|
|
- <div class="table-body-row" v-for="(item,i) in audioList" :key="i">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(sub,idx) in tableHeadersForAudio" :key="idx">
|
|
|
|
- <div v-if="sub.type=='audio'" class="list-img">
|
|
|
|
- <!-- <img
|
|
|
|
- :src="require('@/assets/images/icons/upload-file-type-icon-audio@2x.png')"
|
|
|
|
- style="object-fit: contain;"
|
|
|
|
- alt=""
|
|
|
|
- > -->
|
|
|
|
- <AudioIconCanPlay
|
|
|
|
- class="audio-player"
|
|
|
|
- :vKey="item.id"
|
|
|
|
- :idleft="`_${$randomWord(true, 8, 8)}`"
|
|
|
|
- :idright="`_${$randomWord(true, 8, 8)}`"
|
|
|
|
- :myAudioUrl="item.ossPath"
|
|
|
|
- ></AudioIconCanPlay>
|
|
|
|
- </div>
|
|
|
|
- <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{item[sub.key]}}</span>
|
|
|
|
- </span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <!-- 无数据时的提示 -->
|
|
|
|
- <div v-if="audioList.length === 0 && !hasMoreAudioData" class="no-data">
|
|
|
|
- <div v-if="latestUsedSearchKey">
|
|
|
|
- <img :src="require('@/assets/images/default/empty_04_search.png')" alt="">
|
|
|
|
- <span>{{'未搜索到结果~'}}</span>
|
|
|
|
- </div>
|
|
|
|
- <div v-if="!latestUsedSearchKey">
|
|
|
|
- <img :src="require('@/assets/images/default/empty_04.png')" alt="">
|
|
|
|
- <span>{{'暂无素材~'}}</span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <div class="table table-video" v-show="currentMaterialType === 'video'">
|
|
|
|
- <div class="table-head-row">
|
|
|
|
- <span class="table-head">1</span>
|
|
|
|
- <span class="table-head" v-for="(item,i) in tableHeadersForVideo" :key="i">{{item.name}}</span>
|
|
|
|
- </div>
|
|
|
|
- <div
|
|
|
|
- v-if="videoListRealLength !== 0 || hasMoreVideoData"
|
|
|
|
- class="table-body"
|
|
|
|
- v-infinite-scroll="requestMoreVideoData"
|
|
|
|
- :infinite-scroll-disabled="!hasMoreVideoData || isRequestingMoreVideoData"
|
|
|
|
- >
|
|
|
|
- <!-- vuex中的上传中数据 -->
|
|
|
|
- <div class="table-body-row" v-for="(item, i) in uploadStatusListVideo" :key="item.uid">
|
|
|
|
- <!-- 如果已经上传成功 -->
|
|
|
|
- <template v-if="item.status === 'SUCCESS'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item.successInfo, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item.successInfo[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForVideo" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
|
|
- <img
|
|
|
|
- :src="item.successInfo[tableItemStructure.key]"
|
|
|
|
- alt=""
|
|
|
|
- >
|
|
|
|
- </div>
|
|
|
|
- <span v-else class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.successInfo[tableItemStructure.key] : ''">{{ item.successInfo[tableItemStructure.key] }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- <!-- 如果还在上传中 -->
|
|
|
|
- <template v-else-if="item.status = 'LOADING'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle disabled"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForVideo" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
|
|
- <img
|
|
|
|
- :src="require('@/assets/images/icons/upload-file-type-icon-video@2x.png')"
|
|
|
|
- style="object-fit: contain;"
|
|
|
|
- alt=""
|
|
|
|
- >
|
|
|
|
- </div>
|
|
|
|
- <span v-if="tableItemStructure.key !== 'name' && tableItemStructure.key !== 'fileSize'"></span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'fileSize'">上传素材 {{Math.round(item.progress * 100)}}%</span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'name'" class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.title : ''">{{ item.title }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- <!-- 如果上传失败了 -->
|
|
|
|
- <template v-else-if="item.status = 'FAIL'">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle disabled"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeadersForImage" :key="idx">
|
|
|
|
- <div v-if="tableItemStructure.type=='image'" class="list-img">
|
|
|
|
- <img
|
|
|
|
- :src="require('@/assets/images/icons/upload-file-type-icon-video@2x.png')"
|
|
|
|
- style="object-fit: contain;"
|
|
|
|
- alt=""
|
|
|
|
- >
|
|
|
|
- </div>
|
|
|
|
- <span v-if="tableItemStructure.key !== 'name' && tableItemStructure.key !== 'fileSize'"></span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'fileSize'">上传失败</span>
|
|
|
|
- <span v-if="tableItemStructure.key === 'name'" class="ellipsis" v-title="tableItemStructure.key === 'name' ? item.title : ''">{{ item.title }}</span>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- </div>
|
|
|
|
- <!-- 本组件内的列表数据 -->
|
|
|
|
- <div class="table-body-row" v-for="(item,i) in videoList" :key="i">
|
|
|
|
- <span class="table-data">
|
|
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
- </span>
|
|
|
|
- <span class="table-data" v-for="(sub,idx) in tableHeadersForVideo" :key="idx">
|
|
|
|
- <div v-if="sub.type=='image'" class="list-img">
|
|
|
|
- <img :src="item[sub.key]" alt="">
|
|
|
|
- </div>
|
|
|
|
- <span class="ellipsis" v-else v-title="sub.key === 'name' ? item[sub.key] : ''">{{item[sub.key]}}</span>
|
|
|
|
- </span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <!-- 无数据时的提示 -->
|
|
|
|
- <div v-if="videoList.length === 0 && !hasMoreVideoData" class="no-data">
|
|
|
|
- <div v-if="latestUsedSearchKey">
|
|
|
|
- <img :src="require('@/assets/images/default/empty_04_search.png')" alt="">
|
|
|
|
- <span>{{'未搜索到结果~'}}</span>
|
|
|
|
- </div>
|
|
|
|
- <div v-if="!latestUsedSearchKey">
|
|
|
|
- <img :src="require('@/assets/images/default/empty_04.png')" alt="">
|
|
|
|
- <span>{{'暂无素材~'}}</span>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
<div class="table table-3D" v-show="currentMaterialType === '3D'">
|
|
<div class="table table-3D" v-show="currentMaterialType === '3D'">
|
|
<div class="table-head-row">
|
|
<div class="table-head-row">
|
|
<span class="table-head">1</span>
|
|
<span class="table-head">1</span>
|
|
@@ -537,17 +171,14 @@
|
|
>
|
|
>
|
|
<div class="table-body-row" v-for="(item,i) in scene3DList" :key="i">
|
|
<div class="table-body-row" v-for="(item,i) in scene3DList" :key="i">
|
|
<span class="table-data">
|
|
<span class="table-data">
|
|
- <div class="checkbox">
|
|
|
|
- <!-- 负责功能 -->
|
|
|
|
- <input
|
|
|
|
- type="checkbox"
|
|
|
|
- @change="e => selectItem(item, e)"
|
|
|
|
- :checked="select.some(i => i[primaryKey] === item[primaryKey])"
|
|
|
|
- >
|
|
|
|
- <!-- 负责外观 -->
|
|
|
|
- <span class="for-outer-circle"></span>
|
|
|
|
- <span class="for-inner-circle"></span>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <RadioOrCheckbox
|
|
|
|
+ class="checkbox"
|
|
|
|
+ :isLightTheme="true"
|
|
|
|
+ :isMultiSelection="isMultiSelection"
|
|
|
|
+ :isCheckedInitial="select.some(i => i[primaryKey] === item[primaryKey])"
|
|
|
|
+ @change="v => selectItem(item, v)"
|
|
|
|
+ @click.native.stop
|
|
|
|
+ />
|
|
</span>
|
|
</span>
|
|
<span class="table-data" v-for="(sub,idx) in tableHeadersFor3D" :key="idx">
|
|
<span class="table-data" v-for="(sub,idx) in tableHeadersFor3D" :key="idx">
|
|
<div v-if="sub.type=='image'" class="list-img">
|
|
<div v-if="sub.type=='image'" class="list-img">
|
|
@@ -618,7 +249,8 @@ import config from "@/config";
|
|
import { debounce } from "@/utils/other.js"
|
|
import { debounce } from "@/utils/other.js"
|
|
import FileInput from "@/components/shared/uploads/UploadMultiple.vue";
|
|
import FileInput from "@/components/shared/uploads/UploadMultiple.vue";
|
|
import { mapState } from "vuex";
|
|
import { mapState } from "vuex";
|
|
-import AudioIconCanPlay from "@/components/audio/indexForEditor.vue";
|
|
|
|
|
|
+// import AudioIconCanPlay from "@/components/audio/indexForEditor.vue";
|
|
|
|
+import RadioOrCheckbox from "@/components/shared/RadioOrCheckbox.vue";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
props:{
|
|
props:{
|
|
@@ -656,7 +288,8 @@ export default {
|
|
},
|
|
},
|
|
components:{
|
|
components:{
|
|
FileInput,
|
|
FileInput,
|
|
- AudioIconCanPlay,
|
|
|
|
|
|
+ // AudioIconCanPlay,
|
|
|
|
+ RadioOrCheckbox,
|
|
},
|
|
},
|
|
watch:{
|
|
watch:{
|
|
searchKey: {
|
|
searchKey: {
|
|
@@ -887,14 +520,13 @@ export default {
|
|
...mapMutations([
|
|
...mapMutations([
|
|
'clearUploadStatusLists',
|
|
'clearUploadStatusLists',
|
|
]),
|
|
]),
|
|
- selectItem(item, e) {
|
|
|
|
- console.log(item,e);
|
|
|
|
|
|
+ selectItem(item, v) {
|
|
item.materialType = this.currentMaterialType // 三维场景数据没有type字段来表明自己是三维场景。所以统一加一个字段。
|
|
item.materialType = this.currentMaterialType // 三维场景数据没有type字段来表明自己是三维场景。所以统一加一个字段。
|
|
if (false) {
|
|
if (false) {
|
|
// 对于图片,大于600kb的,压缩?
|
|
// 对于图片,大于600kb的,压缩?
|
|
} else {
|
|
} else {
|
|
if (this.isMultiSelection) {
|
|
if (this.isMultiSelection) {
|
|
- if (e.target.checked) {
|
|
|
|
|
|
+ if (v) {
|
|
this.select.push(item)
|
|
this.select.push(item)
|
|
} else {
|
|
} else {
|
|
const toDeleteIdx = this.select.findIndex((eachSelect) => {
|
|
const toDeleteIdx = this.select.findIndex((eachSelect) => {
|
|
@@ -905,7 +537,7 @@ export default {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if (e.target.checked) {
|
|
|
|
|
|
+ if (v) {
|
|
this.select = [item]
|
|
this.select = [item]
|
|
} else {
|
|
} else {
|
|
this.select = []
|
|
this.select = []
|
|
@@ -1476,6 +1108,12 @@ export default {
|
|
);
|
|
);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ onClickRow(e) {
|
|
|
|
+ const checkboxNodeList = e.currentTarget.getElementsByClassName('selection-click-target')
|
|
|
|
+ if (checkboxNodeList && checkboxNodeList[0]) {
|
|
|
|
+ checkboxNodeList[0].click()
|
|
|
|
+ }
|
|
|
|
+ },
|
|
},
|
|
},
|
|
mounted() {
|
|
mounted() {
|
|
console.log('tableHeadersForAudio: ', this.tableHeadersForAudio);
|
|
console.log('tableHeadersForAudio: ', this.tableHeadersForAudio);
|
|
@@ -1635,6 +1273,7 @@ export default {
|
|
border-bottom: 1px solid #EBEDF0;
|
|
border-bottom: 1px solid #EBEDF0;
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
|
|
+ cursor: pointer;
|
|
> .table-data {
|
|
> .table-data {
|
|
font-size:14px;
|
|
font-size:14px;
|
|
line-height:50px;
|
|
line-height:50px;
|
|
@@ -1779,65 +1418,10 @@ export default {
|
|
}
|
|
}
|
|
|
|
|
|
.checkbox {
|
|
.checkbox {
|
|
- position: relative;
|
|
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
height: 100%;
|
|
- input {
|
|
|
|
- width: 20px;
|
|
|
|
- height: 20px;
|
|
|
|
- position: absolute;
|
|
|
|
- left: 50%;
|
|
|
|
- top: 50%;
|
|
|
|
- transform: translate(-50%, -50%);
|
|
|
|
- cursor: pointer;
|
|
|
|
- opacity: 0;
|
|
|
|
- }
|
|
|
|
- .for-outer-circle {
|
|
|
|
- width: 16px;
|
|
|
|
- height: 16px;
|
|
|
|
- position: absolute;
|
|
|
|
- left: 50%;
|
|
|
|
- top: 50%;
|
|
|
|
- transform: translate(-50%, -50%);
|
|
|
|
- // border-radius: 50%;
|
|
|
|
- border: 1px solid #D5D8DE;
|
|
|
|
- pointer-events: none;
|
|
|
|
- }
|
|
|
|
- .for-inner-circle {
|
|
|
|
- width: 8px;
|
|
|
|
- height: 8px;
|
|
|
|
- position: absolute;
|
|
|
|
- left: 50%;
|
|
|
|
- top: 50%;
|
|
|
|
- transform: translate(-50%, -50%);
|
|
|
|
- // border-radius: 50%;
|
|
|
|
- background: #0076F6;
|
|
|
|
- pointer-events: none;
|
|
|
|
- opacity: 0;
|
|
|
|
- &.disabled {
|
|
|
|
- width: 14px;
|
|
|
|
- height: 14px;
|
|
|
|
- background: rgba(255, 255, 255, 0.0800);
|
|
|
|
- opacity: 1;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-.checkbox > input:checked ~ .for-outer-circle {
|
|
|
|
- border: 1px solid #0076F6;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.checkbox > input:checked ~ .for-inner-circle {
|
|
|
|
- opacity: 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.checkbox > input:disabled {
|
|
|
|
- cursor: not-allowed;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// .checkbox > input:disabled + span {
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
.btns {
|
|
.btns {
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|