|
@@ -1,8 +1,14 @@
|
|
|
<template>
|
|
|
- <div class="material-list">
|
|
|
+ <div
|
|
|
+ class="material-list"
|
|
|
+ :class="{
|
|
|
+ dark: isDarkTheme,
|
|
|
+ }"
|
|
|
+ >
|
|
|
<crumbs
|
|
|
class="crumbs"
|
|
|
v-if="!latestUsedSearchKey"
|
|
|
+ :isDarkTheme="isDarkTheme"
|
|
|
:list="folderPath"
|
|
|
:rootName="$i18n.t(`gather.${materialTypeAlias}`)"
|
|
|
@click-path="onClickPath"
|
|
@@ -10,12 +16,26 @@
|
|
|
<div v-if="latestUsedSearchKey" class="crumbs">{{$i18n.t(`gather.${materialTypeAlias}`)}}</div>
|
|
|
|
|
|
<div class="table">
|
|
|
- <div class="table-head-row">
|
|
|
- <span class="table-head">1</span>
|
|
|
- <span class="table-head" v-for="(item, i) in tableHeaders" :key="i">
|
|
|
+ <!-- <div class="table-head-row">
|
|
|
+ <span
|
|
|
+ class="table-head"
|
|
|
+ :style="{
|
|
|
+ width: '50px',
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ 1
|
|
|
+ </span>
|
|
|
+ <span
|
|
|
+ class="table-head"
|
|
|
+ v-for="(item, idx) in tableHeaders"
|
|
|
+ :key="idx"
|
|
|
+ :style="{
|
|
|
+ width: columnWidthList[idx],
|
|
|
+ }"
|
|
|
+ >
|
|
|
{{ item.name && $i18n.t(`zh_key.${item.name}`) }}
|
|
|
</span>
|
|
|
- </div>
|
|
|
+ </div> -->
|
|
|
<div
|
|
|
v-show="listLocalLength !== 0 || hasMoreData"
|
|
|
class="table-body"
|
|
@@ -31,21 +51,31 @@
|
|
|
>
|
|
|
<!-- 如果已经上传成功 -->
|
|
|
<template v-if="item.status === 'SUCCESS'">
|
|
|
- <span class="table-data">
|
|
|
+ <span
|
|
|
+ class="table-data"
|
|
|
+ :style="{
|
|
|
+ width: '50px',
|
|
|
+ }"
|
|
|
+ >
|
|
|
<RadioOrCheckbox
|
|
|
class="checkbox"
|
|
|
- :isLightTheme="true"
|
|
|
+ :isLightTheme="!isDarkTheme"
|
|
|
:isMultiSelection="isMultiSelection"
|
|
|
:isCheckedInitial="select.some(i => i.id === item.successInfo.id)"
|
|
|
@change="v => selectItem(item.successInfo, v)"
|
|
|
/>
|
|
|
</span>
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeaders" :key="idx">
|
|
|
- <div v-if="tableItemStructure.type == 'image'" class="list-img">
|
|
|
- <img
|
|
|
- :src="item.successInfo[tableItemStructure.key] + (Number(item.fileSize) > 512 ? $imgsuffix : ``)"
|
|
|
- alt=""
|
|
|
- />
|
|
|
+ <span
|
|
|
+ class="table-data"
|
|
|
+ :style="{
|
|
|
+ width: columnWidthList[idx],
|
|
|
+ }"
|
|
|
+ v-for="(tableItemStructure, idx) in tableHeaders"
|
|
|
+ :key="idx"
|
|
|
+ >
|
|
|
+ <div v-if="tableItemStructure.type" class="list-img">
|
|
|
+ <slot name="materialUploadSuccessIcon" :uploadInfo="item" :tableItemStructure="tableItemStructure">
|
|
|
+ </slot>
|
|
|
</div>
|
|
|
<span
|
|
|
v-else
|
|
@@ -58,15 +88,24 @@
|
|
|
</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
|
|
|
+ class="table-data"
|
|
|
+ :style="{
|
|
|
+ width: '50px',
|
|
|
+ }"
|
|
|
+ >
|
|
|
</span>
|
|
|
- <span class="table-data" v-for="(tableItemStructure, idx) in tableHeaders" :key="idx">
|
|
|
- <div v-if="tableItemStructure.type == 'image'" class="list-img">
|
|
|
- <img src="@/assets/images/icons/upload-file-type-icon-image@2x.png" alt="">
|
|
|
+ <span
|
|
|
+ class="table-data"
|
|
|
+ :style="{
|
|
|
+ width: columnWidthList[idx],
|
|
|
+ }"
|
|
|
+ v-for="(tableItemStructure, idx) in tableHeaders"
|
|
|
+ :key="idx"
|
|
|
+ >
|
|
|
+ <div v-if="tableItemStructure.type" class="list-img">
|
|
|
+ <slot name="materialUploadingIcon">
|
|
|
+ </slot>
|
|
|
</div>
|
|
|
<span
|
|
|
v-if="tableItemStructure.key === 'name'"
|
|
@@ -84,15 +123,17 @@
|
|
|
</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
|
|
|
+ class="table-data"
|
|
|
+ :style="{
|
|
|
+ width: '50px',
|
|
|
+ }"
|
|
|
+ >
|
|
|
</span>
|
|
|
<span class="table-data" v-for="(tableItemStructure, idx) in tableHeaders" :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 v-if="tableItemStructure.type" class="list-img">
|
|
|
+ <slot name="materialUploadFailIcon">
|
|
|
+ </slot>
|
|
|
</div>
|
|
|
<span
|
|
|
v-if="tableItemStructure.key === 'name'"
|
|
@@ -120,11 +161,16 @@
|
|
|
}
|
|
|
}"
|
|
|
>
|
|
|
- <span class="table-data">
|
|
|
+ <span
|
|
|
+ class="table-data"
|
|
|
+ :style="{
|
|
|
+ width: '50px',
|
|
|
+ }"
|
|
|
+ >
|
|
|
<RadioOrCheckbox
|
|
|
- v-if="item.type !== 'dir'"
|
|
|
class="checkbox"
|
|
|
- :isLightTheme="true"
|
|
|
+ :isLightTheme="!isDarkTheme"
|
|
|
+ :isDisabled="item.type === 'dir'"
|
|
|
:isMultiSelection="isMultiSelection"
|
|
|
:isCheckedInitial="select.some(i => i.id === item.id)"
|
|
|
@change="v => selectItem(item, v)"
|
|
@@ -133,23 +179,28 @@
|
|
|
<span
|
|
|
class="table-data"
|
|
|
v-for="(tableItemStructure, idx) in tableHeaders"
|
|
|
+ :style="{
|
|
|
+ width: columnWidthList[idx],
|
|
|
+ }"
|
|
|
:key="idx"
|
|
|
>
|
|
|
<div
|
|
|
- v-if="tableItemStructure.type == 'image'"
|
|
|
+ v-if="tableItemStructure.type"
|
|
|
class="list-img"
|
|
|
>
|
|
|
<img
|
|
|
- :class="{
|
|
|
- folderIcon: item.type === 'dir',
|
|
|
- }"
|
|
|
- :src="(item.type === 'dir') ? require('@/assets/images/icons/folder-blue.png') : (item[tableItemStructure.key] + (Number(item.fileSize) > 512 ? $imgsuffix : ``))"
|
|
|
+ v-if="item.type === 'dir'"
|
|
|
+ class="folderIcon"
|
|
|
+ src="@/assets/images/icons/folder-blue.png"
|
|
|
alt=""
|
|
|
/>
|
|
|
+ <slot v-else name="materialIcon" :materialInfo="item" :tableItemStructure="tableItemStructure">
|
|
|
+ </slot>
|
|
|
</div>
|
|
|
<span
|
|
|
class="ellipsis"
|
|
|
- v-else v-title="tableItemStructure.key === 'name' ? item[tableItemStructure.key] : ''"
|
|
|
+ v-else
|
|
|
+ v-title="tableItemStructure.key === 'name' ? item[tableItemStructure.key] : ''"
|
|
|
>
|
|
|
{{ item[tableItemStructure.key] }}
|
|
|
</span>
|
|
@@ -159,13 +210,13 @@
|
|
|
<!-- 无数据时的提示 -->
|
|
|
<div v-show="!(listLocalLength !== 0 || hasMoreData)" class="no-data">
|
|
|
<div v-if="latestUsedSearchKey">
|
|
|
- <img :src="require('@/assets/images/default/empty_04_search.png')" alt="">
|
|
|
+ <img :src="require(`@/assets/images/default/empty_search_${isDarkTheme ? 'dark' : 'bright'}.png`)" alt="">
|
|
|
<span>{{ $i18n.t("gather.no_serch_result") }}</span>
|
|
|
</div>
|
|
|
<div v-if="!latestUsedSearchKey">
|
|
|
- <img :src="require('@/assets/images/default/empty_04.png')" alt="">
|
|
|
+ <img :src="require(`@/assets/images/default/empty_${isDarkTheme ? 'dark' : 'bright'}.png`)" alt="">
|
|
|
<span>{{ $i18n.t("gather.no_material_result") }}</span>
|
|
|
- <a v-if="materialType === '3D'" href="/#/">
|
|
|
+ <a v-if="!canUpload" href="/#/">
|
|
|
<button class="ui-button">{{ $i18n.t("gather.how_to_shoot") }}</button>
|
|
|
</a>
|
|
|
</div>
|
|
@@ -198,11 +249,10 @@ import {
|
|
|
getMaterialList,
|
|
|
getSceneList,
|
|
|
uploadMaterial,
|
|
|
- checkMStatus,
|
|
|
checkUserSize,
|
|
|
} from "@/api";
|
|
|
|
|
|
-import { getImgWH, changeByteUnit } from "@/utils/file";
|
|
|
+import { changeByteUnit } from "@/utils/file";
|
|
|
import { debounce, capitalize } from "@/utils/other.js"
|
|
|
|
|
|
import config from "@/config";
|
|
@@ -211,7 +261,6 @@ import FileInput from "@/components/shared/uploads/UploadMultiple.vue";
|
|
|
import RadioOrCheckbox from "@/components/shared/RadioOrCheckbox.vue";
|
|
|
|
|
|
import folderMixin from "./materialSelectorFolderMixin.js";
|
|
|
-import { mapState } from 'vuex';
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
@@ -222,6 +271,10 @@ export default {
|
|
|
folderMixin,
|
|
|
],
|
|
|
props: {
|
|
|
+ isDarkTheme: {
|
|
|
+ type: Boolean,
|
|
|
+ default: true,
|
|
|
+ },
|
|
|
currentMaterialType: {
|
|
|
type: String,
|
|
|
required: true,
|
|
@@ -230,18 +283,28 @@ export default {
|
|
|
type: String,
|
|
|
required: true,
|
|
|
},
|
|
|
+ materialItemCustomProcess: {
|
|
|
+ type: Function,
|
|
|
+ default: (item) => {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ },
|
|
|
workId: {
|
|
|
type: String,
|
|
|
default: '',
|
|
|
},
|
|
|
-
|
|
|
tableHeaderKeyList: {
|
|
|
type: Array,
|
|
|
default: () => {
|
|
|
return ['icon', 'name', 'fileSize']
|
|
|
}
|
|
|
},
|
|
|
-
|
|
|
+ columnWidthList: {
|
|
|
+ type: Array,
|
|
|
+ default: () => {
|
|
|
+ return ['calc(146px - 50px)', 'calc(380px - 146px)', 'calc(100% - 380px)']
|
|
|
+ },
|
|
|
+ },
|
|
|
isMultiSelection: {
|
|
|
type: Boolean,
|
|
|
default: false,
|
|
@@ -255,10 +318,27 @@ export default {
|
|
|
type: String,
|
|
|
default: '',
|
|
|
},
|
|
|
-
|
|
|
+ canUpload: {
|
|
|
+ type: Boolean,
|
|
|
+ defaut: false,
|
|
|
+ },
|
|
|
fileInputBtnTip: {
|
|
|
type: String,
|
|
|
},
|
|
|
+ fileInputCustomCheck: {
|
|
|
+ type: Function,
|
|
|
+ default: async () => {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fileUploadLongPollingCb: {
|
|
|
+ type: Function || null,
|
|
|
+ default: null
|
|
|
+ },
|
|
|
+ fileUploadLongPollingStatusText: {
|
|
|
+ type: String,
|
|
|
+ defaut: ''
|
|
|
+ },
|
|
|
fileInputFailString: {
|
|
|
type: String,
|
|
|
},
|
|
@@ -323,9 +403,6 @@ export default {
|
|
|
return this.tableHeaderKeyList.includes(item.key)
|
|
|
})
|
|
|
},
|
|
|
- canUpload() {
|
|
|
- return this.materialType !== '3D'
|
|
|
- },
|
|
|
uploadStatusList() {
|
|
|
if (this.canUpload) {
|
|
|
return this.$store.state[`uploadStatusList${capitalize(this.materialType)}`]
|
|
@@ -373,7 +450,7 @@ export default {
|
|
|
clearInterval(this.longPollingIntervalId)
|
|
|
this.longPollingIntervalId = null
|
|
|
this.longPollingIntervalId = setInterval(() => {
|
|
|
- this._checkMStatus();
|
|
|
+ this.fileUploadLongPollingCb(this.uploadStatusList);
|
|
|
}, 3000);
|
|
|
}
|
|
|
},
|
|
@@ -414,6 +491,7 @@ export default {
|
|
|
},
|
|
|
(data) => {
|
|
|
const newData = data.data.data.list.map((i) => {
|
|
|
+ this.materialItemCustomProcess(i)
|
|
|
return i;
|
|
|
});
|
|
|
this.list = this.list.concat(newData)
|
|
@@ -444,8 +522,7 @@ export default {
|
|
|
} else {
|
|
|
i.fileSize = ''
|
|
|
}
|
|
|
- i.createTime = i.createTime.substring(0, i.createTime.length - 3)
|
|
|
- i.updateTime = i.updateTime.substring(0, i.updateTime.length - 3)
|
|
|
+ this.materialItemCustomProcess(i)
|
|
|
return i;
|
|
|
});
|
|
|
this.list = this.list.concat(newData)
|
|
@@ -478,7 +555,7 @@ export default {
|
|
|
onFileInputChange(e) {
|
|
|
e.files.forEach(async (eachFile, i) => {
|
|
|
if (
|
|
|
- eachFile.type.indexOf("jpeg") <= -1
|
|
|
+ this.fileInputAcceptType.indexOf(eachFile.type) <= -1
|
|
|
) {
|
|
|
console.log('格式不对!');
|
|
|
setTimeout(() => {
|
|
@@ -499,28 +576,9 @@ export default {
|
|
|
}, i * 100);
|
|
|
return;
|
|
|
}
|
|
|
- let WHRate = null
|
|
|
- try {
|
|
|
- const { width, height } = await getImgWH(eachFile)
|
|
|
- WHRate = width / height
|
|
|
- } catch (e) {
|
|
|
- console.error('获取图像宽高失败:', e)
|
|
|
- setTimeout(() => {
|
|
|
- this.$msg({
|
|
|
- message: `“${eachFile.name}”${this.fileInputFailString}`,
|
|
|
- type: "warning",
|
|
|
- });
|
|
|
- }, i * 100);
|
|
|
- return
|
|
|
- }
|
|
|
- if (WHRate !== 2) {
|
|
|
- console.log('宽高比不对!');
|
|
|
- setTimeout(() => {
|
|
|
- this.$msg({
|
|
|
- message: `“${eachFile.name}”${this.fileInputFailString}`,
|
|
|
- type: "warning",
|
|
|
- });
|
|
|
- }, i * 100);
|
|
|
+
|
|
|
+ const customCheckRes = await this.fileInputCustomCheck(eachFile, i)
|
|
|
+ if (!customCheckRes) {
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -532,7 +590,7 @@ export default {
|
|
|
statusText: this.$i18n.t(`gather.uploading_material`),
|
|
|
uid: `u_${this.$randomWord(true, 8, 8)}`,
|
|
|
abortHandler: null,
|
|
|
- backendId: '',
|
|
|
+ backendId: '', // 只用于全景图上传
|
|
|
parentFolderId: this.currentFolderId,
|
|
|
};
|
|
|
|
|
@@ -548,10 +606,20 @@ export default {
|
|
|
console.error('上传接口响应异常:', response);
|
|
|
return
|
|
|
}
|
|
|
- console.log('全景图上传成功');
|
|
|
- itemInUploadList.statusText = this.$i18n.t(`gather.cutting`)
|
|
|
- itemInUploadList.ifKnowProgress = false
|
|
|
- itemInUploadList.backendId = response.data.id
|
|
|
+ console.log('上传成功');
|
|
|
+ if (this.fileUploadLongPollingCb) {
|
|
|
+ itemInUploadList.statusText = this.fileUploadLongPollingStatusText
|
|
|
+ itemInUploadList.ifKnowProgress = false
|
|
|
+ itemInUploadList.backendId = response.data.id
|
|
|
+ } else {
|
|
|
+ itemInUploadList.status = 'SUCCESS'
|
|
|
+ if (response.data.fileSize) {
|
|
|
+ response.data.fileSize = changeByteUnit(Number(response.fileSize));
|
|
|
+ } else {
|
|
|
+ response.data.fileSize = ''
|
|
|
+ }
|
|
|
+ itemInUploadList.successInfo = response.data
|
|
|
+ }
|
|
|
},
|
|
|
(err) => {
|
|
|
if (err.statusText === 'abort') { // 用户取消了上传任务。
|
|
@@ -561,7 +629,7 @@ export default {
|
|
|
})
|
|
|
this.uploadStatusList.splice(index, 1)
|
|
|
} else {
|
|
|
- console.log('全景图上传失败!');
|
|
|
+ console.log('上传失败!');
|
|
|
itemInUploadList.status = 'FAIL'
|
|
|
itemInUploadList.statusText = this.$i18n.t(`gather.material_upload_fail`)
|
|
|
}
|
|
@@ -575,43 +643,6 @@ export default {
|
|
|
this.uploadStatusList.unshift(itemInUploadList);
|
|
|
})
|
|
|
},
|
|
|
- _checkMStatus() {
|
|
|
- let needPollingTaskList = this.uploadStatusList.filter((item) => item.status === 'LOADING' && item.ifKnowProgress === false);
|
|
|
- if (needPollingTaskList.length > 0) {
|
|
|
- checkMStatus(
|
|
|
- {
|
|
|
- ids: needPollingTaskList.map((item) => item.backendId),
|
|
|
- islongpolling: true,
|
|
|
- },
|
|
|
- (res) => {
|
|
|
- // 1切图中,2失败,3成功
|
|
|
- res.data.forEach(eachRes => {
|
|
|
- if (eachRes.status === 2) {
|
|
|
- const index = this.uploadStatusList.findIndex(eachTask => eachTask.backendId === eachRes.id)
|
|
|
- if (index >= 0) {
|
|
|
- const targetItem = this.uploadStatusList[index]
|
|
|
- targetItem.status = 'FAIL'
|
|
|
- targetItem.statusText = this.$i18n.t(`gather.material_cutting_fail`)
|
|
|
- targetItem.ifKnowProgress = true
|
|
|
- }
|
|
|
- } else if (eachRes.status === 3) {
|
|
|
- const index = this.uploadStatusList.findIndex(eachTask => eachTask.backendId === eachRes.id)
|
|
|
- if (index >= 0) {
|
|
|
- const targetItem = this.uploadStatusList[index]
|
|
|
- targetItem.status = 'SUCCESS'
|
|
|
- if (eachRes.fileSize) {
|
|
|
- eachRes.fileSize = changeByteUnit(Number(eachRes.fileSize));
|
|
|
- } else {
|
|
|
- eachRes.fileSize = ''
|
|
|
- }
|
|
|
- targetItem.successInfo = eachRes
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- );
|
|
|
- }
|
|
|
- },
|
|
|
onClickRow(e) {
|
|
|
const checkboxNodeList = e.currentTarget.getElementsByClassName('selection-click-target')
|
|
|
if (checkboxNodeList && checkboxNodeList[0]) {
|
|
@@ -653,48 +684,40 @@ export default {
|
|
|
display: inline-block;
|
|
|
}
|
|
|
|
|
|
- .table-select {
|
|
|
- position: absolute;
|
|
|
- z-index: 3;
|
|
|
- left: 50%;
|
|
|
- top: 50%;
|
|
|
- transform: translateX(-50%) translateY(-50%);
|
|
|
- width: 600px;
|
|
|
- height: 730px;
|
|
|
- border-radius: 4px;
|
|
|
- border: 1px solid #EBEDF0;
|
|
|
- padding: 26px;
|
|
|
- background: #fff;
|
|
|
- }
|
|
|
-
|
|
|
.crumbs {
|
|
|
margin-top: 10px;
|
|
|
}
|
|
|
|
|
|
+ // @table-height: 420px;
|
|
|
+ // @table-head-row-height: 40px;
|
|
|
+ // @table-border-size: 1px;
|
|
|
@table-height: 420px;
|
|
|
- @table-head-row-height: 40px;
|
|
|
- @table-border-size: 1px;
|
|
|
+ @table-head-row-height: 0px;
|
|
|
+ @table-border-size: 0px;
|
|
|
+
|
|
|
|
|
|
.table {
|
|
|
margin-top: 10px;
|
|
|
- border: @table-border-size solid #EBEDF0;
|
|
|
- background: #ffffff;
|
|
|
+ // border: @table-border-size solid #EBEDF0;
|
|
|
width: 100%;
|
|
|
height: @table-height;
|
|
|
|
|
|
- >.table-head-row {
|
|
|
- width: 100%;
|
|
|
- height: @table-head-row-height;
|
|
|
- background: #F5F7FA;
|
|
|
- color: #646566;
|
|
|
-
|
|
|
- .table-head {
|
|
|
- font-size: 16px;
|
|
|
- line-height: @table-head-row-height;
|
|
|
- height: 100%;
|
|
|
- display: inline-block;
|
|
|
- }
|
|
|
- }
|
|
|
+ // >.table-head-row {
|
|
|
+ // width: 100%;
|
|
|
+ // height: @table-head-row-height;
|
|
|
+ // background: #F5F7FA;
|
|
|
+ // color: #646566;
|
|
|
+
|
|
|
+ // .table-head {
|
|
|
+ // font-size: 16px;
|
|
|
+ // line-height: @table-head-row-height;
|
|
|
+ // height: 100%;
|
|
|
+ // display: inline-block;
|
|
|
+ // &:nth-of-type(1) {
|
|
|
+ // color: transparent;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
>.table-body {
|
|
|
height: calc(@table-height - @table-head-row-height - @table-border-size - @table-border-size);
|
|
@@ -704,11 +727,14 @@ export default {
|
|
|
|
|
|
.table-body-row {
|
|
|
height: 50px;
|
|
|
- border-bottom: 1px solid #EBEDF0;
|
|
|
+ // border-bottom: 1px solid #EBEDF0;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
+ border-radius: 4px;
|
|
|
cursor: pointer;
|
|
|
-
|
|
|
+ &:hover {
|
|
|
+ background: #F7F8FA;
|
|
|
+ }
|
|
|
>.table-data {
|
|
|
font-size: 14px;
|
|
|
line-height: 50px;
|
|
@@ -758,7 +784,7 @@ export default {
|
|
|
margin-top: 20px;
|
|
|
display: block;
|
|
|
font-size: 14px;
|
|
|
- color: rgba(255, 255, 255, 0.6);
|
|
|
+ color: #646566;
|
|
|
}
|
|
|
|
|
|
>a {
|
|
@@ -770,27 +796,6 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- .table .table-head,
|
|
|
- .table .table-data {
|
|
|
- &:nth-of-type(1) {
|
|
|
- width: 50px;
|
|
|
- color: transparent;
|
|
|
- }
|
|
|
-
|
|
|
- &:nth-of-type(2) {
|
|
|
- width: calc(146px - 50px);
|
|
|
- }
|
|
|
-
|
|
|
- &:nth-of-type(3) {
|
|
|
- width: calc(380px - 146px);
|
|
|
- padding-right: 30px;
|
|
|
- }
|
|
|
-
|
|
|
- &:nth-of-type(4) {
|
|
|
- width: calc(100% - 380px);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
.checkbox {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
@@ -816,4 +821,69 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+.material-list.dark {
|
|
|
+ .ellipsis {
|
|
|
+ }
|
|
|
+ .crumbs {
|
|
|
+ }
|
|
|
+
|
|
|
+ .table {
|
|
|
+ // border: @table-border-size solid #EBEDF0;
|
|
|
+ // >.table-head-row {
|
|
|
+ // background: #F5F7FA;
|
|
|
+ // color: #646566;
|
|
|
+ // .table-head {
|
|
|
+ // &:nth-of-type(1) {
|
|
|
+ // color: transparent;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ >.table-body {
|
|
|
+ .table-body-row {
|
|
|
+ // border-bottom: 1px solid #EBEDF0;
|
|
|
+ &:hover {
|
|
|
+ background: #252526;
|
|
|
+ }
|
|
|
+ >.table-data {
|
|
|
+ color: #fff;
|
|
|
+ >.list-img {
|
|
|
+ >img,
|
|
|
+ .audio-player {
|
|
|
+ &.folderIcon {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ >.no-data {
|
|
|
+ >div {
|
|
|
+ >img {
|
|
|
+ }
|
|
|
+ >span {
|
|
|
+ color: rgba(255, 255, 255, 0.6);
|
|
|
+ }
|
|
|
+ >a {
|
|
|
+ >button {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .checkbox {
|
|
|
+ }
|
|
|
+
|
|
|
+ .btns {
|
|
|
+ .upload-btn {
|
|
|
+ >span {
|
|
|
+ }
|
|
|
+ i.tool-tip-for-editor {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|