|
@@ -4,7 +4,7 @@
|
|
|
<template v-if="list.length">
|
|
|
<div v-for="(item, i) in list" :key="i">
|
|
|
<div class="follow-item flex flex-row items-center">
|
|
|
- <el-avatar :size="44" :src="item.avatar" alt="头像"/>
|
|
|
+ <el-avatar :size="44" :src="item.avatar" alt="头像" />
|
|
|
<div class="flex flex-col ml-8">
|
|
|
<div class="text-base text-black-3">{{ item.nickName }}</div>
|
|
|
<div class="mt-4 text-sm text-black-9">{{ item.fansNumText }} 粉丝</div>
|
|
@@ -15,7 +15,8 @@
|
|
|
:class="['bg-[' + FANS_STATUS[item.fansStatus].bg + ']']">
|
|
|
{{ FANS_STATUS[item.fansStatus].text }}
|
|
|
</div>-->
|
|
|
- <el-button class="ml-auto" :disabled="item.saveLoading" :type="FANS_STATUS[item.fansStatus].bg" @click="handleFollow(item, i)">{{ FANS_STATUS[item.fansStatus].text }}</el-button>
|
|
|
+ <el-button class="ml-auto" :disabled="item.saveLoading" :type="FANS_STATUS[item.fansStatus].bg"
|
|
|
+ @click="handleFollow(item, i)">{{ FANS_STATUS[item.fansStatus].text }}</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="text-center text-black-9" v-if="loading">加载中...</div>
|
|
@@ -31,8 +32,8 @@
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
-import {formatNumber} from "~/utils";
|
|
|
-import {handleResponse} from "~/utils/request";
|
|
|
+import { formatNumber } from "~/utils";
|
|
|
+import { handleResponse } from "~/utils/request";
|
|
|
|
|
|
const props = defineProps({
|
|
|
listType: String,
|
|
@@ -91,7 +92,7 @@ const onLoad = async () => {
|
|
|
},
|
|
|
});
|
|
|
await handleResponse(res)
|
|
|
- const {dataList, totalCount} = res.data;
|
|
|
+ const { dataList, totalCount } = res.data;
|
|
|
// console.log(dataList, totalCount, 'dataTotaldataTotal')
|
|
|
//TODO 删除测试数据
|
|
|
/*const dataList = new Array(20).fill({
|
|
@@ -105,14 +106,39 @@ const onLoad = async () => {
|
|
|
const totalCount = 20 * 3;*/
|
|
|
|
|
|
// console.log(totalCount, pageNum.value, props.listType, '接口数据')
|
|
|
- const _list = dataList.map((o) => ({
|
|
|
+ let _list = dataList.map((o) => ({
|
|
|
...o,
|
|
|
avatar: o.attentionIdDictMap.avatar,
|
|
|
nickName: o.attentionIdDictMap?.name ?? '',
|
|
|
fansNumText: formatNumber(o.fansNum || 0),
|
|
|
saveLoading: false
|
|
|
}))
|
|
|
-
|
|
|
+ if (props.listType == 'fans') {
|
|
|
+ _list = dataList.map((o) => ({
|
|
|
+ ...o,
|
|
|
+ avatar: o.createUserIdDictMap?.avatar,
|
|
|
+ nickName: o.createUserIdDictMap?.name ?? '',
|
|
|
+ fansNumText: formatNumber(o.fansNum || 0),
|
|
|
+ attentionId: o.createUserIdDictMap?.id,
|
|
|
+ saveLoading: false
|
|
|
+ }))
|
|
|
+ } else if (props.listType == 'friend') {
|
|
|
+ _list = dataList.map((o) => ({
|
|
|
+ ...o,
|
|
|
+ avatar: o.attentionIdDictMap?.headImageUrl,
|
|
|
+ nickName: o.attentionIdDictMap?.showName ?? '',
|
|
|
+ fansNumText: formatNumber(o.fansNum || 0),
|
|
|
+ saveLoading: false
|
|
|
+ }))
|
|
|
+ } else {
|
|
|
+ _list = dataList.map((o) => ({
|
|
|
+ ...o,
|
|
|
+ avatar: o.attentionIdDictMap.avatar,
|
|
|
+ nickName: o.attentionIdDictMap?.name ?? '',
|
|
|
+ fansNumText: formatNumber(o.fansNum || 0),
|
|
|
+ saveLoading: false
|
|
|
+ }))
|
|
|
+ }
|
|
|
list.value.push(..._list);
|
|
|
total.value = totalCount;
|
|
|
isFinished.value = list.value.length >= total.value;
|
|
@@ -124,18 +150,18 @@ const onLoad = async () => {
|
|
|
}
|
|
|
const handleFollow = async (item) => {
|
|
|
let currIndex = list.value.findIndex((o) => o.id === item.id)
|
|
|
- if(currIndex < 0) return
|
|
|
+ if (currIndex < 0) return
|
|
|
|
|
|
try {
|
|
|
if (list.value[currIndex].saveLoading) return
|
|
|
list.value[currIndex].saveLoading = true;
|
|
|
- const {data} = await request(`/website/tourism/fans/saveConcern`, {
|
|
|
+ const { data } = await request(`/website/tourism/fans/saveConcern`, {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
attentionId: item.attentionId
|
|
|
}
|
|
|
});
|
|
|
- if(!data) return
|
|
|
+ if (!data) return
|
|
|
|
|
|
list.value[currIndex].fansStatus = data.fansStatus;
|
|
|
ElMessage.success('操作成功')
|