hookehuyr

✨ feat(我的详情页): 接口联调

...@@ -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" />&nbsp;关注</div> 12 + <div v-if="!userInfo.is_follow" class="toggle-user" @click="followUser()">
13 + <van-icon name="plus" />&nbsp;关注
14 + </div>
15 + <div v-else class="toggle-user" @click="followUser()">&nbsp;取消关注</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
......