Showing
1 changed file
with
66 additions
and
13 deletions
| ... | @@ -4,7 +4,8 @@ | ... | @@ -4,7 +4,8 @@ |
| 4 | <div class="info"> | 4 | <div class="info"> |
| 5 | <van-row> | 5 | <van-row> |
| 6 | <van-col> | 6 | <van-col> |
| 7 | - <van-image v-if="userInfo.avatar" round width="50" height="50" :src="userInfo.avatar" style="padding-right: 1rem;" /> | 7 | + <van-image v-if="userInfo.avatar" round width="50" height="50" :src="userInfo.avatar" |
| 8 | + style="padding-right: 1rem;" /> | ||
| 8 | <van-image v-else round width="50" height="50" :src="icon_avatar" style="padding-right: 1rem;" /> | 9 | <van-image v-else round width="50" height="50" :src="icon_avatar" style="padding-right: 1rem;" /> |
| 9 | </van-col> | 10 | </van-col> |
| 10 | <van-col class="text-wrapper" span="18"> | 11 | <van-col class="text-wrapper" span="18"> |
| ... | @@ -40,17 +41,23 @@ | ... | @@ -40,17 +41,23 @@ |
| 40 | <div class="title">发布作品</div> | 41 | <div class="title">发布作品</div> |
| 41 | </van-col> | 42 | </van-col> |
| 42 | <van-col span="12" offset="6" style="text-align: right; color: #626262;"> | 43 | <van-col span="12" offset="6" style="text-align: right; color: #626262;"> |
| 43 | - <div style="padding-top: 0.5rem;">{{ userInfo.prod?.length }}个作品</div> | 44 | + <div style="padding-top: 0.5rem;">{{ userInfo.prod_num }}个作品</div> |
| 44 | </van-col> | 45 | </van-col> |
| 45 | </van-row> | 46 | </van-row> |
| 46 | </div> | 47 | </div> |
| 47 | <div> | 48 | <div> |
| 48 | - <template v-for="item in userInfo.prod" :key="item"> | 49 | + <!-- <template v-for="item in userInfo.prod" :key="item"> |
| 49 | <video-card :item="item" /> | 50 | <video-card :item="item" /> |
| 50 | - </template> | 51 | + </template> --> |
| 52 | + <van-list v-model:loading="loading" :finished="finished" :finished-text="finishedTextStatus ? '没有更多了' : ''" | ||
| 53 | + @load="onLoad"> | ||
| 54 | + <template v-for="item in prod" :key="item"> | ||
| 55 | + <video-card :item="item" /> | ||
| 56 | + </template> | ||
| 57 | + </van-list> | ||
| 51 | <div style="height: 8rem;" /> | 58 | <div style="height: 8rem;" /> |
| 52 | </div> | 59 | </div> |
| 53 | - <div class="donate-bar"> | 60 | + <div v-if="donateInfo" class="donate-bar"> |
| 54 | <div class="text"> | 61 | <div class="text"> |
| 55 | <span style="font-size: 0.85rem; color: #999999;">收到小红花 </span> | 62 | <span style="font-size: 0.85rem; color: #999999;">收到小红花 </span> |
| 56 | <van-icon :name="icon_flower" color="#c5c5c5" size="1.25rem" style="margin: 0 auto;" /> | 63 | <van-icon :name="icon_flower" color="#c5c5c5" size="1.25rem" style="margin: 0 auto;" /> |
| ... | @@ -92,20 +99,64 @@ const emptyStatus = ref(false); | ... | @@ -92,20 +99,64 @@ const emptyStatus = ref(false); |
| 92 | const donateInfo = ref({}) | 99 | const donateInfo = ref({}) |
| 93 | onMounted(async () => { | 100 | onMounted(async () => { |
| 94 | // 获取表演者信息 | 101 | // 获取表演者信息 |
| 95 | - const { data } = await perfInfoAPI({ perf_id: $route.query.perf_id }); | 102 | + // const { data } = await perfInfoAPI({ perf_id: $route.query.perf_id }); |
| 96 | - if (!data.prod.length) { | 103 | + // if (!data.prod.length) { |
| 97 | - emptyStatus.value = true; | 104 | + // emptyStatus.value = true; |
| 98 | - } else { | 105 | + // } else { |
| 106 | + // _.each(data.prod, (item) => { | ||
| 107 | + // item.type = 'read-only' // 特殊标识,判断入口 为keepAlive使用 | ||
| 108 | + // }) | ||
| 109 | + // userInfo.value = data; | ||
| 110 | + // emptyStatus.value = false; | ||
| 111 | + // } | ||
| 112 | + const donateData = await prepareDonateAPI({ perf_id: $route.query.perf_id }); | ||
| 113 | + donateInfo.value = donateData.data; | ||
| 114 | +}); | ||
| 115 | + | ||
| 116 | +/******** ******/ | ||
| 117 | + | ||
| 118 | +// 绑定页面数据 | ||
| 119 | +// tslint:disable-next-line: variable-name | ||
| 120 | +const prod = ref([]); | ||
| 121 | +const limit = ref(30) | ||
| 122 | +const offset = ref(0) | ||
| 123 | + | ||
| 124 | +// 处理书籍下作品列表 | ||
| 125 | +const loading = ref(false); | ||
| 126 | +const finished = ref(false); | ||
| 127 | + | ||
| 128 | +// 因为不能让空图标提前出来的写法 | ||
| 129 | +const finishedTextStatus = ref(false); | ||
| 130 | + | ||
| 131 | +/** | ||
| 132 | + * 向下滚动查询数据 | ||
| 133 | + */ | ||
| 134 | +const onLoad = async () => { | ||
| 135 | + // 异步更新数据 | ||
| 136 | + const { data, code } = await perfInfoAPI({ perf_id: $route.query.perf_id, limit: limit.value, offset: offset.value }) | ||
| 137 | + if (code === 1) { | ||
| 99 | _.each(data.prod, (item) => { | 138 | _.each(data.prod, (item) => { |
| 100 | item.type = 'read-only' // 特殊标识,判断入口 为keepAlive使用 | 139 | item.type = 'read-only' // 特殊标识,判断入口 为keepAlive使用 |
| 101 | }) | 140 | }) |
| 102 | userInfo.value = data; | 141 | userInfo.value = data; |
| 103 | - emptyStatus.value = false; | 142 | + prod.value = _.concat(prod.value, data.prod); |
| 143 | + prod.value = _.uniqBy(prod.value, 'id'); | ||
| 144 | + offset.value = prod.value.length; | ||
| 145 | + loading.value = false; | ||
| 146 | + // 数据全部加载完成 | ||
| 147 | + if (prod.value.length === data.prod_num) { | ||
| 148 | + // 加载状态结束 | ||
| 149 | + finished.value = true; | ||
| 150 | + } | ||
| 151 | + // 空数据提示 | ||
| 152 | + if (!prod.value.length) { | ||
| 153 | + finishedTextStatus.value = false; | ||
| 154 | + } | ||
| 155 | + emptyStatus.value = Object.is(prod.value.length, 0); | ||
| 104 | } | 156 | } |
| 105 | - const donateData = await prepareDonateAPI({ perf_id: $route.query.perf_id }); | 157 | +}; |
| 106 | - donateInfo.value = donateData.data; | ||
| 107 | -}); | ||
| 108 | 158 | ||
| 159 | +/******** ********/ | ||
| 109 | // 弹出捐赠弹框模块 | 160 | // 弹出捐赠弹框模块 |
| 110 | const showDonate = ref(false); | 161 | const showDonate = ref(false); |
| 111 | 162 | ||
| ... | @@ -173,6 +224,7 @@ setTimeout(() => { | ... | @@ -173,6 +224,7 @@ setTimeout(() => { |
| 173 | // background-image: url('@images/bg@2x.png'); | 224 | // background-image: url('@images/bg@2x.png'); |
| 174 | background-image: url('http://gyzs.onwall.cn/bg%402x.png'); | 225 | background-image: url('http://gyzs.onwall.cn/bg%402x.png'); |
| 175 | background-size: cover; | 226 | background-size: cover; |
| 227 | + | ||
| 176 | .info { | 228 | .info { |
| 177 | padding: 2rem; | 229 | padding: 2rem; |
| 178 | padding-right: 0; | 230 | padding-right: 0; |
| ... | @@ -249,6 +301,7 @@ setTimeout(() => { | ... | @@ -249,6 +301,7 @@ setTimeout(() => { |
| 249 | background-color: white; | 301 | background-color: white; |
| 250 | padding: 1rem; | 302 | padding: 1rem; |
| 251 | box-shadow: 0px -2px 4px 0px rgba(0, 0, 0, 0.07); | 303 | box-shadow: 0px -2px 4px 0px rgba(0, 0, 0, 0.07); |
| 304 | + | ||
| 252 | .text { | 305 | .text { |
| 253 | display: flex; | 306 | display: flex; |
| 254 | // flex-direction: column; | 307 | // flex-direction: column; | ... | ... |
-
Please register or login to post a comment