Commit 88639ca2 authored by tianhongyang's avatar tianhongyang

🎈 perf(查业绩增添骨架屏,优化若干bug):

parent 3fdfa7ab
<template>
<div class="dsk-skeleton-outer-container">
<el-skeleton :animated="true" class="dsk-skeleton-inner-container">
<template slot="template">
<template v-for="item of count">
<div :key="item">
<el-skeleton-item variant="text" style="width: 60%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
</div>
</template>
</template>
</el-skeleton>
</div>
</template>
<script>
export default {
name: 'dskSkeleton',
data() {
return {
count: 0
};
},
created() {
this.getSkeletonCount();
},
methods: {
async getSkeletonCount() {
try {
await this.$nextTick();
const skeletonContainer = this.$el.querySelector(".dsk-skeleton-inner-container");
const height = skeletonContainer.offsetHeight;
// 160高度为一组
const group = Math.round(height / 160);
this.count = group;
} catch (error) {
}
}
}
}
</script>
<style lang="scss" scoped>
.dsk-skeleton-outer-container {
padding: 0px 16px;
background: #fff;
z-index: 999;
.dsk-skeleton-inner-container {
width: 100%;
height: 100%;
overflow: hidden;
}
}
.el-skeleton__item {
height: 20px;
border-radius: 0;
margin-top: 16px;
background: #f0f0f0;
}
.el-skeleton {
.el-skeleton__item:last-of-type {
/* margin-bottom: 16px; */
}
}
</style>
...@@ -39,7 +39,7 @@ export default { ...@@ -39,7 +39,7 @@ export default {
}, },
defaultSort: {}, defaultSort: {},
forData: [ forData: [
{ label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true }, { label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true, fixed: "left" },
{ label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4' }, { label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4' },
{ label: '中标企业', prop: 'companyName', minWidth: '320', slot: true }, { label: '中标企业', prop: 'companyName', minWidth: '320', slot: true },
{ label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2' }, { label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2' },
......
...@@ -7,8 +7,11 @@ ...@@ -7,8 +7,11 @@
<span class="search-tab-name">{{item.name}}</span> <span class="search-tab-name">{{item.name}}</span>
</div> </div>
</div> </div>
<iframe-com-ins ref="searchPerformanceIframeContainer" :iframeStyles="urlQueryParams.iframeStyles" :styles="urlQueryParams.styles" <div class="iframe-com-ins-container">
:url="urlQueryParams.url"></iframe-com-ins> <iframe-com-ins ref="searchPerformanceIframeContainer" :iframeStyles="urlQueryParams.iframeStyles" :styles="urlQueryParams.styles"
:url="urlQueryParams.url"></iframe-com-ins>
<DskSkeleton v-if="loading"></DskSkeleton>
</div>
</div> </div>
</template> </template>
<script> <script>
...@@ -16,10 +19,12 @@ import IframeComIns from "@/views/subsystem/components/IframeComIns"; ...@@ -16,10 +19,12 @@ import IframeComIns from "@/views/subsystem/components/IframeComIns";
import IframeTools from "@/utils/iframeTools"; import IframeTools from "@/utils/iframeTools";
import { pmb } from "@/utils/postMessageBridge"; import { pmb } from "@/utils/postMessageBridge";
import { interaction, router } from "@/utils/postMessageBridge/action"; import { interaction, router } from "@/utils/postMessageBridge/action";
import DskSkeleton from "@/components/DskSkeleton";
export default { export default {
name: "searchPerformanceIframeContainer", name: "searchPerformanceIframeContainer",
components: { components: {
IframeComIns IframeComIns,
DskSkeleton
}, },
data() { data() {
return { return {
...@@ -51,7 +56,8 @@ export default { ...@@ -51,7 +56,8 @@ export default {
value: "/slxy" value: "/slxy"
}, },
], ],
observer: null observer: null,
loading: true
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -79,6 +85,7 @@ export default { ...@@ -79,6 +85,7 @@ export default {
this.observer = null; this.observer = null;
}, },
async init() { async init() {
this.loading = true;
await this.$nextTick(); await this.$nextTick();
const dom = this.$refs["searchPerformanceIframeContainer"].$el.querySelector("iframe"); const dom = this.$refs["searchPerformanceIframeContainer"].$el.querySelector("iframe");
// 初始化iframe工具 // 初始化iframe工具
...@@ -117,10 +124,12 @@ export default { ...@@ -117,10 +124,12 @@ export default {
if (this.urlQueryParams?.layout) { if (this.urlQueryParams?.layout) {
await interaction.layoutHtml(); await interaction.layoutHtml();
} }
this.loading = false;
}, },
async changeCurrent(item) { async changeCurrent(item) {
try { try {
if (this.currentValue == item.name) return; if (this.currentValue == item.name) return;
this.loading = true;
this.currentValue = item.name; this.currentValue = item.name;
await router.iframeToTargetRouter({ await router.iframeToTargetRouter({
url: `/search${item.value}` url: `/search${item.value}`
...@@ -172,9 +181,23 @@ export default { ...@@ -172,9 +181,23 @@ export default {
} }
} }
.iframe-com-ins { .iframe-com-ins-container {
position: relative;
height: calc(100% - 67px); height: calc(100% - 67px);
margin-top: 16px; margin-top: 16px;
} }
.dsk-skeleton-outer-container {
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 999;
}
.iframe-com-ins {
height: 100%;
}
} }
</style> </style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment