Browse Source

消息页面添加loading

pull/19/head
zyronon 4 years ago
parent
commit
5407471e65
  1. 10
      src/pages/me/RequestUpdate.vue
  2. 31
      src/pages/message/AllMessage.vue
  3. 35
      src/pages/message/Fans.vue
  4. 5
      src/pages/message/Message.vue
  5. 22
      src/pages/message/notice/DouyinHelper.vue
  6. 21
      src/pages/message/notice/LiveNotice.vue
  7. 26
      src/pages/message/notice/MoneyNotice.vue
  8. 22
      src/pages/message/notice/SystemNotice.vue
  9. 21
      src/pages/message/notice/TaskNotice.vue
  10. 6
      src/pages/people/components/People.vue

10
src/pages/me/RequestUpdate.vue

@ -10,7 +10,8 @@
</div> </div>
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content"> <Loading v-if="loading"/>
<div v-else class="content">
<div class="none" v-if="false"> <div class="none" v-if="false">
<img src="../../assets/img/icon/none-bg1.webp" alt=""> <img src="../../assets/img/icon/none-bg1.webp" alt="">
<div class="title">暂时还没有粉丝点击求更新</div> <div class="title">暂时还没有粉丝点击求更新</div>
@ -66,6 +67,7 @@ export default {
data() { data() {
return { return {
isShowOption: false, isShowOption: false,
loading: false,
openRequestUpdate: true, openRequestUpdate: true,
} }
}, },
@ -73,8 +75,14 @@ export default {
...mapState(['friends']) ...mapState(['friends'])
}, },
created() { created() {
this.getData()
}, },
methods: { methods: {
async getData() {
this.loading = true
await this.$sleep(700)
this.loading = false
},
toggleRequestUpdate() { toggleRequestUpdate() {
this.openRequestUpdate = !this.openRequestUpdate this.openRequestUpdate = !this.openRequestUpdate
this.isShowOption = false this.isShowOption = false

31
src/pages/message/AllMessage.vue

@ -40,7 +40,9 @@
</div> </div>
</transition> </transition>
<div class="content"> <div class="content">
<Loading v-if="loading"/>
<Scroll <Scroll
v-else
ref="scroll" ref="scroll"
:use-refresh="true" :use-refresh="true"
@refresh="refresh" @refresh="refresh"
@ -106,9 +108,9 @@
<img src="../../assets/img/icon/about-gray.png" alt=""> <img src="../../assets/img/icon/about-gray.png" alt="">
</div> </div>
<Peoples v-model:list="recommend" <Peoples v-model:list="recommend"
:loading="loading" :loading="loadingMore"
mode="recommend"/> mode="recommend"/>
<Loading :is-full-screen="false" v-if="loading"/> <Loading :is-full-screen="false" v-if="loadingMore"/>
</Scroll> </Scroll>
</div> </div>
</div> </div>
@ -133,6 +135,7 @@ export default {
data() { data() {
return { return {
loading: false, loading: false,
loadingMore: false,
isShowType: false, isShowType: false,
showAll: false, showAll: false,
recommend: [], recommend: [],
@ -162,14 +165,20 @@ export default {
} }
}, },
created() { created() {
this.recommend = this.$clone(this.friends.all) this.getData()
this.fans = this.$clone(this.friends.all)
this.recommend.map(v => {
v.type = -1
})
this.messages = this.$clone(resource.videos)
}, },
methods: { methods: {
async getData() {
this.loading = true
await this.$sleep(800)
this.loading = false
this.recommend = this.$clone(this.friends.all)
this.fans = this.$clone(this.friends.all)
this.recommend.map(v => {
v.type = -1
})
this.messages = this.$clone(resource.videos)
},
toggleShowType(index) { toggleShowType(index) {
this.selectShowType = index this.selectShowType = index
this.isShowType = false this.isShowType = false
@ -183,10 +192,10 @@ export default {
this.$refs.scroll.refreshEnd() this.$refs.scroll.refreshEnd()
}, },
async loadData() { async loadData() {
if (this.loading) return if (this.loadingMore) return
this.loading = true this.loadingMore = true
await this.$sleep(500) await this.$sleep(500)
this.loading = false this.loadingMore = false
let temp = this.$clone(this.friends.all) let temp = this.$clone(this.friends.all)
temp.map(v => { temp.map(v => {
v.type = -1 v.type = -1

35
src/pages/message/Fans.vue

@ -6,18 +6,19 @@
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content"> <div class="content">
<Scroll @pulldown="loadData"> <Loading v-if="loading"/>
<Scroll @pulldown="loadData" v-else>
<Peoples v-model:list="fans" <Peoples v-model:list="fans"
:loading="loading" :loading="loadingMore"
mode="fans"/> mode="fans"/>
<div class="title"> <div class="title">
<span>朋友推荐</span> <span>朋友推荐</span>
<img src="../../assets/img/icon/about-gray.png" alt=""> <img src="../../assets/img/icon/about-gray.png" alt="">
</div> </div>
<Peoples v-model:list="recommend" <Peoples v-model:list="recommend"
:loading="loading" :loading="loadingMore"
mode="recommend"/> mode="recommend"/>
<Loading :is-full-screen="false" v-if="loading"/> <Loading :is-full-screen="false" v-if="loadingMore"/>
</Scroll> </Scroll>
</div> </div>
</div> </div>
@ -40,6 +41,7 @@ export default {
data() { data() {
return { return {
loading: false, loading: false,
loadingMore: false,
recommend: [], recommend: [],
fans: [], fans: [],
} }
@ -48,22 +50,25 @@ export default {
...mapState(['userinfo', 'friends']) ...mapState(['userinfo', 'friends'])
}, },
created() { created() {
this.recommend = this.$clone(this.friends.all) this.getData()
this.fans = this.$clone(this.friends.all)
this.recommend.map(v => {
v.type = -1
})
}, },
methods: { methods: {
remove(index) { async getData() {
this.$notice('将不会再为你推荐该用户')
this.recommend.splice(index, 1)
},
async loadData() {
if (this.loading) return
this.loading = true this.loading = true
await this.$sleep(500) await this.$sleep(500)
this.loading = false this.loading = false
this.recommend = this.$clone(this.friends.all)
this.fans = this.$clone(this.friends.all)
this.recommend.map(v => {
v.type = -1
})
},
async loadData() {
if (this.loadingMore) return
this.loadingMore = true
await this.$sleep(500)
this.loadingMore = false
let temp = this.$clone(this.friends.all) let temp = this.$clone(this.friends.all)
temp.map(v => { temp.map(v => {
v.type = -1 v.type = -1

5
src/pages/message/Message.vue

@ -464,6 +464,11 @@ export default {
v.type = -2 v.type = -2
}) })
}, },
mounted() {
setTimeout(()=>{
// this.isShowRecommend = true
},1000)
},
methods: { methods: {
async loadRecommendData() { async loadRecommendData() {
if (this.loading) return if (this.loading) return

22
src/pages/message/notice/DouyinHelper.vue

@ -5,7 +5,8 @@
<span class="f16">抖音小助手</span> <span class="f16">抖音小助手</span>
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content" ref="content"> <Loading v-if="loading"/>
<div class="content" ref="content" v-else>
<NoMore/> <NoMore/>
<div class="list"> <div class="list">
<!--TODO 超过3行显示全文--> <!--TODO 超过3行显示全文-->
@ -30,11 +31,9 @@ import {nextTick} from "vue";
export default { export default {
name: "DouyinHelper", name: "DouyinHelper",
components: {}, components: {},
props: {
modelValue: false
},
data() { data() {
return { return {
loading:false,
list: [ list: [
{ {
read: false, read: false,
@ -78,14 +77,21 @@ export default {
}, },
computed: {}, computed: {},
created() { created() {
this.getData()
}, },
mounted() { mounted() {
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
}, },
methods: { methods: {
async getData(){
this.loading = true
await this.$sleep(700)
this.loading = false
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
},
goDetail(item) { goDetail(item) {
item.read = true item.read = true
this.$no() this.$no()

21
src/pages/message/notice/LiveNotice.vue

@ -8,7 +8,8 @@
<span class="f14" @click="$nav('/message/notice-setting',{ type : 'LIVE' })">通知设置</span> <span class="f14" @click="$nav('/message/notice-setting',{ type : 'LIVE' })">通知设置</span>
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content"> <Loading v-if="loading"/>
<div class="content" v-else>
<div class="list" ref="content"> <div class="list" ref="content">
<NoMore/> <NoMore/>
<div class="item" v-for="item in list" @click="goDetail(item)"> <div class="item" v-for="item in list" @click="goDetail(item)">
@ -33,6 +34,7 @@ export default {
}, },
data() { data() {
return { return {
loading:false,
list: [ list: [
{ {
title: '直播举报反馈', title: '直播举报反馈',
@ -50,14 +52,19 @@ export default {
watch: {}, watch: {},
computed: {}, computed: {},
created() { created() {
}, this.getData()
mounted() {
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
}, },
methods: { methods: {
async getData() {
this.loading = true
await this.$sleep(700)
this.loading = false
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
},
goDetail(item) { goDetail(item) {
item.read = true item.read = true
if (item.detail) { if (item.detail) {

26
src/pages/message/notice/MoneyNotice.vue

@ -8,7 +8,8 @@
<span class="f14" @click="$nav('/message/notice-setting',{ type : 'MONEY' })">通知设置</span> <span class="f14" @click="$nav('/message/notice-setting',{ type : 'MONEY' })">通知设置</span>
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content"> <Loading v-if="loading"/>
<div class="content" v-else>
<div class="list" ref="content"> <div class="list" ref="content">
<NoMore/> <NoMore/>
<!--TODO 超过3行显示全文--> <!--TODO 超过3行显示全文-->
@ -78,6 +79,7 @@ export default {
}, },
data() { data() {
return { return {
loading: false,
isShowSetting: false, isShowSetting: false,
openNotice: false, openNotice: false,
list: [ list: [
@ -102,17 +104,21 @@ export default {
] ]
} }
}, },
watch: {},
computed: {},
created() { created() {
this.getData()
}, },
mounted() { methods: {
nextTick(() => { async getData() {
let content = this.$refs['content'] this.loading = true
content.scrollTo({top: content.scrollHeight - content.clientHeight}) await this.$sleep(700)
}) this.loading = false
},
methods: {} nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
},
}
} }
</script> </script>

22
src/pages/message/notice/SystemNotice.vue

@ -8,7 +8,8 @@
<span class="f14" @click="$nav('/message/notice-setting',{ type : 'SYSTEM' })">通知设置</span> <span class="f14" @click="$nav('/message/notice-setting',{ type : 'SYSTEM' })">通知设置</span>
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content"> <Loading v-if="loading"/>
<div class="content" v-else>
<div class="list" ref="content"> <div class="list" ref="content">
<NoMore/> <NoMore/>
<!--TODO 超过3行显示全文--> <!--TODO 超过3行显示全文-->
@ -64,11 +65,9 @@ import Mask from "../../../components/Mask";
export default { export default {
name: "SystemNotice", name: "SystemNotice",
components: {Mask}, components: {Mask},
props: {
modelValue: false
},
data() { data() {
return { return {
loading: false,
isShowMask: false, isShowMask: false,
isShowLeftHover: false, isShowLeftHover: false,
isShowRightHover: false, isShowRightHover: false,
@ -124,14 +123,21 @@ export default {
}, },
computed: {}, computed: {},
created() { created() {
this.getData()
}, },
mounted() { mounted() {
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
}, },
methods: { methods: {
async getData() {
this.loading = true
await this.$sleep(700)
this.loading = false
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
},
goDetail(item) { goDetail(item) {
item.read = true item.read = true
if (item.detail) { if (item.detail) {

21
src/pages/message/notice/TaskNotice.vue

@ -8,7 +8,8 @@
<span class="f14" @click="$nav('/message/notice-setting',{ type : 'TASK' })">通知设置</span> <span class="f14" @click="$nav('/message/notice-setting',{ type : 'TASK' })">通知设置</span>
</template> </template>
</BaseHeader> </BaseHeader>
<div class="content"> <Loading v-if="loading"/>
<div class="content" v-else>
<div class="list" ref="content"> <div class="list" ref="content">
<NoMore/> <NoMore/>
<!--TODO 超过3行显示全文--> <!--TODO 超过3行显示全文-->
@ -67,6 +68,7 @@ export default {
}, },
data() { data() {
return { return {
loading:false,
isShowSetting: false, isShowSetting: false,
openNotice: false, openNotice: false,
list: [ list: [
@ -90,14 +92,19 @@ export default {
watch: {}, watch: {},
computed: {}, computed: {},
created() { created() {
}, this.getData()
mounted() {
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
}, },
methods: { methods: {
async getData() {
this.loading = true
await this.$sleep(700)
this.loading = false
nextTick(() => {
let content = this.$refs['content']
content.scrollTo({top: content.scrollHeight - content.clientHeight})
})
},
goDetail(item) { goDetail(item) {
item.read = true item.read = true
if (item.detail) { if (item.detail) {

6
src/pages/people/components/People.vue

@ -153,7 +153,7 @@ export default {
.People { .People {
transition: all 0.3s ease; transition: all 0.3s ease;
width: 100%; width: 100%;
height: 7rem; height: 8rem;
display: flex; display: flex;
align-items: center; align-items: center;
position: relative; position: relative;
@ -207,11 +207,11 @@ export default {
border-radius: .2rem; border-radius: .2rem;
background: rgb(58, 58, 67); background: rgb(58, 58, 67);
font-size: 1.2rem; font-size: 1.2rem;
padding: .4rem 0; padding: .5rem 0;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 5.5rem; width: 5.8rem;
&:only-child { &:only-child {
width: 7rem; width: 7rem;

Loading…
Cancel
Save