|
@@ -1,22 +1,11 @@
|
|
|
<template>
|
|
|
- <div
|
|
|
- class="scroll-container"
|
|
|
- ref="w-list-ref"
|
|
|
- @scroll.self="onWorkListScroll"
|
|
|
- >
|
|
|
+ <div class="scroll-container" ref="w-list-ref" @scroll.self="onWorkListScroll">
|
|
|
<div class="back-top" @click="onClickBackTop" v-show="isShowBackTopBtn">
|
|
|
<i class="iconfont icon-top"></i>
|
|
|
</div>
|
|
|
<div class="mask" v-show="isShowMask"></div>
|
|
|
<!-- 断网时,输入关键字触发网络请求后,骨架图的隐藏会触发v-infinite-scroll,原因未知。进而导致循环触发,因此list为空时要禁用v-infinite-scroll -->
|
|
|
- <ul
|
|
|
- class="w-list"
|
|
|
- v-if="!(list.length === 0 && !hasMoreData)"
|
|
|
- v-infinite-scroll="requestMoreData"
|
|
|
- :infinite-scroll-disabled="
|
|
|
- !hasMoreData || isRequestingMoreData || list.length === 0
|
|
|
- "
|
|
|
- >
|
|
|
+ <ul class="w-list" v-if="!(list.length === 0 && !hasMoreData)" v-infinite-scroll="requestMoreData" :infinite-scroll-disabled="!hasMoreData || isRequestingMoreData || list.length === 0">
|
|
|
<!-- <li class="add-work" @click="add">
|
|
|
<div class="wrapper">
|
|
|
<div class="add-con">
|
|
@@ -35,129 +24,62 @@
|
|
|
</div>
|
|
|
</li>
|
|
|
</template>
|
|
|
- <li
|
|
|
- v-for="(item, i) in list"
|
|
|
- :key="i"
|
|
|
- :class="{ 'has-more-data': hasMoreData }"
|
|
|
- >
|
|
|
+ <li v-for="(item, i) in list" :key="i" :class="{ 'has-more-data': hasMoreData }">
|
|
|
<div class="wrapper" :class="{ disabled: item.calcStatus === 0 }">
|
|
|
<div class="li-hover">
|
|
|
- <span class="lipreview" @click="handlePreview(item)">{{
|
|
|
- preview
|
|
|
- }}</span>
|
|
|
+ <span class="lipreview" @click="handlePreview(item)">{{ preview }}</span>
|
|
|
<ul class="oper">
|
|
|
- <li class="comfirmhover" @click="edit(item)">
|
|
|
- <i class="iconfont icon-works_editor"></i>{{ edittips }}
|
|
|
- </li>
|
|
|
- <li class="comfirmhover" @click="openShare(item)">
|
|
|
- <i class="iconfont icon-works_share"></i>{{ share }}
|
|
|
- </li>
|
|
|
- <li class="cancelhover" @click="del(item, i)">
|
|
|
- <i class="iconfont icon-works_delete"></i>{{ deltips }}
|
|
|
- </li>
|
|
|
+ <li class="comfirmhover" @click="edit(item)"><i class="iconfont icon-works_editor"></i>{{ edittips }}</li>
|
|
|
+ <li class="comfirmhover" @click="openShare(item)"><i class="iconfont icon-works_share"></i>{{ share }}</li>
|
|
|
+ <li class="cancelhover" @click="del(item, i)"><i class="iconfont icon-works_delete"></i>{{ deltips }}</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="img" @click="handlePreview(item)">
|
|
|
<img class="real" :src="item.icon || $thumb" alt="" />
|
|
|
- <span class="snCode" v-if="item.snCode">
|
|
|
- SN: {{ item.snCode }}</span
|
|
|
- >
|
|
|
+ <span class="snCode" v-if="item.snCode"> SN: {{ item.snCode }}</span>
|
|
|
<div class="calc-mask" v-if="item.calcStatus === 0">
|
|
|
<span>{{ calcing }}</span>
|
|
|
- <svg
|
|
|
- xmlns="http://www.w3.org/2000/svg"
|
|
|
- width="1em"
|
|
|
- height="1em"
|
|
|
- viewBox="0 0 24 24"
|
|
|
- >
|
|
|
+ <svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
|
|
|
<circle cx="4" cy="12" r="3" fill="currentColor">
|
|
|
- <animate
|
|
|
- id="svgSpinners3DotsFade0"
|
|
|
- fill="freeze"
|
|
|
- attributeName="opacity"
|
|
|
- begin="0;svgSpinners3DotsFade1.end-0.25s"
|
|
|
- dur="0.75s"
|
|
|
- values="1;0.2"
|
|
|
- />
|
|
|
+ <animate id="svgSpinners3DotsFade0" fill="freeze" attributeName="opacity" begin="0;svgSpinners3DotsFade1.end-0.25s" dur="0.75s" values="1;0.2" />
|
|
|
</circle>
|
|
|
<circle cx="12" cy="12" r="3" fill="currentColor" opacity="0.4">
|
|
|
- <animate
|
|
|
- fill="freeze"
|
|
|
- attributeName="opacity"
|
|
|
- begin="svgSpinners3DotsFade0.begin+0.15s"
|
|
|
- dur="0.75s"
|
|
|
- values="1;0.2"
|
|
|
- />
|
|
|
+ <animate fill="freeze" attributeName="opacity" begin="svgSpinners3DotsFade0.begin+0.15s" dur="0.75s" values="1;0.2" />
|
|
|
</circle>
|
|
|
<circle cx="20" cy="12" r="3" fill="currentColor" opacity="0.3">
|
|
|
- <animate
|
|
|
- id="svgSpinners3DotsFade1"
|
|
|
- fill="freeze"
|
|
|
- attributeName="opacity"
|
|
|
- begin="svgSpinners3DotsFade0.begin+0.3s"
|
|
|
- dur="0.75s"
|
|
|
- values="1;0.2"
|
|
|
- />
|
|
|
+ <animate id="svgSpinners3DotsFade1" fill="freeze" attributeName="opacity" begin="svgSpinners3DotsFade0.begin+0.3s" dur="0.75s" values="1;0.2" />
|
|
|
</circle>
|
|
|
</svg>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="li-info">
|
|
|
<div>
|
|
|
- <span class="shenglve tttttt" :title="item.name || no_title">{{
|
|
|
- item.name || no_title
|
|
|
- }}</span>
|
|
|
+ <span class="shenglve tttttt" :title="item.name || no_title">{{ item.name || no_title }}</span>
|
|
|
</div>
|
|
|
<div>
|
|
|
<span>{{ item.createTime.split(" ")[0] }}</span>
|
|
|
- <div :title="item.visit">
|
|
|
- <i class="iconfont icon-works_look"></i
|
|
|
- >{{ item.visit > 10000 ? "1w+" : item.visit }}
|
|
|
- </div>
|
|
|
+ <div :title="item.visit"><i class="iconfont icon-works_look"></i>{{ item.visit > 10000 ? "1w+" : item.visit }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</li>
|
|
|
- <div
|
|
|
- class="work-list-loading-wrapper"
|
|
|
- v-show="isRequestingMoreData && list.length !== 0"
|
|
|
- >
|
|
|
- <img
|
|
|
- class="work-list-loading"
|
|
|
- :src="require('@/assets/images/icons/work-list-loading.gif')"
|
|
|
- />
|
|
|
+ <div class="work-list-loading-wrapper" v-show="isRequestingMoreData && list.length !== 0">
|
|
|
+ <img class="work-list-loading" :src="require('@/assets/images/icons/work-list-loading.gif')" />
|
|
|
</div>
|
|
|
</ul>
|
|
|
- <div
|
|
|
- class="nodata"
|
|
|
- v-if="list.length == 0 && !hasMoreData && lastestUsedSearchKey"
|
|
|
- >
|
|
|
+ <div class="nodata" v-if="list.length == 0 && !hasMoreData && lastestUsedSearchKey">
|
|
|
<img :src="$noresult" alt="" />
|
|
|
<span>{{ no_search_result }}~</span>
|
|
|
</div>
|
|
|
- <div
|
|
|
- class="nodata"
|
|
|
- v-if="list.length == 0 && !hasMoreData && !lastestUsedSearchKey"
|
|
|
- >
|
|
|
+ <div class="nodata" v-if="list.length == 0 && !hasMoreData && !lastestUsedSearchKey">
|
|
|
<img :src="config.empty" alt="" />
|
|
|
<span>{{ no_works }}</span>
|
|
|
<!-- <button @click="add" class="upload-btn-in-table">{{ create }}</button> -->
|
|
|
</div>
|
|
|
|
|
|
- <share
|
|
|
- :show="showShare"
|
|
|
- :item="shareItem"
|
|
|
- @close="showShare = false"
|
|
|
- ></share>
|
|
|
-
|
|
|
- <preview
|
|
|
- v-if="showItem"
|
|
|
- :name="showItem.name"
|
|
|
- :show="showPreview"
|
|
|
- :ifr="`./show.html?id=${showItem.id}&lang=${$lang}`"
|
|
|
- :dark="false"
|
|
|
- @close="showPreview = false"
|
|
|
- />
|
|
|
+ <share :show="showShare" :item="shareItem" @close="showShare = false"></share>
|
|
|
+
|
|
|
+ <preview v-if="showItem" :name="showItem.name" :show="showPreview" :ifr="`./show.html?id=${showItem.id}&lang=${$lang}`" :dark="false" @close="showPreview = false" />
|
|
|
|
|
|
<div class="dialog" style="z-index: 1000" v-if="isShowMaterialSelector">
|
|
|
<MaterialSelector
|
|
@@ -184,13 +106,7 @@ import { mapGetters } from "vuex";
|
|
|
import { i18n } from "@/lang";
|
|
|
import { $waiting } from "@/components/shared/loading";
|
|
|
|
|
|
-import {
|
|
|
- addWorks,
|
|
|
- getCamWorksList,
|
|
|
- delWorks,
|
|
|
- getPanoInfo,
|
|
|
- saveWorks,
|
|
|
-} from "@/api";
|
|
|
+import { addWorks, getCamWorksList, delWorks, getPanoInfo, saveWorks ,getSceneList} from "@/api";
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
@@ -291,8 +207,9 @@ export default {
|
|
|
},
|
|
|
|
|
|
handlePreview(item) {
|
|
|
- getPanoInfo(item.id, (data) => {
|
|
|
- if (data.scenes.length <= 0) {
|
|
|
+ getSceneList(item.id, (res) => {
|
|
|
+ let data = res.data;
|
|
|
+ if (data.fdkkList.length <= 0 && data.panoList.length <= 0) {
|
|
|
return this.$msg.warning(this.$i18n.t("material.works.no_link"));
|
|
|
}
|
|
|
this.showItem = {
|
|
@@ -301,6 +218,16 @@ export default {
|
|
|
};
|
|
|
this.showPreview = true;
|
|
|
});
|
|
|
+ // getPanoInfo(item.id, (data) => {
|
|
|
+ // if (data.scenes.length <= 0) {
|
|
|
+ // return this.$msg.warning(this.$i18n.t("material.works.no_link"));
|
|
|
+ // }
|
|
|
+ // this.showItem = {
|
|
|
+ // ...item,
|
|
|
+ // ...data,
|
|
|
+ // };
|
|
|
+ // this.showPreview = true;
|
|
|
+ // });
|
|
|
},
|
|
|
add() {
|
|
|
// 新建作品,弹窗让用户给作品选择素材。
|
|
@@ -401,18 +328,14 @@ export default {
|
|
|
},
|
|
|
ok2Text: this.$i18n.t("material.works.continue_edit"),
|
|
|
ok2: () => {
|
|
|
- window.open(
|
|
|
- `./edit.html?id=${this.newWorkId}&lang=${this.$lang}`
|
|
|
- );
|
|
|
+ window.open(`./edit.html?id=${this.newWorkId}&lang=${this.$lang}`);
|
|
|
this.newWorkId = "";
|
|
|
this.$store.commit("SetInfo", {});
|
|
|
},
|
|
|
});
|
|
|
})
|
|
|
.catch(() => {
|
|
|
- this.$msg.message(
|
|
|
- this.$i18n.t("material.works.had_created_but_no_link")
|
|
|
- );
|
|
|
+ this.$msg.message(this.$i18n.t("material.works.had_created_but_no_link"));
|
|
|
console.error("已成功新建作品,但刷新作品列表失败。");
|
|
|
});
|
|
|
},
|
|
@@ -536,10 +459,8 @@ export default {
|
|
|
}
|
|
|
|
|
|
const nowTime = Date.now();
|
|
|
- const assumeScrollTop =
|
|
|
- totalScroll - ((nowTime - startTime) * totalScroll) / 500;
|
|
|
- this.$refs["w-list-ref"].scrollTop =
|
|
|
- assumeScrollTop > 0 ? assumeScrollTop : 0;
|
|
|
+ const assumeScrollTop = totalScroll - ((nowTime - startTime) * totalScroll) / 500;
|
|
|
+ this.$refs["w-list-ref"].scrollTop = assumeScrollTop > 0 ? assumeScrollTop : 0;
|
|
|
requestAnimationFrame(fn);
|
|
|
};
|
|
|
requestAnimationFrame(fn);
|