feat:我的动态;我的评价

This commit is contained in:
ctw committed 2025-12-02 15:25:19 +08:00
1 parent 55a222e2d6
commit 6c78e14257
7 files changed
+62 -60

No files matched your search

+6 -11
View File
@@ -2,7 +2,7 @@
"name" : "荷塘月色",
"appid" : "__UNI__5B53E65",
"description" : "聊天交友app",
"versionName" : "2025.10",
"versionName" : "0.0.0",
"versionCode" : 0,
"transformPx" : false,
"app-plus" : {
@@ -28,7 +28,8 @@
"VideoPlayer" : {},
"OAuth" : {},
"Camera" : {},
"Geolocation" : {}
"Geolocation" : {},
"FaceID" : {}
},
"distribute" : {
"android" : {
@@ -66,7 +67,7 @@
"<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\"/>"
],
"minSdkVersion" : 21,
"schemes" : "shopro",
"schemes" : "荷塘月色",
"excludePermissions" : [
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>"
]
@@ -80,7 +81,7 @@
"NSCameraUsageDescription" : "需要同意访问您的摄像头拍摄照片才能完善该条目",
"NSUserTrackingUsageDescription" : "开启追踪并不会获取您在其它站点的隐私信息,该行为仅用于标识设备,保障服务安全和提升浏览体验"
},
"urltypes" : "shopro",
"urltypes" : "荷塘月色",
"capabilities" : {
"entitlements" : {
"com.apple.developer.associated-domains" : [ "applinks:shopro.sheepjs.com" ]
@@ -91,13 +92,7 @@
"sdkConfigs" : {
"speech" : {},
"ad" : {},
"oauth" : {
"apple" : {},
"weixin" : {
"appid" : "wxae7a0c156da9383b",
"UniversalLinks" : "https://shopro.sheepjs.com/uni-universallinks/__UNI__082C0BA/"
}
},
"oauth" : {},
"payment" : {
"weixin" : {
"__platform__" : [ "ios", "android" ],
+7 -2
View File
@@ -121,7 +121,12 @@
theme="paragraph"
/>
</view>
<moment-card v-else-if="listData.length" v-for="item in listData" :data="item" />
<moment-card
v-else-if="listData.length"
v-for="item in listData"
:data="item"
:show-chat="false"
/>
<wd-status-tip v-else image="content" tip="暂无内容" />
</scroll-list>
@@ -301,7 +306,7 @@
await RecentApi.recentOperate({
memberId: userDetail.value.member.memberId,
memberRecentId: userDetail.value.id,
action: 'RECENT_REPORT',
action: 'MEMBER_REPORT',
reportType: '1',
});
return;
@@ -29,13 +29,7 @@
/>
</swiper-item>
</swiper>
<moment-card
v-if="listData.length"
v-for="item in listData"
:data="item"
@detail="goDetail(item)"
/>
<view v-else class="flex px-4 py-4" v-for="index in 3" :key="index">
<view v-if="isRefreshing" class="flex px-4 py-4" v-for="index in 3" :key="index">
<wd-skeleton :row-col="[{ size: '50px', type: 'circle' }]" animation="flashed" />
<wd-skeleton
:custom-style="{ width: '100%', marginLeft: '12px' }"
@@ -43,6 +37,13 @@
theme="paragraph"
/>
</view>
<moment-card
v-else-if="listData.length"
v-for="item in listData"
:data="item"
@detail="goDetail(item)"
/>
<wd-status-tip v-else image="content" tip="暂无内容" />
</scroll-list>
</template>
@@ -67,7 +68,7 @@
city: userCity.value.t,
memberId: '',
});
const { listData, loadMoreStatus, refreshList, listLoadMore } = useScroll(
const { isRefreshing, listData, loadMoreStatus, refreshList, listLoadMore } = useScroll(
RecentApi.quickPage,
params,
);
+7 -15
View File
@@ -21,15 +21,7 @@
@refresh="refreshList"
@loadMore="listLoadMore"
>
<moment-card v-if="listData.length" v-for="item in listData" :data="item" />
<view v-else class="flex px-4 py-4" v-for="index in 4" :key="index">
<wd-skeleton :row-col="[{ size: '50px', type: 'circle' }]" animation="flashed" />
<wd-skeleton
:custom-style="{ width: '100%', marginLeft: '12px' }"
animation="flashed"
theme="paragraph"
/>
</view>
<moment-card v-for="item in listData" :data="item" :showChat="false" />
</scroll-list>
</wd-config-provider>
</template>
@@ -39,11 +31,11 @@
import ScrollList from '@/sheep/components/scroll-list/scroll-list.vue';
import useScroll from '@/sheep/hooks/use-scroll';
import RecentApi from '@/sheep/api/member/recent';
import { reactive } from 'vue';
import { onMounted } from 'vue';
const params = reactive({});
const { listData, loadMoreStatus, refreshList, listLoadMore } = useScroll(
RecentApi.myMomentList,
params,
);
const { listData, loadMoreStatus, refreshList, listLoadMore } = useScroll(RecentApi.myMomentList);
onMounted(() => {
refreshList();
});
</script>
+21 -11
View File
@@ -103,28 +103,28 @@
:safe-area-inset-bottom="true"
>
<view class="w-90vw h-400rpx flex-col-center gap-4 flex-wrap">
<view class="text-color-theme text-lg">我的评价</view>
<view class="text-color-theme text-lg">我的评价{{ myEvaluation.evaluateCount }}</view>
<view class="w-90% flex justify-around">
<view class="bg-color-theme-dark flex items-center p-1 rounded-1">
<text class="mr-2 text-xs">身材</text>
<wd-rate v-model="myEvaluation.a" readonly />
<wd-rate v-model="myEvaluation.scoreSc" readonly />
</view>
<view class="bg-color-theme-dark flex items-center p-1 rounded-1">
<text class="mr-2 text-xs">颜值</text>
<wd-rate v-model="myEvaluation.a" readonly />
<wd-rate v-model="myEvaluation.scoreSk" readonly />
</view>
</view>
<view class="w-90% flex justify-around">
<view class="bg-color-theme-dark flex items-center p-1 rounded-1">
<text class="mr-2 text-xs">有趣</text>
<wd-rate v-model="myEvaluation.a" readonly />
<wd-rate v-model="myEvaluation.scoreYq" readonly />
</view>
<view class="bg-color-theme-dark flex items-center p-1 rounded-1">
<text class="mr-2 text-xs">耐心</text>
<wd-rate v-model="myEvaluation.a" readonly />
<wd-rate v-model="myEvaluation.scoreNx" readonly />
</view>
</view>
<view class="text-color-theme text-lg">综合评分 1.0</view>
<view class="text-color-theme text-lg">综合评分 {{ myEvaluation.avgScore }}</view>
</view>
</wd-popup>
<wd-curtain
@@ -162,9 +162,15 @@
shieldTotal: 0,
collectTotal: 0,
});
// 我的评价数据
const myEvaluation = reactive({
a: 0,
scoreSc: 0,
scoreNx: 0,
scoreSk: 0,
scoreYq: 0,
avgScore: 0,
evaluateCount: 0,
});
const myEvaluationShow = ref(false); // 我的评价弹窗
const curtainShow = ref(false); // 关注公众号弹窗
@@ -193,9 +199,13 @@
// 查看我的评价
const lookMyEvaluation = async () => {
await RecentApi.myEvaluate();
myEvaluation.a = 1;
myEvaluationShow.value = true;
const { data = null } = await RecentApi.myEvaluate();
if (data) {
Object.assign(myEvaluation, data);
myEvaluationShow.value = true;
return;
}
uni.showToast({ title: '查看失败', icon: 'none' });
};
// 关注公众号
@@ -215,7 +225,7 @@
{ title: '我的收益', value: '', icon: 'wallet', to: '' },
{ title: '访客记录', value: '', icon: 'dong', to: '/pages/profile/view-record' },
{ title: '认证中心', value: '', icon: 'user', to: '/pages/profile/face-verify' },
{ title: '我的动态', value: '', icon: 'star', to: '/pages/profile/my-moment' },
{ title: '我的动态√', value: '', icon: 'star', to: '/pages/profile/my-moment' },
{ title: '我的评价', value: '', icon: 'view-module', to: '', click: lookMyEvaluation },
{ title: '问题反馈√', value: '', icon: 'backtop-rectangle', to: '', click: goFeedback },
// { title: '客服助手', value: '', icon: 'service', to: '' },
+2 -2
View File
@@ -95,7 +95,7 @@ const RecentApi = {
// 查看我的动态
myMomentList: (data: any) => {
return request({
url: '/member/recent/xxx/xxx',
url: '/member/recent/dynamic-page',
method: 'POST',
data,
custom: {
@@ -119,7 +119,7 @@ const RecentApi = {
// 查看我的评价
myEvaluate: () => {
return request({
url: '/member/recent/xxx/xxx',
url: '/member/recent/evaluate-detail',
method: 'POST',
custom: {
showLoading: true,
@@ -67,7 +67,7 @@
<uni-icons v-else type="heart" size="22" color="#B5B4BC" @click="handleLike" />
<text>{{ data.operationTotal || 0 }} 喜欢</text>
</view>
<view v-if="!pageId" class="flex items-center gap-10rpx text-sm" @click="goChat">
<view v-if="props.showChat" class="flex items-center gap-10rpx text-sm" @click="goChat">
<uni-icons type="chat" size="22" color="#B5B4BC" />
<text>打招呼</text>
</view>
@@ -81,24 +81,23 @@
import { computed, reactive, ref } from 'vue';
import { formatDate } from '@/sheep/util/index';
import { getGender } from '@/sheep/util/index';
import { onLoad } from '@dcloudio/uni-app';
import useConfigStore from '@/chat-store/configStore.js';
import useChatStore from '@/chat-store/chatStore.js';
import useFriendStore from '@/chat-store/friendStore.js';
import request from '@/common/request';
const props = defineProps<{
data: any;
}>();
const props = withDefaults(
defineProps<{
data: any;
showChat?: boolean;
}>(),
{
showChat: true,
},
);
const emit = defineEmits<(e: 'detail') => void>();
const member = computed(() => props.data.member || {});
const pageId = ref();
onLoad((options: any) => {
const { memberId = null } = options;
pageId.value = memberId;
});
const isLike = ref(false);
const params = reactive({