Showing
1 changed file
with
74 additions
and
40 deletions
| ... | @@ -4,15 +4,17 @@ | ... | @@ -4,15 +4,17 @@ |
| 4 | <div class="info"> | 4 | <div class="info"> |
| 5 | <van-row> | 5 | <van-row> |
| 6 | <van-col> | 6 | <van-col> |
| 7 | - <van-image round width="50" height="50" src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg" | 7 | + <van-image round width="50" height="50" :src="userInfo.avatar" style="padding-right: 1rem;" /> |
| 8 | - style="padding-right: 1rem;" /> | ||
| 9 | </van-col> | 8 | </van-col> |
| 10 | <van-col class="text-wrapper" span="18"> | 9 | <van-col class="text-wrapper" span="18"> |
| 11 | <div> | 10 | <div> |
| 12 | - <div class="username">瑟日古娜</div> | 11 | + <div class="username">{{ userInfo.name }}</div> |
| 13 | - <div class="toggle-user" @click="toggleUser"><van-icon name="plus" /> 关注</div> | 12 | + <div v-if="!userInfo.is_follow" class="toggle-user" @click="followUser()"> |
| 13 | + <van-icon name="plus" /> 关注 | ||
| 14 | + </div> | ||
| 15 | + <div v-else class="toggle-user" @click="followUser()"> 取消关注</div> | ||
| 14 | </div> | 16 | </div> |
| 15 | - <div class="address">呼和浩特市新城区蒙古族幼儿园</div> | 17 | + <div class="address">{{ userInfo.kg_name }}</div> |
| 16 | </van-col> | 18 | </van-col> |
| 17 | </van-row> | 19 | </van-row> |
| 18 | </div> | 20 | </div> |
| ... | @@ -21,74 +23,94 @@ | ... | @@ -21,74 +23,94 @@ |
| 21 | <van-row> | 23 | <van-row> |
| 22 | <van-col span="11" offset="1" class="un-tap-color"> | 24 | <van-col span="11" offset="1" class="un-tap-color"> |
| 23 | <p>获赞</p> | 25 | <p>获赞</p> |
| 24 | - <p>25478</p> | 26 | + <p>{{ userInfo.like_num }}</p> |
| 25 | </van-col> | 27 | </van-col> |
| 26 | <van-col span="1" class="divide">|</van-col> | 28 | <van-col span="1" class="divide">|</van-col> |
| 27 | <van-col span="11" class="un-tap-color"> | 29 | <van-col span="11" class="un-tap-color"> |
| 28 | <p>粉丝</p> | 30 | <p>粉丝</p> |
| 29 | - <p>45</p> | 31 | + <p>{{ userInfo.fans_num }}</p> |
| 30 | </van-col> | 32 | </van-col> |
| 31 | </van-row> | 33 | </van-row> |
| 32 | </div> | 34 | </div> |
| 33 | </div> | 35 | </div> |
| 34 | - <div style="padding: 0 1rem; background-color: #F7F7F7;"> | 36 | + <div class="list-title"> |
| 35 | <van-row> | 37 | <van-row> |
| 36 | <van-col span="6"> | 38 | <van-col span="6"> |
| 37 | - <div style="color: #222222; font-size: 1.1rem; border-bottom: 2px solid #F9D95C; padding: 0.5rem; text-align: center;">发布作品</div> | 39 | + <div class="title">发布作品</div> |
| 38 | </van-col> | 40 | </van-col> |
| 39 | <van-col span="12" offset="6" style="text-align: right; color: #626262;"> | 41 | <van-col span="12" offset="6" style="text-align: right; color: #626262;"> |
| 40 | - <div style="padding-top: 0.5rem;">6个作品</div> | 42 | + <div style="padding-top: 0.5rem;">{{ userInfo.prod?.length }}个作品</div> |
| 41 | </van-col> | 43 | </van-col> |
| 42 | </van-row> | 44 | </van-row> |
| 43 | </div> | 45 | </div> |
| 44 | <div> | 46 | <div> |
| 45 | - <van-list v-model:loading="loading" :finished="finished" finished-text="没有更多了" @load="onLoad"> | 47 | + <template v-for="item in userInfo.prod" :key="item" style="height: 3rem;"> |
| 46 | - <template v-for="item in dataList" :key="item" style="height: 3rem;"> | 48 | + <video-card :item="item"></video-card> |
| 47 | - <video-card :item="item"></video-card> | 49 | + </template> |
| 48 | - </template> | 50 | + <div style="height: 2rem;"></div> |
| 49 | - </van-list> | ||
| 50 | </div> | 51 | </div> |
| 51 | </div> | 52 | </div> |
| 52 | </template> | 53 | </template> |
| 53 | 54 | ||
| 54 | <script setup> | 55 | <script setup> |
| 55 | -import dataList from '@/mock/video_list' | ||
| 56 | import VideoCard from '@/components/VideoCard/index.vue' | 56 | import VideoCard from '@/components/VideoCard/index.vue' |
| 57 | 57 | ||
| 58 | -import { ref, reactive, onMounted } from 'vue' | 58 | +import { ref } from 'vue' |
| 59 | import { useRoute, useRouter } from 'vue-router' | 59 | import { useRoute, useRouter } from 'vue-router' |
| 60 | import axios from '@/utils/axios'; | 60 | import axios from '@/utils/axios'; |
| 61 | -import $ from 'jquery' | ||
| 62 | import { Toast } from 'vant'; | 61 | import { Toast } from 'vant'; |
| 63 | const $route = useRoute(); | 62 | const $route = useRoute(); |
| 64 | const $router = useRouter(); | 63 | const $router = useRouter(); |
| 65 | 64 | ||
| 66 | -// 处理书籍下作品列表 | 65 | +// 获取表演者信息 |
| 67 | -const list = ref([]); | 66 | +const userInfo = ref({}) |
| 68 | -const loading = ref(false); | 67 | +axios.get('/srv/?a=perf_info', { |
| 69 | -const finished = ref(false); | 68 | + params: { |
| 70 | - | 69 | + perf_id: $route.query.perf_id |
| 71 | -const onLoad = () => { | 70 | + } |
| 72 | - // 异步更新数据 | 71 | +}) |
| 73 | - // setTimeout 仅做示例,真实场景中一般为 ajax 请求 | 72 | + .then(res => { |
| 74 | - setTimeout(() => { | 73 | + if (res.data.code === 1) { |
| 75 | - for (let i = 0; i < 20; i++) { | 74 | + userInfo.value = res.data.data; |
| 76 | - list.value.push(list.value.length + 1); | 75 | + } else { |
| 76 | + console.warn(res); | ||
| 77 | + Toast({ | ||
| 78 | + icon: 'close', | ||
| 79 | + message: res.data.msg | ||
| 80 | + }); | ||
| 77 | } | 81 | } |
| 78 | - | 82 | + }) |
| 79 | - // 加载状态结束 | 83 | + .catch(err => { |
| 80 | - loading.value = false; | 84 | + console.error(err); |
| 81 | - | 85 | + }); |
| 82 | - // 数据全部加载完成 | 86 | + |
| 83 | - if (list.value.length >= 100) { | 87 | +// 关注个人用户 |
| 84 | - finished.value = true; | 88 | +const followUser = (status) => { |
| 89 | + axios.post('/srv/?a=add_follow', { | ||
| 90 | + perf_id: $route.query.perf_id | ||
| 91 | + }) | ||
| 92 | + .then(res => { | ||
| 93 | + if (res.data.code === 1) { | ||
| 94 | + if (res.data.msg === 'add follow OK') { | ||
| 95 | + userInfo.value.is_follow = 1 | ||
| 96 | + Toast.success('关注成功') | ||
| 97 | + } else { | ||
| 98 | + userInfo.value.is_follow = 0 | ||
| 99 | + Toast.success('取消关注') | ||
| 100 | + } | ||
| 101 | + } else { | ||
| 102 | + console.warn(res); | ||
| 103 | + Toast({ | ||
| 104 | + icon: 'close', | ||
| 105 | + message: res.data.msg | ||
| 106 | + }); | ||
| 85 | } | 107 | } |
| 86 | - }, 1000); | 108 | + }) |
| 109 | + .catch(err => { | ||
| 110 | + console.error(err); | ||
| 111 | + }) | ||
| 87 | }; | 112 | }; |
| 88 | 113 | ||
| 89 | -onMounted(() => { | ||
| 90 | - | ||
| 91 | -}) | ||
| 92 | </script> | 114 | </script> |
| 93 | 115 | ||
| 94 | <script> | 116 | <script> |
| ... | @@ -165,5 +187,17 @@ export default { | ... | @@ -165,5 +187,17 @@ export default { |
| 165 | } | 187 | } |
| 166 | } | 188 | } |
| 167 | } | 189 | } |
| 190 | + | ||
| 191 | + .list-title { | ||
| 192 | + padding: 0 1rem; | ||
| 193 | + background-color: #F7F7F7; | ||
| 194 | + .title { | ||
| 195 | + color: #222222; | ||
| 196 | + font-size: 1.1rem; | ||
| 197 | + border-bottom: 2px solid #F9D95C; | ||
| 198 | + padding: 0.5rem; | ||
| 199 | + text-align: center; | ||
| 200 | + } | ||
| 201 | + } | ||
| 168 | } | 202 | } |
| 169 | </style> | 203 | </style> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment