update 首页、动态、消息接口联调

This commit is contained in:
zengBin 2024-09-26 17:36:20 +08:00
parent 807b1b7b87
commit d82b478e14
30 changed files with 1738 additions and 908 deletions

View File

@ -2,7 +2,7 @@
.m_search {
width: 446rpx;
height: 64rpx;
background-color: #F8F8F8;
background-color: #f8f8f8;
border-radius: 100rpx;
padding: 0 22rpx;
margin-left: 30rpx;
@ -15,14 +15,15 @@
}
</style>
<template>
<view class="~cu-custom" :style="{height: CustomBar + 'px', zIndex: 1}">
<view class="~cu-bar ~fixed" :style="{height: CustomBar + 'px', paddingTop: StatusBar + 'px', background: bgColor}">
<view class="~cu-custom">
<view class="~cu-bar ~fixed" :style="{height: CustomBar + 'px', paddingTop: StatusBar + 'px', background: bgColor, zIndex: 999}">
<view class="m_search ~f-fcl">
<image class="m_search_icon" src="https://images.ufutx.com/202106/19/c607aaf49440b0df3308d6e048fd9ad7.png" mode="aspectFit" lazy-load="false"></image>
<input disabled type="text" placeholder="搜索昵称">
<input disabled type="text" :placeholder="searchName">
</view>
</view>
</view>
<view :style="{height: navHeight + 'px'}"></view>
</template>
<script>
import wepy from '@wepy/core'
@ -33,10 +34,15 @@
props: {
bgColor: {
type: String,
default: ''
default: '#ffffff'
},
searchName: {
type: String,
default: '搜索...'
}
},
data: {
navHeight: 0,
StatusBar: 0,
CustomBar: 0,
Custom: 0
@ -45,6 +51,7 @@
methods: {
},
created() {
this.navHeight = this.$app.$options.globalData.navBarHeight
this.StatusBar = this.$app.$options.globalData.StatusBar
this.CustomBar = this.$app.$options.globalData.CustomBar
this.Custom = this.$app.$options.globalData.Custom

View File

@ -207,9 +207,9 @@
</style>
<template>
<view class="~ui-pl-30 ~ui-pr-30 ~ui-pt-20">
<view class="~font_32 ~color333">评论 · {{ detail.comment_count }}</view>
<view class="~font_32 ~color333">评论 · {{ detail.commenter_count }}</view>
<view class="operation_mask" v-if="showOperation" @tap="hiddenOperation"></view>
<view v-if="detail.comment_count == 0" class="ui-no-data">
<view v-if="detail.commenter_count == 0" class="ui-no-data">
<view class="color333">还没有人<span @tap="handlsInput" class="~color-theme">评论</span>,快来抢沙发吧</view>
</view>
<view v-else class="ui-discuss-box">
@ -229,17 +229,20 @@
</view>
</view>
<view class="~f-fl">
<view class="ui-user-pic" v-if="item.user.avatar" style="{{'background-image:url(' + item.user.avatar + ');'}}"></view>
<view class="ui-user-pic" v-if="item.User.photo" style="{{'background-image:url(' + item.User.photo + ');'}}"></view>
<view class="ui-user-pic" v-else style="background-image:url(https://image.fulllinkai.com/202203/09/cc1c73eb1a4941fef25a15cd1ff2f9df.png);"></view>
<view class="~ui-pl-16">
<view class="~ui-pl-16" @tap="changeReply(item)">
<view class="~f-fcl">
<view class="ui-name">{{ item.user.nickname || '未设置名称' }}</view>
<image v-if="item.user.sex == 1" class="ui-sex-icon ~ui-ml-10" src="https://images.ufutx.com/202103/23/3e7ac93e7bff26a9b62fe3232c776a96.png" lazy-load="false"></image>
<view class="ui-name">{{ item.User.nickname || '未设置名称' }}</view>
<image v-if="item.User.sex == 1" class="ui-sex-icon ~ui-ml-10" src="https://images.ufutx.com/202103/23/3e7ac93e7bff26a9b62fe3232c776a96.png" lazy-load="false"></image>
<image v-else class="ui-sex-icon ~ui-ml-10" src="https://images.ufutx.com/202103/23/4fd7a85e7073152fde91190b8957910e.png" lazy-load="false"></image>
<image class="referencesIcon" src="https://image.fulllinkai.com/202207/19/7e78a1dd367f1250d4cba4e85bfd60f1.png" mode="widthFix" v-if="item.user.type != 'single'"></image>
<image class="referencesIcon" src="https://image.fulllinkai.com/202207/19/7e78a1dd367f1250d4cba4e85bfd60f1.png" mode="widthFix" v-if="item.User.type != 'single'"></image>
</view>
<view class="~color999 ~font_24 ~f-fb ~ui-pt-4">{{ item.create_time }}</view>
<view class="~color333 ~font_30 ui-content">
<span v-if="item.Replyer">回复 {{item.Replyer.nickname}}</span>
{{ item.comment }}
</view>
<view class="~color999 ~font_24 ~f-fb ~ui-pt-4">{{ item.created_at }}</view>
<view class="~color333 ~font_30 ui-content">{{ item.comment }}</view>
</view>
<view class="ui-like-icon-box">
<view class="~f-fcr" v-if="item.isLker == false">
@ -275,6 +278,7 @@
import wepy from '@wepy/core'
import base from '../mixins/base'
import https from '../mixins/https'
import {service} from '../config'
wepy.component({
props: {
@ -288,17 +292,57 @@
}
},
data: {
operationId: '',
operationId: null,
throttle: true,
showOperation: false,
defaultAvatar: 'https://images.ufutx.com/202007/01/e0de60525143427d4dd19515a5b387ba.png',
gifurl: 'https://images.ufutx.com/202106/11/d40b92e053a693f30eb197bf6374af95.gif',
name: '',
replyId: '',
inputVal: '',
showReplyView: true,
inputBoxH: 86
},
mixins: [https, base],
methods: {
// 评论
send() {
let vm = this
let comment = vm.replyId ? vm.inputVal.split(`回复@${vm.name}`)[1] : vm.inputVal
let data = {
reply_id: vm.replyId || '',
comment: vm.replyId ? vm.inputVal.split(`回复@${vm.name}`)[1] : vm.inputVal
}
if (!comment) {
vm.$showToast('请输入评论内容')
return
}
if (vm.throttle) {
vm.throttle = false
vm.$post({url: `${service.host}/moment/${vm.detail.id}/comment`, data}).then(({code}) => {
wx.hideLoading()
if (code == 0) {
vm.$emit('getList')
vm.replyContent = ''
vm.name = ''
vm.inputVal = ''
vm.replyId = ''
}
vm.throttle = true
}).catch(() => {
vm.throttle = true
wx.hideLoading()
})
}
},
// 点击评论内容回复
changeReply(e) {
let vm = this
vm.replyId = e.User.id
vm.name = e.User.nickname
vm.inputVal = `回复@${e.User.nickname}`
},
// 长按评论内容弹框复制等操作
commentsOperation(id) {
let vm = this
vm.showOperation = true
@ -307,7 +351,7 @@
hiddenOperation() {
let vm = this
vm.showOperation = false
vm.operationId = ''
vm.operationId = null
},
// 输入框聚焦事件
InputFocus() {
@ -320,12 +364,13 @@
},
// 监听输入框内容
changeMsg(e) {
console.log(e, '8888')
let vm = this
if (/\[[^\]]+\]/.test(e.$wx.detail.value)) {
vm.replyContent = vm.transitionMsg(e.$wx.detail.value)
} else {
vm.replyContent = e.$wx.detail.value
vm.replyContent = e.$wx.detail.value
if (!vm.replyContent || vm.replyContent == `回复@${vm.name}`) {
vm.replyContent = ''
vm.name = ''
vm.inputVal = ''
vm.replyId = ''
}
vm.changeInputHeight()
},

View File

@ -205,19 +205,18 @@ scroll-view {
<block v-if="item.type != 'vote'">
<block v-for="(item,index) in list" :key="index">
<view class="~f-fl ~ui-pl-30 ~ui-pr-30 ~ui-pt-30 ~ui-relative" @tap="jumpPath(`/pages/dynamic/dynamicDetail?id=${item.id}`)">
<view class="ui-user-pic" v-if="item.u_photo" style="{{'background-image:url(' + item.u_photo + ');'}}"></view>
<view class="ui-user-pic" v-else style="background-image:url(https://image.fulllinkai.com/202203/09/cc1c73eb1a4941fef25a15cd1ff2f9df.png);"></view>
<view class="~color999 ~font_24 ui-time">{{ item.created_at }}</view>
<view class="ui-user-pic" style="{{'background-image:url(' + (item.user.photo || 'https://image.fulllinkai.com/202203/09/cc1c73eb1a4941fef25a15cd1ff2f9df.png') + ')'}}" @tap.stop="jumpPath(`/pages/home/information?id=${item.user_id}`)"></view>
<view class="~color999 ~font_24 ui-time">{{ item.create_time }}</view>
<view class="~ui-pl-16">
<view class="~f-fc">
<view class="~f-fcl">
<view class="ui-name">{{ item.u_nickname || '未设置名称' }}</view>
<view class="ui-name">{{ item.user.nickname || '未设置名称' }}</view>
<view v-if="item.work_user_tag" class="ui-identification ~font_22 ~f-fcc">
<image class="ui-identification-icon" src="https://image.fulllinkai.com/202307/21/eb5c30d676eac58af4235bad8e6d8c43.png" mode="widthFix"></image>
{{item.work_user_tag}}
</view>
</view>
<image class="referencesIcon" src="https://image.fulllinkai.com/202207/19/7e78a1dd367f1250d4cba4e85bfd60f1.png" mode="widthFix" v-if="item.u_type != 'single'"></image>
<image class="referencesIcon" src="https://image.fulllinkai.com/202207/19/7e78a1dd367f1250d4cba4e85bfd60f1.png" mode="widthFix" v-if="item.user.type != 'single'"></image>
<view class="~font_24 ~ui-ml-24 ~color-theme" v-if="item.vote_id > 0">
参与了投票:
</view>
@ -225,9 +224,9 @@ scroll-view {
<view class="~font_24 ~f-fbc">
<view class="~f-fcl">
<view class="~font_24 ~color-999">{{ item.u_year }}</view>
<view class="~font_24 ~color-999" v-if="item.u_stature"><text decode>&nbsp;</text>· {{ item.u_stature }}cm
<view class="~font_24 ~color-999" v-if="item.profile && item.profile.stature"><text decode>&nbsp;</text>· {{ item.profile.stature }}cm
</view>
<view class="~font_24 ~color-999" v-if="item.u_degree"><text decode>&nbsp;</text>· {{ item.u_degree }}</view>
<view class="~font_24 ~color-999" v-if="item.profile && item.profile.degree"><text decode>&nbsp;</text>· {{ item.profile.degree }}</view>
</view>
<view class="~color-theme" v-if="item.is_audited == 0">审核中</view>
<view class="~color-theme" v-if="item.is_audited == -1">审核失败</view>
@ -237,7 +236,7 @@ scroll-view {
<block v-if="item.vote_id > 0">
<view class="ui-voteItem ~f-fl" @tap="jumpPath(`/pages/dynamic/voteDetail?id=${item.vote_id}`)">
<image class="ui-vote-icon" src="https://image.fulllinkai.com/202206/29/7fd07d9687390a58d25ac92b55d9a9dd.png" mode="widthFix"></image>
<view class="~font_28">{{item.v_title}}</view>
<view class="~font_28">{{item.vote.title}}</view>
</view>
</block>
<block v-else>
@ -254,13 +253,13 @@ scroll-view {
<video id="video" :src="item.play_url" v-if="videoIndex == index" play-btn-position="center" show-fullscreen-btn="{{false}}" controls direction="0" object-fit="{{videoIndex == index ? 'contain' : 'cover'}}" referrer-policy="origin" bindfullscreenchange="leaveVideo" class="videoCenter ui-video-r-box" :style="{width: item.video_width > item.video_height ? '480rpx' : '320rpx', height: item.video_width > item.video_height ? '270rpx' : '480rpx'}" :key="item.id">
</video>
</view>
<view class="~font_24 ~f-fb ~ui-mt-10" v-if="item.mt_name != null || item.mt_name == ''">
<view class="~font_24 ~f-fb ~ui-mt-10" v-if="item.mt_name">
<view class="ui-tags ~f-fcc ~color-theme ~font_24 ~ui-pr-16">
<image lazy-load="true" class="ui-img" src="https://images.ufutx.com/202102/04/dc3043df7d265ae0b2401e589405a239.png" alt=""/>
{{ item.mt_name }}
</view>
</view>
<view v-if="item.address != null || item.address == ''" class="~color666 ~font_24 ~f-fl ~ui-mt-16">
<view v-if="item.address" class="~color666 ~font_24 ~f-fl ~ui-mt-16">
<image lazy-load="true" class="ui-address-icon" src="https://images.ufutx.com/202102/04/817a393539ee854226eef79defef2fc4.png" alt=""/>
<view>{{ item.address }}</view>
</view>
@ -269,12 +268,12 @@ scroll-view {
<view class="~color666 ~font_28 ui-like-box">
<view class="ui-like-icon-box">
<image lazy-load="true" class="ui-like-icon" src="https://images.ufutx.com/202102/04/ab432de170b4e8ca1a1a59e34af9aa25.png"></image>
{{ item.comment_count }}
{{ item.commenter_count }}
</view>
<view class="ui-like-icon-box ~ui-mr-40" @tap.stop="upvote(item ,index)">
<image v-if="item.is_like == false" lazy-load="true" class="ui-like-icon-v2" src="https://images.ufutx.com/202106/10/a97c7c76f3aaf7065e7f7a5fe2abc081.png"></image>
<image v-else class="ui-img2_gif" src="{{item.is_like ? gifurl : 'https://images.ufutx.com/202106/07/b227f3ecf9cbd080fb814450b667b5ce.gif'}}"></image>
{{ item.like_count }}
{{ item.liker_count }}
</view>
<view class="~ui-pl-6 ~ui-pr-6" style="margin-right: -6rpx">
<image class="ui-cuIcon-moreandroid" src="https://image.fulllinkai.com/202409/05/fdb58839d1909d75f636941d6aea6cb5.png" mode="widthFix" @tap.stop="changeOperation(item, index)"></image>
@ -323,33 +322,40 @@ scroll-view {
// 文字超出展示全文
textAll(e) {
let vm = this
setTimeout(() => {
const query = wx.createSelectorQuery().in(vm.$wx)
query.selectAll('.substance').boundingClientRect()
query.exec(function (res) {
let num = res[0]
for (let i = 0; i < num.length; i++) {
if (num[i].height > 75) {
e[i].readmore = {
status: false,
auto: true,
tip: '全文'
vm.$nextTick(() => {
setTimeout(() => {
const query = wx.createSelectorQuery().in(vm.$wx)
query.selectAll('.substance').boundingClientRect()
query.exec(function (res) {
let num = res[0]
for (let i = 0; i < num.length; i++) {
if (num[i].height > 75) {
e[i].readmore = {
status: false,
auto: true,
tip: '全文'
}
}
}
}
vm.list = JSON.parse(JSON.stringify(e))
})
}, 300)
vm.list = JSON.parse(JSON.stringify(e))
})
}, 300)
})
},
// 点赞
upvote(e, index) {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.$emit('signInVerify')
return
}
let nowTime = new Date()
vm.$post({url: `${service.host}/like/moments/${e.id}`}).then(({code}) => {
vm.$post({url: `${service.host}/moment/${e.id}/like`}).then(({code}) => {
wx.hideLoading()
if (code == 0) {
vm.list[index].is_like = !vm.list[index].is_like
vm.list[index].like_count = vm.list[index].like_count + (vm.list[index].is_like ? -1 : 1)
vm.list[index].liker_count = vm.list[index].liker_count + (vm.list[index].is_like ? 1 : -1)
if (vm.list[index].is_like) {
vm.gifurl = `${vm.gifurl}?${nowTime}`
}
@ -361,6 +367,11 @@ scroll-view {
// 选择动态操作
changeOperation(e, index) {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.$emit('signInVerify')
return
}
vm.$emit('changeSelect', e, index)
},
// 展开全文或收起
@ -399,13 +410,17 @@ scroll-view {
}
},
jumpPath(url) {
let vm = this
console.log(url, vm.from, '777')
if (vm.from != 'dynamic') {
return
}
wx.navigateTo({url: url})
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.$emit('signInVerify')
return
}
if (vm.from != 'dynamic') {
return
}
wx.navigateTo({url: url})
}
},
created() {}
})

View File

@ -84,7 +84,7 @@
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/moments/${vm.selectData.id}`}).then(({code, data}) => {
vm.$delete({url: `${service.host}/moment/${vm.selectData.id}/delete`}).then(({code, data}) => {
if (code == 0) {
vm.$showToast('动态已删除')
vm.$emit('changeOperation', 'delete')
@ -109,7 +109,7 @@
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/rbac/hide/moment/${vm.selectData.id}`}).then(({code, data}) => {
vm.$post({url: `${service.host}/moment/${vm.selectData.id}/hidden`}).then(({code, data}) => {
if (code == 0) {
vm.$showToast('动态已隐藏')
vm.$emit('changeOperation', 'conceal')
@ -128,13 +128,16 @@
// 设置为热门或取消热门动态
hotDynamic(e) {
let vm = this
let data = {
is_hot: e
}
wx.showModal({
title: '温馨提示',
content: `是否${e == 1 ? '设置该动态为推荐动态' : '取消该推荐动态'}`,
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/rbac/set/hot/moments?moment_id=${vm.selectData.id}&is_hot=${e}`}).then(({code, data}) => {
vm.$post({url: `${service.host}/moment/${vm.selectData.id}/hot`, data}).then(({code, data}) => {
if (code == 0) {
vm.$showToast(`${e == 1 ? '设置成功' : '取消成功'}`)
if (e == 0) {
@ -155,11 +158,8 @@
// 设置为置顶或取消置顶动态
topDynamic(e) {
let vm = this
let url = ``
if (e == 0) {
url = `${service.host}/rbac/remove/top/${vm.selectData.id}/moment`
} else {
url = `${service.host}/rbac/top/${vm.selectData.id}/moment`
let data = {
is_top: e
}
wx.showModal({
title: '温馨提示',
@ -167,7 +167,7 @@
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: url}).then(({code, data}) => {
vm.$post({url: `${service.host}/moment/${vm.selectData.id}/top`, data}).then(({code, data}) => {
if (code == 0) {
vm.$showToast(`${e == 1 ? '设置成功' : '取消成功'}`)
if (e == 0) {
@ -196,7 +196,7 @@
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/unlike/moments/${vm.selectData.id}`}).then(({code, data}) => {
vm.$post({url: `${service.host}/moment/${vm.selectData.id}/unlike`}).then(({code, data}) => {
if (code == 0) {
vm.$emit('changeOperation', 'lose')
vm.$showToast('标记成功')

View File

@ -0,0 +1,120 @@
<style lang="less">
.loginDialog {
.underline {
text-decoration: underline;
}
.ui-cu-dialog{
width: 600rpx !important;
padding: 72rpx 0 68rpx !important;
border-radius: 32rpx !important;
background: #FFFFFF !important;
overflow: hidden !important;
}
.m_dialog {
border-radius: 32rpx;
.m_dialog_img {
margin-bottom: 64rpx;
margin-right: 16rpx;
.u_dialog_img {
width: 232rpx;
height: 110rpx;
}
}
.u_tt {
margin-bottom: 16rpx;
}
.m_bu {
width: 336rpx;
height: 80rpx;
background: #FF5380;
border-radius: 100rpx;
margin: 80rpx 0 32rpx;
.u_bu_tt {
line-height: 32rpx;
padding: 0 4rpx;
}
.u_bu_tips {
width: 64rpx;
height: 32rpx;
padding-top: 4rpx;
color: #FF5380;
line-height: 20rpx;
background-color: white;
border-radius: 100rpx 100rpx 100rpx 0;
margin-top: -6rpx;
margin-left: 4rpx;
}
}
}
}
</style>
<template>
<view class="loginDialog">
<view class="~cu-modal {{loginShow ? '~show' : ''}}" style="z-index: 9999;">
<view class="~cu-dialog ui-cu-dialog">
<view class="m_dialog ~f-fcc ~f-fdc">
<view class="m_dialog_img">
<image class="u_dialog_img" src="https://images.ufutx.com/202105/12/eeadaef5123837de5109b25e93fdeae6.png" mode="widthFix"></image>
</view>
<view class="u_tt ~font_40 ~color333 ~bold">登录福恋,获得更精准的推荐</view>
<view class="~font_24 ~color999">登录即表明您同意福恋的
<text class="underline" @tap.stop="gotoApp('https://love.ufutx.com/h5/#/serviceAgreementV2')">用户协议</text>
<text class="underline" @tap.stop="gotoApp('https://love.ufutx.com/h5/#/PrivacyAgreementV2')">隐私政策</text>
</view>
<view class="m_bu ~f-fcc text-center" @tap="jumpPath">
<view class="u_bu_tt ~font_32 ~colorF ~bold">微信登录</view>
<view class="u_bu_tips ~font_20 ~f-fcc ~bold">私密</view>
</view>
<view class="~font_28 ~color999" @tap="hidden" v-if="!must">暂不登录</view>
</view>
</view>
</view>
</view>
</template>
<script>
import wepy from '@wepy/core'
import base from '../mixins/base'
import https from '../mixins/https'
wepy.component({
props: {
loginShow: {
type: Boolean,
default: false
},
must: {
type: Boolean,
default: false
}
},
data: {
},
mixins: [https, base],
methods: {
hidden() {
let vm = this
vm.$emit('hiddenLogin')
},
jumpPath() {
let vm = this
vm.hidden()
wx.navigateTo({url: `/pages/home/registration`})
},
gotoApp(url) {
wx.navigateTo({url: '/pages/books/bookDetail?url=' + encodeURIComponent(url)})
}
},
created() {
}
})
</script>

View File

@ -155,9 +155,9 @@
</view>
</view>
</view>
<view class="cu-modal {{intentionShow?'show':''}}">
<view class="~cu-modal {{intentionShow?'~show':''}}">
<view class="intention_confirm_box animation-slide-top">
<view class="intentionContent font_32 color-333">是否确定申请“{{title}}”?</view>
<view class="intentionContent ~font_32 ~color333">是否确定申请“{{title}}”?</view>
<view class="intentionOperation">
<image @tap.stop="intentionModal" class="operationButton" src="https://images.ufutx.com/202103/17/4281e92bc8b727bae08099a3015225b1.png" mode="widthFix"></image>
<image @tap.stop="recommend" class="operationButton" src="https://images.ufutx.com/202103/17/91fea69fdff1cfeaac369ddd5dd591f0.png" mode="widthFix"></image>
@ -165,10 +165,10 @@
<view style="height: 38rpx"></view>
</view>
</view>
<view class="cu-modal {{inreviewShow?'show':''}}">
<view class="~cu-modal {{inreviewShow?'~show':''}}">
<view class="intention_confirm_box animation-slide-top">
<view class="intentionContent_1 font_34 color-333 bold">你的资料正在审核中</view>
<view class="font_32 color-333" style="padding-bottom: 60rpx">如有紧急,请拨打<span style="color: #f33b6c;">18922809346</span></view>
<view class="intentionContent_1 font_34 ~color333 ~bold">你的资料正在审核中</view>
<view class="~font_32 ~color333" style="padding-bottom: 60rpx">如有紧急,请拨打<span style="color: #f33b6c;">18922809346</span></view>
<view class="intentionOperation">
<image @tap.stop="inreviewModal" class="operationButton" src="https://images.ufutx.com/202103/17/4281e92bc8b727bae08099a3015225b1.png" mode="widthFix"></image>
<image @tap.stop="clickPhone" class="operationButton" src="https://images.ufutx.com/202104/15/91fea69fdff1cfeaac369ddd5dd591f0.png" mode="widthFix"></image>

View File

@ -64,15 +64,7 @@ wepy.component({
methods: {
GetAddress() {
let vm = this
let url = ``
console.log(vm.selfTextareaShow, vm.multiIndex, '88888888888888888')
if (vm.selfTextareaShow) {
url = `${service.host}/addresses`
} else {
url = `${service.host}/address/country/list`
}
vm.$get({url: url}).then(({code, data}) => {
vm.$get({url: `${service.host}/address/country/list`}).then(({code, data}) => {
vm.provinces = data
console.log(vm.provinces, 'vm.provinces')
if (vm.AddressValue.length > 0) {
@ -101,7 +93,7 @@ wepy.component({
for (let item of vm.provinces[vm.provinceId].Children) {
vm.objectArray[1].push(item.Name)
}
for (let item of vm.provinces[vm.cityId].Children[vm.selfTextareaShow ? 0 : 18].Children) {
for (let item of vm.provinces[vm.cityId].Children[18].Children) {
vm.objectArray[2].push(item.Name)
}
}

View File

@ -0,0 +1,248 @@
<style lang="less">
page {}
.upload_file {
overflow: hidden;
position: relative;
._item {
padding: 32rpx;
border-bottom: 1rpx solid #f5f5f5;
}
._cancel {
border-top: 16rpx solid #f8f8f8;
margin-bottom: 24rpx;
}
}
</style>
<template>
<view :class="{'~show': chooseShow}" class="~cu-modal ~bottom-modal">
<view class="~cu-dialog" style="border-radius: 32rpx 32rpx 0 0;">
<view class="~bg_f upload_file">
<view class="_title _item ~font_32" @tap="onCamera">拍摄</view>
<view class="_title _item ~font_32" @tap="chooseImageV2">从手机相册选择</view>
<view class="_title _item ~font_32 ~color333 _cancel" @tap="cancelFn">取消</view>
</view>
</view>
</view>
</template>
<script>
import wepy from '@wepy/core'
import {service} from '../config'
import base from '../mixins/base'
import https from '../mixins/https'
wepy.component({
props: {
chooseShow: {
type: Boolean,
default: false
}
},
data: {
uploadData: null,
uploader: {},
videos: [],
uploadVideo: []
},
mixins: [https, base],
methods: {
chooseImageV2() { // 上传视频
let vm = this
wx.chooseMedia({
count: vm.num, // 上传图片的个数
mediaType: ['video'], // 限制上传的类型为image
sourceType: ['album'], // 可以指定来源是相册还是相机
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
success: (res) => { // 获取临时存放的视频资源
console.log(res, '7777777777777')
vm.verify(res)
},
fail: () => {
vm.$emit('changeVal', '')
wx.hideLoading()
}
})
},
onCamera() {
let vm = this
wx.chooseMedia({
count: 1,
mediaType: ['video'], // 限制上传的类型为image
sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera'], // 可以指定来源是相册还是相机
maxDuration: 30, // 拍摄限制时间
compressed: true,
camera: 'back', // 采用后置摄像头
success: (res) => { // 获取临时存放的视频资源
vm.verify(res)
},
fail: () => {
vm.$emit('changeVal', '')
wx.hideLoading()
}
})
},
uploadFile(filePath) {
let vm = this
console.log(filePath, 'filePath')
console.log(vm.uploadData, 'vm.uploadData')
if (vm.uploadData) {
vm.$showLoading(`上传中...`)
let fileName = new Date().getTime() + Math.floor(Math.random() * 150) + '.' + filePath.split('.').pop().toLowerCase()
let filePathUrl = vm.uploadData.host + '/' + vm.uploadData.dir + fileName
wx.uploadFile({
url: vm.uploadData.host,
filePath: filePath,
name: 'file', // 必须填file。
formData: {
key: vm.uploadData.dir + fileName,
policy: vm.uploadData.policy,
OSSAccessKeyId: vm.uploadData.access_id,
signature: vm.uploadData.signature
},
header: {
'Authorization': 'Bearer ' + wx.getStorageSync('token'),
'X-Requested-With': 'XMLHttpRequest'
},
success: (res) => {
if (res.statusCode === 204) {
console.log(filePathUrl, '上传成功')
let dataV2 = {
filePath: filePathUrl,
type: type
}
vm.uploadVideo = [dataV2]
vm.$emit('changeVal', vm.uploadVideo)
vm.uploadVideo = []
vm.cancelFn()
wx.hideLoading()
}
},
fail: (err) => {
wx.showModal({ // 使用模态框提示用户进行操作
title: `温馨提示:`,
content: `很抱歉` + err,
showCancel: false,
confirmText: `确定`,
success: function (res) {
if (res.confirm) {
vm.$gotoBack(1)
vm.$emit('changeVal', '')
}
}
})
}
})
} else {
let vm = this
vm.$showToast(`网络环境异常,请稍后重试`)
vm.getOssConfig()
}
},
// 检验大小并压缩、裁剪
verify(res) {
let vm = this
let duration = res.tempFiles[0].duration
if (duration > 30) {
let beyongSize = parseFloat(duration - 30).toFixed(0)
// 获取视频超出限制大小的数量
wx.showModal({
title: '提示',
content: '上传的视频时长超限,超出' + beyongSize + '秒,是否剪辑视频!',
success(res) {
if (res.confirm) {
vm.compressVideo(res.tempFiles[0]).then((data) => { // 先压缩视频,再剪辑视频
vm.$showLoading('准备编辑中...')
vm.editorVideo(data.tempFilePath).then((resV2) => {
console.log(resV2)
// 视频在30秒内上传视频
vm.uploadFile(resV2, 'video')
}).catch((err) => {
let time = parseFloat(err.duration / 1000).toFixed(0)
// 视频大于30秒重新上传视频
if (time > 30) {
return wx.showModal({
title: '提示',
content: `视频超过${parseFloat(time - 30).toFixed(0)}秒,请重新上传哦!`,
showCancel: false,
success() {}
})
}
})
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
} else {
vm.compressVideo(res.tempFiles[0]).then((data) => { // 先压缩视频,然后再上传
console.log(data, '压缩后数据')
vm.uploadFile(data.tempFilePath)
})
}
},
// 视频压缩
compressVideo(e) {
return new Promise((resolve) => {
wx.compressVideo({
quality: 'high',
src: e.tempFilePath,
success: (res) => {
resolve(res)
}
})
})
},
// 剪辑视频
editorVideo(tempFilePath) {
console.log(tempFilePath)
return new Promise((resolve, reject) => {
wx.openVideoEditor({
filePath: tempFilePath,
success: (res) => {
if (parseFloat(res.duration / 1000).toFixed(0) > 30) { // 视频大于30秒
reject(res)
} else {
resolve(res) // 视频剪辑后少于30秒
}
console.log('剪辑后的视频时长:' + parseFloat(res.duration / 1000).toFixed(0))
console.log('剪辑后的视频大小:' + res.size)
console.log('剪辑后的视频链接:' + res.tempFilePath)
console.log('剪辑后的视频图片链接:' + res.tempThumbPath)
},
fail: () => {}
})
})
},
cancelFn() { // 取消方法
wx.hideLoading()
this.$emit('closeUploadVideo', '')
},
getOssConfig() {
let vm = this
wx.request({
url: `${service.host}/ali/upload/signature`,
header: {
'Authorization': 'Bearer ' + wx.getStorageSync('token'),
'X-Requested-With': 'XMLHttpRequest'
},
method: 'get',
data: {},
success: ({code, data}) => {
vm.uploadData = data.data
vm.$app.$options.globalData.uploadData = data.data
}
})
}
},
created() {
let vm = this
vm.getOssConfig()
}
})
</script>

View File

@ -8,6 +8,10 @@ export default {
},
methods: {
// 跳转事件校验是否已经完善注册资料
$signInVerify() {
return wx.getStorageSync('userInfo')
},
$callPhone(mobile) {
wx.makePhoneCall({
phoneNumber: mobile,

View File

@ -128,9 +128,9 @@ export default {
if (res.confirm) {
vm.errorOne = 1
wx.hideLoading()
wx.navigateBack({
delta: 1
})
// wx.navigateBack({
// delta: 1
// })
}
}
})

View File

@ -9,9 +9,9 @@ page {
<!--动态信息-->
<dynamicList :dynamicList="dynamicList" @changeSelect="changeSelect" :from="'dynamicDetail'"></dynamicList>
<!--动态操作功能selectData选择的动态数据、selectIndex选中的动态下标、admin是否管理员、from来自哪个父组件-->
<dynamicOperation :selectData="selectData" :chooseShow.sync="chooseShow" :selectIndex="selectIndex" :admin="admin" :from="'home'" @hideModal="hideModal" @operation="changeOperation"></dynamicOperation>
<dynamicOperation :selectData="selectData" :chooseShow.sync="chooseShow" :selectIndex="selectIndex" :admin="admin" :from="'home'" @hideModal="hideModal" @changeOperation="changeOperation"></dynamicOperation>
<!--评论数据-->
<dynamicDiscuss :list="list" :detail="detail"></dynamicDiscuss>
<dynamicDiscuss :list="list" :detail="detail" @getList="getList"></dynamicDiscuss>
</template>
<script>
@ -37,16 +37,12 @@ wepy.page({
methods: {
getDetail() {
let vm = this
vm.$get({url: `${service.host}/moments/${vm.id}`}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/${vm.id}`}).then(({code, data}) => {
if (code === 0) {
let result = data.moment
if (result.user) {
result.u_photo = result.user.avatar
result.u_nickname = result.user.nickname
result.u_year = result.user.year
result.u_stature = result.user.stature
result.u_degree = result.user.degree
result.u_type = result.user.type
let result = data
let sty = typeof (result.photos)
if (sty == 'string') {
result.photos = JSON.parse(result.photos)
}
if (result.vote) {
result.v_title = result.vote.title
@ -54,10 +50,7 @@ wepy.page({
if (result.topic) {
result.mt_name = result.topic.name
}
result.comment_count = result.momentCommentCount
result.like_count = result.momentLikerCount
result.is_like = result.isLkerMoment
result.created_at = commentTimeHandle(result.created_at)
result.create_time = commentTimeHandle(result.create_time)
vm.detail = result
vm.dynamicList = [result]
}
@ -71,10 +64,10 @@ wepy.page({
getList() {
let vm = this
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/moment/comments?id=${vm.id}&type=moment&nopage=1`}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/${vm.id}/comment/list?type=moment&nopage=1`}).then(({code, data}) => {
if (code === 0) {
data.forEach((item) => {
item.created_at = commentTimeHandle(item.created_at)
item.create_time = commentTimeHandle(item.create_time)
item.comment = item.comment.split('?')[0]
})
vm.list = data

View File

@ -156,7 +156,7 @@ wepy.page({
methods: {
getDetail() {
let vm = this
vm.$get({url: `${service.host}/moment/topics/${vm.id}`}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/topic/${vm.id}`}).then(({code, data}) => {
if (code === 0) {
vm.detail = data
vm.$nextTick(() => {
@ -186,11 +186,11 @@ wepy.page({
page: vm.page
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/moments/v2`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/list`, data}).then(({code, data}) => {
if (code === 0) {
if (data.data && data.data.length > 0) {
data.data.forEach((item, index) => {
item.created_at = commentTimeHandle(item.created_at)
item.create_time = commentTimeHandle(item.create_time)
let sty = typeof (item.photos)
if (sty == 'string') {
item.photos = JSON.parse(item.photos)

View File

@ -36,11 +36,6 @@ page {
align-items: center;
}
.tags-v2{
background: #fff1f5;
color: #f33b6c;
}
.tags, .tags-v2 {
width: auto;
height: 50rpx;
@ -68,6 +63,11 @@ page {
}
}
.tags-v2{
background: #fff1f5;
color: #f33b6c;
}
.hint {
width: 340rpx;
height: 64rpx;
@ -105,6 +105,26 @@ page {
background: #FFFFFF;
}
.grid.col-04.grid-square > view:nth-child(3n) {
margin-right: 0;
}
.ui-dynamic-pic-item{
width:216rpx;
height:216rpx;
.ui-dynamic-pic {
border-radius: 14rpx;
}
.ui-delete-icon{
width:36rpx!important;
height:36rpx!important;
border-radius: 60rpx!important;
margin: 6rpx 6rpx 0 0!important;
}
}
.relative_bot{
.videoCenter{
border-radius: 24rpx;
@ -124,8 +144,8 @@ page {
}
.d_solids{
width: 224rpx;
height: 224rpx;
width: 216rpx;
height: 216rpx;
background-position: center;
background-size: contain;
}
@ -233,16 +253,16 @@ page {
<view class="num ui-pr-30">{{value.length}}/500</view>
</view>
<view class="hottopic">
<view class="text-sm flex">
<view class="text-sm flex" @tap="jumpPath">
<view class="f-fcc" v-if="title == ''">
<view class="tags f-fcc" catchtap="gotoHotTopic">
<view class="tags f-fcc">
<image class="img" src="https://images.ufutx.com/202103/03/23b49569624fb2516fa7267cb255b447.png" alt=""/>
选择话题
</view>
<view class="hint">添加话题更容易获得回复哦</view>
</view>
<view v-else>
<view class="tags-v2 f-fcc" catchtap="gotoHotTopic">
<view class="tags-v2 f-fcc">
<image class="img" src="https://images.ufutx.com/202102/04/dc3043df7d265ae0b2401e589405a239.png" alt=""/>
{{ title }}
</view>
@ -254,9 +274,9 @@ page {
<view class="cu-form-group">
<view class="grid col-04 grid-square flex-sub">
<block v-if="uploadType == 'image'">
<view class="bg-img" style="width:216rpx;height:216rpx" v-for="(item,index) in imgList" :key="index" @tap="$previewImages(item, imgList)">
<image :src="item" mode="aspectFill"></image>
<view class="cu-tag bg-red" style="width:36rpx;height:36rpx;border-radius:60rpx;margin:6rpx 6rpx 0 0" @tap="delImg" data-index="{{index}}">
<view class="bg-img ui-dynamic-pic-item" v-for="(item,index) in imgList" :key="index" @tap="$previewImages(item, imgList)">
<image class="ui-dynamic-pic" :src="item" mode="aspectFill"></image>
<view class="cu-tag bg-red ui-delete-icon" @tap="delImg" data-index="{{index}}">
<text class="cuIcon-close"></text>
</view>
</view>
@ -279,7 +299,7 @@ page {
{{ address }}
</view>
<view class="issue-main">
<view class="issue" bindtap="issue" data-id="{{id}}">发布</view>
<view class="issue" @tap="saveIssue">发布</view>
</view>
</view>
<view v-if="showCon" class="modal-mask" @tap="showCon = false">
@ -292,6 +312,8 @@ page {
</view>
</view>
</view>
<uploadPic :num="9 - imgList.length" :chooseShow.sync="choosePicsShow" @changeVal="changeVal" @closeUploadPic="closeUpload"></uploadPic>
<uploadVideo :chooseShow.sync="chooseVideoShow" @changeVal="changeVideoVal" @closeUploadVideo="closeUpload"></uploadVideo>
</template>
<script>
@ -306,18 +328,64 @@ wepy.page({
data: {
id: '',
value: '',
placeholder: '用视频/图片分享记录,能获得更多好友点赞',
title: '',
showCon: false,
hot: '',
value: '',
throttle: true,
placeholder: '用视频/图片分享记录,能获得更多好友点赞',
play_url: '',
chooseVideoShow: false,
choosePicsShow: false,
imgList: [],
showCon: false,
uploadType: '',
address: '我在哪里'
},
methods: {
saveIssue() {
let vm = this
let data = {
topic_id: vm.id,
content: vm.value,
photos: vm.imgList,
address: vm.address,
is_hot: vm.hot
}
if (vm.throttle) {
vm.throttle = false
vm.$post({url: `${service.host}/moment/add`, data}).then(({code}) => {
wx.hideLoading()
if (code == 0) {
}
vm.throttle = true
}).catch(() => {
vm.throttle = true
wx.hideLoading()
})
}
},
delImg(index) {
let vm = this
vm.imgList.splice(index, 1)
if (vm.imgList && vm.imgList.length == 0) {
vm.uploadType = ''
}
},
closeFn() {
let vm = this
wx.showModal({
title: '提示',
content: '删除后需要重新上传哦!是否继续?',
confirmText: '确认删除',
success(res) {
if (res.confirm) {
vm.uploadType = ''
vm.play_url = ''
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
location() {
let vm = this
@ -376,13 +444,43 @@ wepy.page({
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
},
ChooseImage() {
let vm = this
vm.choosePicsShow = true
},
chooseVideo() {
let vm = this
vm.chooseVideoShow = true
},
changeVal(e) {
let vm = this
e.forEach((item) => {
vm.uploadType = 'image'
vm.imgList.push(item.filePath)
})
vm.choosePicsShow = false
console.log(vm.imgList, '777')
},
changeVideoVal(e) {
console.log(e, '711177')
let vm = this
if (e && e.length > 0) {
vm.play_url = e[0].filePath
vm.uploadType = 'video'
}
},
closeUpload() {
let vm = this
vm.choosePicsShow = false
vm.chooseVideoShow = false
},
jumpPath() {
wx.navigateTo({url: `/pages/dynamic/searchTopic`})
}
},
onShow() {
},
onLoad() {
let vm = this
}
onShow() {},
onLoad() {}
})
</script>
<config>
@ -390,5 +488,9 @@ wepy.page({
navigationBarTitleText: '编辑动态',
backgroundColorTop: '#ffffff',
backgroundColorBottom: '#ffffff',
usingComponents: {
uploadPic: '~@/components/uploadPic',
uploadVideo: '~@/components/uploadVideo',
}
}
</config>

View File

@ -84,7 +84,7 @@ page {
<view class="main">
<block v-for="(item,index) in list" :key="index">
<view class="cu-list menu-avatar">
<view class="cu-item" @tap="gotoHotTopic(item.id)">
<view class="cu-item" @tap="jumpPath(item.id)">
<view class="cu-avatar round lgs" style="{{'background-image:url(' + item.back_image + ');'}}"></view>
<view class="content flex-sub">
<view class="title"># {{item.name}}</view>
@ -123,7 +123,7 @@ wepy.page({
page: vm.page
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/moment/topics`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/topic/list`, data}).then(({code, data}) => {
if (code === 0) {
if (vm.list.length === 0 || vm.page === 1) {
vm.list = data.data
@ -161,6 +161,11 @@ wepy.page({
}
})
}
},
jumpPath (id) {
wx.navigateTo({
url: `/pages/dynamic/hotTopic?id=${id}`
})
}
},
// 上拉获取更多数据

View File

@ -76,7 +76,7 @@ page {
<view class="hot">
<view class="topic" v-if="!show">热门话题</view>
<view class="mains">
<view class="list f-fcc" v-for="(item,index) in list" :key="index">
<view class="list f-fcc" v-for="(item,index) in list" :key="index" @tap="handleHotTopic(item)">
# {{item.name}}
<image v-if="item.is_hot == 1" class="img" src="https://images.ufutx.com/202103/02/0dffc4de154e82b1a75ae4c0a2a62ecf.png" />
</view>
@ -107,7 +107,7 @@ wepy.page({
getList() {
let vm = this
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/moment/topics`}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/topic/list`}).then(({code, data}) => {
if (code === 0) {
vm.list = data.data
vm.arr = data.data
@ -119,6 +119,16 @@ wepy.page({
console.log(err)
})
},
handleHotTopic(e) {
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]
prevPage.$wepy.id = e.id
prevPage.$wepy.title = e.name
prevPage.$wepy.is_hot = e.is_hot || ''
wx.navigateBack({
delta: 1
})
},
inputTyping(e) {
let vm = this
let key = e.$wx.detail.value

View File

@ -1,15 +1,14 @@
<style lang="less" scoped>
@import url(../../styles/theme.less);
page {
background-color: #ffffff;
background-color: #f5f5f5;
}
.ui-abnormal{
width: 100vw;
min-height: 100vh;
width: 100%;
padding-bottom: 300rpx;
background: #f5f5f5;
.ui-user-pic-box{
width: 92%;
padding: 0rpx 30rpx;
height: 690rpx;
background: #f3f4f9;
position: relative;
@ -59,7 +58,7 @@ page {
.ui-bullet-wrap {
width: 100%;
height: 450rpx;
height: 200rpx;
position: relative;
position: absolute;
top: 0;
@ -82,23 +81,15 @@ page {
}
.ui-bullet-item[data-line='1'] {
top: 45rpx;
top: 26rpx;
}
.ui-bullet-item[data-line='2'] {
top: 120rpx;
top: 86rpx;
}
.ui-bullet-item[data-line='3'] {
top: 195rpx;
}
.ui-bullet-item[data-line='4'] {
top: 270rpx;
}
.ui-bullet-item[data-line='5'] {
top: 315rpx;
top: 146rpx;
}
@keyframes rightToleft {
@ -130,15 +121,6 @@ page {
display: flex;
justify-content: left;
align-items: center;
.referencesIcon {
width: 124rpx;
height: 36rpx;
display: block;
margin-left: 16rpx;
margin-top: 2rpx;
}
.name {
max-width: 180rpx;
}
@ -204,7 +186,6 @@ page {
.VIPIcon{
width: 76rpx;
height: auto;
margin-top: 12rpx;
margin-left: 8rpx;
}
}
@ -345,80 +326,6 @@ page {
bottom: 13vh;
right: 32rpx;
}
.recommended_user_box{
width: 94%;
padding: 22rpx 36rpx;
margin: auto;
background: #F8F8F8;
border-radius: 24rpx;
margin-top: 22rpx;
overflow: hidden;
.recommended_title_box{
margin-bottom: 24rpx;
.recommended_icon{
width: 28rpx;
height: 32rpx;
vertical-align: middle;
margin-top: -4rpx;
}
.recommende_title{
margin-left: 10rpx;
letter-spacing: 1rpx;
}
}
.recommended_user_data_box{
display: flex;
justify-content: space-between;
/*justify-content: space-around; */
flex-wrap: wrap;
.recommended_user{
position: relative;
width: 308rpx;
height: 308rpx;
border-radius: 16rpx;
margin-bottom: 24rpx;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
.mask{
position: absolute;
top: 0;
left: 0;
width: 308rpx;
height: 308rpx;
border-radius: 16rpx;
background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.7) 100%);
}
.recommended_user_data{
color: #fff;
position: absolute;
bottom: 20rpx;
left: 20rpx;
.recommended_user_name{
letter-spacing: 1rpx;
}
.age_address{
overflow: hidden;
.address_icon{
width: 20rpx;
height: 24rpx;
vertical-align: middle;
margin: -6rpx 4rpx 0 16rpx;
}
.address_text{
margin-left: 2rpx;
}
}
}
}
}
.to_view_more{
text-align: center;
margin: 6rpx auto 0 auto;
letter-spacing: 1rpx;
color: #f33b6c;
}
}
.ui-bottom-operation {
position: relative;
position: fixed;
@ -435,19 +342,19 @@ page {
.ui-operation{
position: relative;
z-index: 9;
padding: 0 90rpx 70rpx 80rpx;
padding: 0 50rpx 70rpx 26rpx;
}
.ui-share-icon, .m_share_img{
width: 140rpx;
height: 140rpx;
}
.u_boBu {
width: 400rpx;
width: 508rpx;
height: 100rpx;
background: #ffffff;
box-shadow: 0 4rpx 24rpx 0 rgba(0, 0, 0, 0.1);
border-radius: 50rpx;
padding: 0 24rpx 0 76rpx;
padding: 0 34rpx 0 50rpx;
.ui-operation-btn{
width: 184rpx;
height: 68rpx;
@ -458,14 +365,32 @@ page {
}
}
}
.ui-report-box{
border-radius: 30rpx 30rpx 0 0;
.ui-report-item, .ui-report-item-v2{
height: 102rpx;
border-top: 2rpx solid #f5f5f5;
.ui-praise-box{
border-radius: 30rpx 30rpx 0 0!important;
background: #ffffff;
.ui-praise-item{
padding: 6rpx 20rpx;
background: #f8f8f8;
border-radius: 40rpx;
white-space: nowrap;
}
.ui-report-item-v2{
border-top: 8rpx solid #f5f5f5;
.ui-active-praise{
color: #F33B6C;
background: #ffdfea;
}
.ui-praise-btn{
width: 420rpx;
height: 72rpx;
border-radius: 40rpx;
background: linear-gradient(to right, #F33B6C 0%, #E2597C 100%);
margin: 120rpx auto 20rpx auto;
}
.cancelIcon{
width: 28rpx;
height: 28rpx;
position: absolute;
right: 30rpx;
top: 30rpx;
}
}
.g_apply {
@ -564,7 +489,7 @@ page {
</style>
<template>
<view class="ui-information">
<block v-if="userInfo.is_banned == 1">
<block v-if="userInfo.other_info.is_banned == 1">
<view class="ui-abnormal">
<view class="ui-user-pic-box">
<image class="ui-user-pic" src="https://image.fulllinkai.com/202407/29/396698823907d0ff19b889cea3ac7e9f.jpeg" mode="aspectFill"></image>
@ -575,7 +500,7 @@ page {
</view>
</block>
<block v-else>
<block v-if="userInfo.hidden_profile == 'NONE'">
<block v-if="userInfo.other_info.hidden_profile == 'NONE'">
<view class="ui-abnormal">
<view class="ui-pb-30" @tap="wantExposure" v-if="channel == 'recommend'">
<view class="exposure f-fbc">
@ -601,34 +526,33 @@ page {
<swiper class="ui-swiper" circular="true" autoplay="true" indicator-dots="true" indicator-color="#c5c5c5" indicator-active-color="#ffffff">
<block v-for="(item,index) in userInfo.profile_photos" :key="index" v-if="index < 10">
<swiper-item class="ui-swiper ui-relative">
<image :src="item.photo" class="ui-swiper" mode="aspectFill" @tap="previewImage(item.photo,userInfo.profile_photos)"></image>
<image :src="item" class="ui-swiper" mode="aspectFill" @tap.stop="$previewImages(item, userInfo.profile_photos)"></image>
</swiper-item>
</block>
</swiper>
</view>
<view class="itemInfo">
<view class="nameBox">
<view class="color-333 ellipsis_1 font_32 bold name">{{ userInfo.nickname || userInfo.name }}</view>
<image class="referencesIcon" src="https://image.fulllinkai.com/202207/15/7e78a1dd367f1250d4cba4e85bfd60f1.png" mode="widthFix" v-if="userInfo.type != 'single'"></image>
<image src="https://images.ufutx.com/202101/30/e3a22a60849c3910e680d932772432b4.png" v-if="userInfo.isSuperRank > 0" mode="widthFix" class="flo_l VIPIcon"></image>
<image src="https://images.ufutx.com/202101/30/004a146ad71658aaa2ad0f0263f960b8.png" mode="widthFix" v-else class="flo_l VIPIcon"></image>
<view class="color-333 ellipsis_1 font_32 bold name">{{ userInfo.base_profile.nickname }}</view>
<image src="https://images.ufutx.com/202101/30/e3a22a60849c3910e680d932772432b4.png" v-if="userInfo.base_profile.is_rank" mode="widthFix" class="VIPIcon"></image>
<image src="https://images.ufutx.com/202101/30/004a146ad71658aaa2ad0f0263f960b8.png" mode="widthFix" v-else class="VIPIcon"></image>
</view>
<image :src="userInfo.avatar || userInfo.photo" @tap="previewImageV2(userInfo.avatar || userInfo.photo)" class="_photo flo_r" mode="aspectFill"></image>
<image :src="userInfo.base_profile.photo" @tap="previewImageV2(userInfo.base_profile.photo)" class="_photo flo_r" mode="aspectFill"></image>
<view class="clearfloat"></view>
<view class="ui-sex-box">
<view class="sexBox">{{userInfo.fans_count}} 粉丝</view>
<view class="sexBox">{{userInfo.preview_count}} 浏览</view>
<view class="sexBox">{{userInfo.base_profile.fans_count}} 粉丝</view>
<view class="sexBox">{{userInfo.base_profile.preview_count}} 浏览</view>
</view>
<view class="itemInfomation" v-if="userInfo.profile_courtship">
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/c0510638768e154a31d6befab67dcdf8.png"></image> {{profile_courtship.birthday || "未填写"}} · {{profile_courtship.sex == 1 ? '男':'女'}} </view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/3f20187cff709ec748558b85994ca8ac.png"></image>{{profile_courtship.stature || "未填写"}}· {{profile_courtship.weight || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/895b335c6680356e0161c6a925a8663d.png"></image>{{userInfo.type == 'single' && profile_courtship.state ? profile_courtship.state + '·': '' }} {{ profile_courtship.belief || "未填写" }}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/ac43cc923f3a9f91df858a89d14e716b.png"></image>{{profile_courtship.industry_sub || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/ab39aa5d95c43c3c3a963fdd7d12e735.png"></image>现居{{profile_courtship.city || "未填写"}} · {{profile_courtship.resident_city || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/8125ddac9473066531c7ea9971033e0d.png"></image>{{profile_courtship.degree || "未填写"}} · {{profile_courtship.graduate_school || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://image.fulllinkai.com/202311/27/4f350b8f5119ca398b1712ff1a5e284c.png"></image>{{profile_courtship.marry_by_time ? "期望"+ profile_courtship.marry_by_time+ "结婚" : "未填写"}}</view>
<view class="itemInfomation" v-if="userInfo.base_profile">
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/c0510638768e154a31d6befab67dcdf8.png"></image> {{userInfo.base_profile.year || "未填写"}} · {{userInfo.base_profile.sex == 1 ? '男':'女'}} </view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/3f20187cff709ec748558b85994ca8ac.png"></image>{{userInfo.base_profile.stature || "未填写"}}· {{userInfo.base_profile.weight || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/895b335c6680356e0161c6a925a8663d.png"></image>{{userInfo.base_profile.type == 'single' && userInfo.base_profile.state ? userInfo.base_profile.state + '·': '' }} {{ userInfo.base_profile.belief || "未填写" }}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/ac43cc923f3a9f91df858a89d14e716b.png"></image>{{userInfo.base_profile.industry_sub || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/ab39aa5d95c43c3c3a963fdd7d12e735.png"></image>现居{{userInfo.base_profile.city || "未填写"}} · {{userInfo.base_profile.resident_city || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://images.ufutx.com/202103/11/8125ddac9473066531c7ea9971033e0d.png"></image>{{userInfo.base_profile.degree || "未填写"}} · {{userInfo.base_profile.graduate_school || "未填写"}}</view>
<view class="Info"> <image class="icon" src="https://image.fulllinkai.com/202311/27/4f350b8f5119ca398b1712ff1a5e284c.png"></image>{{userInfo.base_profile.marry_by_time ? "期望"+ userInfo.base_profile.marry_by_time+ "结婚" : "未填写"}}</view>
</view>
<view v-if="userInfo.isCompleteProfile == false" class="remind">对方资料未完善一键提醒Ta完善资料<span bindtap="handleRemind" data-id="{{userInfo.id}}">提醒Ta>></span> </view>
<view v-if="userInfo.base_profile.isCompleteProfile == false" class="remind">对方资料未完善一键提醒Ta完善资料<span bindtap="handleRemind" data-id="{{userInfo.base_profile.id}}">提醒Ta>></span> </view>
</view>
<view>
<view class="font_28 _bc-center">
@ -649,7 +573,7 @@ page {
</view>
</view>
</view>
<block v-if="userInfo.type == 'single'">
<block v-if="userInfo.base_profile.type == 'single'">
<view class="ui-approve-box">
<!-- 自我描述 -->
<view class="font_26 color666">
@ -657,7 +581,7 @@ page {
<image src="https://images.ufutx.com/202011/26/7645858a1ae55dd7c3ef90ec7a42bfa3.png" mode="aspectFill" class="icon"></image>
<span class="font_30 bold color333">自我描述</span>
</view>
<view class="font_26 color333 _text">{{ profile_courtship.introduction || 'ta什么也没有留下' }}</view>
<view class="font_26 color333 _text">{{ userInfo.other_profile.introduction || 'ta什么也没有留下' }}</view>
</view>
<!-- 兴趣爱好 -->
<view class="font_26 color666 ui-pt-20">
@ -670,7 +594,7 @@ page {
<view class="u_idCon font_26 color333" v-if="item">{{ item }}</view>
</block>
</view>
<view class="font_26 color333 _text">{{ profile_courtship.interest_hobby || 'ta什么也没有留下' }}</view>
<view class="font_26 color333 _text">{{ userInfo.other_profile.interest_hobby || 'ta什么也没有留下' }}</view>
</view>
<!-- 期望对方 -->
<view class="font_26 color666 ui-pt-20">
@ -683,12 +607,12 @@ page {
<view class="u_idCon font_26 color333" v-if="item">{{ item }}</view>
</block>
</view>
<view class="font_26 color333 ui-ml-40 ui-mr-40 ui-mt-4">{{ profile_courtship.ideal_mate || 'ta什么也没有留下' }}</view>
<view class="font_26 color333 ui-ml-40 ui-mr-40 ui-mt-4">{{ userInfo.other_profile.ideal_mate || 'ta什么也没有留下' }}</view>
</view>
</view>
</block>
</view>
<block v-if="userInfo.type == 'single' && userInfo.id && userInfo.self != 1">
<block v-if="userInfo.base_profile.type == 'single' && userInfo.base_profile.id && userInfo.base_profile.self != 1">
<!-- 隐身访问 -->
<view class="boxStyleList f-fcc f-fdc ui-pt-30 ui-pb-30" @tap="hiddenChange">
<view class="font_32 color-theme">想要隐身访问Ta</view>
@ -696,62 +620,25 @@ page {
<view class="u_box_bu font_28">开启隐身访问</view>
</view>
</block>
<block v-if="userInfo.id && userInfo.self != 1">
<block v-if="userInfo.base_profile.id && userInfo.base_profile.self != 1">
<view class="boxStyleList">
<block v-if="userInfo.type == 'single'">
<view v-if="token">
<button class="btn text-center _item border text-center recommend" open-type="share">
<image src="https://images.ufutx.com/202103/11/911d7ca4e2f82bcc5023b8b223574b31.png" mode="aspectFit" class="icon"></image>
将{{ profile_courtship.sex == 1 ? '他' : '她' }}推荐给好友
</button>
</view>
</block>
<block>
<view class="_item border text-center recommend" v-if="userInfo.is_friend == 1" @tap="deletefriend(userInfo.id)">
<image src="https://images.ufutx.com/202103/11/0f148a7763958c65dac1a5ce929163dc.png" mode="aspectFit" class="icon"></image>
取消{{profile_courtship.sex == 1?'他':'她'}}为好友</view>
<view class="_item border text-center recommend" v-else-if="userType != 'marriage'" @tap="dislikeFn">
<image src="https://images.ufutx.com/202103/11/0f148a7763958c65dac1a5ce929163dc.png" mode="aspectFit" class="icon"></image>
对{{profile_courtship.sex == 1?'他':'她'}}不感兴趣</view>
</block>
<block v-if="token && userType != 'marriage'">
<view class="_item1 border text-center recommend" @tap="modalName = 'report'">
<image src="https://images.ufutx.com/202103/11/182464043e2aadde7a75788eb852f0d4.png" mode="aspectFit" class="icon"></image>
举报或者拉黑
</view>
</block>
<view v-else-if="userType == 'marriage'" class="_item1 border text-center recommend" @tap="report">
<view class="_item border text-center recommend" v-if="userInfo.base_profile.is_friend == 1" @tap="deletefriend">
<image src="https://images.ufutx.com/202103/11/0f148a7763958c65dac1a5ce929163dc.png" mode="aspectFit" class="icon"></image>
取消{{userInfo.base_profile.sex == 1?'他':'她'}}为好友
</view>
<view class="_item1 border text-center recommend" @tap="shield">
<image src="https://images.ufutx.com/202103/11/182464043e2aadde7a75788eb852f0d4.png" mode="aspectFit" class="icon"></image>
举报
拉黑并屏蔽
</view>
<view class="_item1 border text-center recommend" @tap="report">
<image src="https://images.ufutx.com/202103/11/182464043e2aadde7a75788eb852f0d4.png" mode="aspectFit" class="icon"></image>
举报用户
</view>
</view>
</block>
</view>
<!-- </template> -->
<view class="recommended_user_box" v-if="channel == 'recommend'">
<view class="recommended_title_box">
<image class="recommended_icon" src="https://images.ufutx.com/202012/04/f06c80348b175b5f920709de8e27bbde.png"></image>
<span class="recommende_title font32 bold">推荐用户</span>
</view>
<view class="recommended_user_data_box">
<view class="recommended_user" v-for="(item,index) in recommendedList" style="background-image: url({{item.photo}})" :key="index" @tap="goToInformation(item.id)">
<view class="mask"></view>
<view class="recommended_user_data">
<view class="font28 bold recommended_user_name">{{item.nickname}}</view>
<view class="age_address font24">
<view class="flo_l">{{item.profile.age}}岁</view>
<view class="flo_l">
<image class="address_icon" src="https://images.ufutx.com/202012/04/9fd9ec3ebabffa12e4527ed8e0664473.png"></image>
<span class="address_text">{{item.profile.city}}</span>
</view>
</view>
</view>
</view>
</view>
<view class="to_view_more font32" @tap="goToMore">查看更多</view>
</view>
</view>
<block v-if="userInfo.self != 1">
<block v-if="userInfo.base_profile.self != 1">
<view class="ui-bottom-operation">
<image class="ui-mask-icon" src="https://image.fulllinkai.com/202407/30/dca7024d347433e1aa893ce15a056b10.png" mode="widthFix"></image>
<view class="f-fbc ui-operation">
@ -759,9 +646,10 @@ page {
<image class="ui-share-icon" src="https://image.fulllinkai.com/202407/30/a0c06b508211c748a046e22626627b5a.png" mode="widthFix"></image>
</button>
<view class="u_boBu f-fbc">
<image v-if="userInfo.is_followed" class="ui-operation-btn-v2" src="https://image.fulllinkai.com/202407/30/48c1254fc413725432cc8d1c22be7440.png" mode="widthFix" @tap="attention"></image>
<image class="ui-operation-btn-v2" src="https://image.fulllinkai.com/202409/25/104374082c9e2bd160ee963b4f29c98f.png" mode="widthFix" @tap="modalName = 'praise'"></image>
<image v-if="userInfo.base_profile.is_followed" class="ui-operation-btn-v2" src="https://image.fulllinkai.com/202407/30/48c1254fc413725432cc8d1c22be7440.png" mode="widthFix" @tap="attention"></image>
<image v-else class="ui-operation-btn-v2" src="https://image.fulllinkai.com/202407/30/c7aa12666362515181a8f237a3ea48ff.png" mode="widthFix" @tap="attention"></image>
<image v-if="userInfo.is_friend == 0" class="ui-operation-btn" src="https://image.fulllinkai.com/202407/30/58d9ec020a61a2d5370f2adb77489c18.png" mode="widthFix" @tap="contactFriendFn"></image>
<image v-if="userInfo.base_profile.is_friend == 0" class="ui-operation-btn" src="https://image.fulllinkai.com/202407/30/58d9ec020a61a2d5370f2adb77489c18.png" mode="widthFix" @tap="contactFriendFn"></image>
<image v-else class="ui-operation-btn" src="https://image.fulllinkai.com/202407/30/0bfb0220f4b120dc0b0e9b4fb7a70a7b.png" mode="widthFix" @tap="jumpPath('chitchat')"></image>
</view>
</view>
@ -773,7 +661,7 @@ page {
<view class="ui-abnormal" v-if="loading">
<view class="ui-user-pic-box">
<image class="ui-user-pic" src="https://image.fulllinkai.com/202407/29/396698823907d0ff19b889cea3ac7e9f.jpeg" mode="aspectFill"></image>
<image v-if="userInfo.hidden_profile_status != 1" src="https://image.fulllinkai.com/202203/22/0406319a6c0998836ca7391e588010b6.png" class="ui-mask" mode="aspectFill"></image>
<image v-if="userInfo.base_profile.hidden_profile_status != 1" src="https://image.fulllinkai.com/202203/22/0406319a6c0998836ca7391e588010b6.png" class="ui-mask" mode="aspectFill"></image>
<image v-else src="https://image.fulllinkai.com/202310/25/9643efd8588e76ddc045a2e2df757d30.png" class="ui-mask" mode="aspectFill"></image>
</view>
<view class="ui-skeleton-pic"></view>
@ -788,11 +676,16 @@ page {
</poster>
</block>
<!-- <wxShareCom :modalName.sync="modalName" :sharePic.sync="shareImg" @modalFn="modalFn"></wxShareCom>-->
<view class="cu-modal bottom-modal {{modalName == 'report' ? 'show' : ''}}" @tap="modalName = ''">
<view class="cu-dialog ui-pb-40 ui-report-box">
<view class="f-fcc font_28 color-333 ui-report-item" @tap="shield">拉黑并屏蔽</view>
<view class="f-fcc font_28 color-333 ui-report-item" @tap="report">举报用户</view>
<view class="f-fcc font_28 color-999 ui-report-item-v2" @tap="modalName = ''">取消</view>
<view class="cu-modal bottom-modal {{modalName == 'praise' ? 'show' : ''}}">
<view class="cu-dialog ui-pb-40 ui-praise-box ui-pl-30">
<image class="cancelIcon" src="https://images.ufutx.com/202106/01/e536a423a145ae12ab4f6dc57f58588d.png" mode="widthFix" @tap="modalName = ''"></image>
<view class="font_30 bold color333 ui-pt-30">夸夸{{userInfo.base_profile.nickname}}引起Ta的注意吧</view>
<view class="font_24 color999">最多选3个每天只有1次夸夸Ta的机会</view>
<view class="f-fcl flex-wrap">
<view class="ui-praise-item ui-mr-26 ui-mt-26 color333 font_26" :class="{'ui-active-praise' : item.state}" v-for="(item,index) in praiseList" :key="index" @tap="changePraise(item, index)">{{item.label}}</view>
</view>
<view class="f-fcc colorF font_30 ui-praise-btn" @tap="sendPraise">确定</view>
<view class="color-theme font_26 ui-pb-20" @tap="refresh">换一批</view>
</view>
</view>
<view class="cu-modal {{modalName == 'Modal' ? 'show' : ''}}">
@ -801,23 +694,22 @@ page {
<view class="m_apply_tt">
<view class="f-fcc">
<image class="u_apply_img" mode="widthFix" src="https://images.ufutx.com/202105/31/37e0eda3fe1fcc0af2cb3ca2a51d2291.png"></image>
<view class="font_34 color333 bold">{{userType != 'marriage' ? '打个招呼吧' : '添加单身'}}</view>
<view class="font_34 color333 bold">打个招呼吧</view>
</view>
<view class="font_28 color666 ui-pt-16" v-if="userData.rank_id <= 0 && userType != 'marriage'">非会员每天只有3次打招呼</view>
<view class="font_28 color666 ui-pt-16" v-if="!userData.rank_id">非会员每天只有3次打招呼</view>
</view>
<view class="text-left ff ui-pt-30 ui-pl-36 ui-pr-36">
<textarea type="text" v-if="userType != 'marriage'" disabled show-confirm-bar="{{false}}" placeholder="输入打招呼内容" class="inputStyle" v-model="message" @input="typing" maxlength="60"/>
<view v-else>{{message}}</view>
<view class="text_num text-right" v-if="userType != 'marriage'">{{message.length}} / 60</view>
<view class="changeText text-right" v-if="userType != 'marriage'" @tap="getGreet(1)">
<textarea type="text" disabled show-confirm-bar="{{false}}" placeholder="输入打招呼内容" class="inputStyle" v-model="message" @input="typing" maxlength="60"/>
<view class="text_num text-right">{{message.length}} / 60</view>
<view class="changeText text-right" @tap="getGreet(1)">
<image src="https://images.ufutx.com/202012/23/5b3b28530ad449fd04d51852ff1472ba.png" mode="aspectFit"></image>
<span class="font_24 color-666">换一个</span>
</view>
<view class="f-fcc" :style="{paddingTop: userType == 'marriage' ? '40rpx' : ''}">
<view class="f-fcc">
<view class="u_apply_can f-fcc font_32 color999" @tap="modalName = ''">取消</view>
<view class="font_30 u_apply_btn white f-fcc" @tap="sendMsg">发送</view>
</view>
<view class="font_28 color999 text-center ui-pt-40" v-if="userData.rank_id<=0 && userType != 'marriage'">还剩{{userData.surplus_num}}次,<text class="color-theme" @tap="jumpPath('vip')">成为会员</text>将不限制打招呼</view>
<view class="font_28 color999 text-center ui-pt-40" v-if="!userData.rank_id">还剩{{userData.surplus_num}}次,<text class="color-theme" @tap="jumpPath('vip')">成为会员</text>将不限制打招呼</view>
</view>
</view>
</view>
@ -840,6 +732,7 @@ page {
</button>
</view>
</view>
<loginDialog :loginShow="loginShow" @hiddenLogin="hiddenLogin"></loginDialog>
</view>
</template>
@ -854,12 +747,21 @@ wepy.page({
mixins: [https, base],
data: {
loginShow: false,
waitBullets: [],
showingBullets: [],
lines: 3,
currentLine: 1,
isInfinite: true,
timer: null,
token: '',
userId: '',
userType: '',
id: '',
message: '', // 打招呼信息
loading: false,
throttle: true,
modalName: '', // 弹框
pairedScore: 0,
userData: {}, // 自己的数据信息
@ -870,6 +772,9 @@ wepy.page({
{name: '真人未认证', activeName: '真人已认证', activeIcon: 'https://image.fulllinkai.com/202407/30/8f2700a35614c24f578ac6b5bf6e74c6.png', active: false, icon: 'https://image.fulllinkai.com/202202/23/c8a7f144e6eb593a5c494e700a212dac.png'},
{name: '学历未认证', activeName: '学历已认证', activeIcon: 'https://image.fulllinkai.com/202407/30/8f2700a35614c24f578ac6b5bf6e74c6.png', active: false, icon: 'https://image.fulllinkai.com/202202/23/c6e970db876230df0411eddd49d9e58f.png'}
],
praiseList: [],
praisePage: 1,
selectPraise: [],
interestLabel: [],
showCondition: false,
conditionArr: [],
@ -880,60 +785,166 @@ wepy.page({
posterConfig: null // 分享海报数据
},
methods: {
getUserData () {
// 夸夸数据列表
getPraiseList () {
let vm = this
vm.$post({url: `${service.host}/user/v3`}).then(({code, data}) => {
let list = []
vm.$get({url: `${service.host}/label/user/${vm.id}/list?page=${vm.praisePage}`}).then(({code, data}) => {
if (code == 0) {
vm.userData = data
console.log(data, '夸夸列表')
if (data.data && data.data.length > 0) {
// 已选中的夸夸重新赋值到数组中
vm.selectPraise.forEach((j) => {
list.unshift(j)
})
data.data.forEach((item) => {
list.push({label: item.label, state: false})
})
let res = new Map()
vm.praiseList = JSON.parse(JSON.stringify(list.filter((list) => !res.has(list.label) && res.set(list.label, 1))))
}
if (data.data && data.data.length >= 9) {
vm.praisePage++
} else {
vm.praisePage = 1
}
}
wx.hideLoading()
}).catch(() => {
wx.hideLoading()
})
},
// 夸夸TA换一批
refresh() {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
vm.getPraiseList()
},
// 用户已有夸夸弹幕数据
getUserPraise () {
let vm = this
vm.$get({url: `${service.host}/label/user/${vm.id}/logs`}).then(({code, data}) => {
if (code == 0) {
console.log(data, '夸夸列表1')
if (data && data.length != 0) {
vm.waitBullets = []
data.forEach(item => {
let text = item.content.join(' ')
vm.waitBullets.push({
id: Math.random() + Math.random(),
name: text,
img: item.photo,
line: 0
})
})
}
}
wx.hideLoading()
}).catch(() => {
wx.hideLoading()
})
},
// 保存夸夸Ta
sendPraise() {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
let list = []
vm.selectPraise.forEach((item) => {
list.push(item.label)
})
if (list.length == 0) {
vm.$showToast('请选择至少1个夸夸Ta')
return
}
let data = {
labels: list
}
if (vm.throttle) {
vm.throttle = false
vm.$showLoading('')
vm.$post({url: `${service.host}/label/user/${vm.id}`, data}).then(({code, data}) => {
if (code == 0) {
vm.$showToast('夸夸Ta已发送')
vm.modalName = ''
}
vm.throttle = true
wx.hideLoading()
}).catch(() => {
vm.throttle = true
wx.hideLoading()
})
}
},
showNextBullet() {
let vm = this
if (vm.waitBullets && vm.waitBullets.length == 0) {
return
}
// 先确定弹道,跟上一个弹道错开即可
vm.currentLine = (vm.currentLine % vm.lines) + 1
// 从等待集合里取出第一个
let currentBullet = JSON.parse(JSON.stringify(vm.waitBullets.shift()))
// vm.isInfinite &&
vm.waitBullets.push({
id: Math.random() + Math.random(),
name: currentBullet.name,
img: currentBullet.img,
isWished: false,
line: 0
})
// 设置弹幕的弹道
currentBullet.line = vm.currentLine
// 弹幕放进显示集合里,弹幕开始滚动
vm.showingBullets.push(currentBullet)
},
getDetail() {
let vm = this
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/users/119488/v2`}).then(({code, data}) => {
vm.$get({url: `${service.host}/other/user/${vm.id}`}).then(({code, data}) => {
if (code === 0) {
wx.setNavigationBarTitle({
title: data.nickname ? data.nickname : data.name
title: data.base_profile ? data.base_profile.nickname : '单身交友'
})
if (data.profile_courtship) {
data.profile_courtship.city = data.profile_courtship.city ? data.profile_courtship.city.replace('市', '') : ''
data.profile_courtship.resident_city = data.profile_courtship.resident_city ? data.profile_courtship.resident_city.replace('市', '人') : ''
if (data.profile_courtship.stature) {
data.profile_courtship.stature = data.profile_courtship.stature == 139 ? '139cm以下' : data.profile_courtship.stature + 'cm'
if (data.base_profile) {
data.base_profile.city = data.base_profile.city ? data.base_profile.city.replace('市', '') : ''
data.base_profile.resident_city = data.base_profile.resident_city ? data.base_profile.resident_city.replace('市', '人') : ''
if (data.base_profile.stature) {
data.base_profile.stature = data.base_profile.stature == 139 ? '139cm以下' : data.base_profile.stature + 'cm'
}
if (data.profile_courtship.weight) {
data.profile_courtship.weight = data.profile_courtship.weight == 39 ? '39kg以下' : data.profile_courtship.weight + 'kg'
if (data.base_profile.weight) {
data.base_profile.weight = data.base_profile.weight == 39 ? '39kg以下' : data.base_profile.weight + 'kg'
}
vm.profile_courtship = data.profile_courtship
vm.profile_courtship.industry = data.industry
vm.profile_courtship.industry_sub = data.industry_sub
vm.interestLabel = data.profile_courtship.interest_label ? JSON.parse(data.profile_courtship.interest_label) : []
vm.interestLabel = data.other_profile.interest_label
}
if (data.is_approved == '1') { // 实名
if (data.approve_profile.is_approved == '1') { // 实名
vm.approveList[0].active = true
}
if (data.is_real_approved == '1') { // 真人
if (data.approve_profile.is_real_approved == '1') { // 真人
vm.approveList[1].active = true
}
if (data.is_educate_approved == '1') { // 学历
if (data.approve_profile.is_educate_approved == '1') { // 学历
vm.approveList[2].active = true
vm.approveList[2].activeName = data.profile_courtship.degree ? `${data.profile_courtship.degree}已认证` : '已认证'
vm.approveList[2].activeName = data.base_profile.degree ? `${data.base_profile.degree}已认证` : '已认证'
}
if (data.profile_courtship.mate_conditon instanceof Array) {
data.profile_courtship.mate_conditon.forEach(item => {
if (data.other_profile.mate_conditon instanceof Array) {
data.other_profile.mate_conditon.forEach(item => {
if (item.mate_condition) {
vm.conditionArr = item.mate_condition
}
})
} else {
vm.conditionArr = Object.values(data.profile_courtship.mate_conditon)
// vm.conditionArr = Object.values(data.other_profile.mate_conditon)
// 插入期望ta多个城市
if (data.profile_courtship.city_list_claim) {
let city_list_claim_arr = data.profile_courtship.city_list_claim.split(',')
if (data.other_profile.city_list_claim) {
let city_list_claim_arr = data.other_profile.city_list_claim.split(',')
city_list_claim_arr.forEach((city) => {
vm.conditionArr.push(city)
})
@ -943,6 +954,10 @@ wepy.page({
vm.showCondition = true
}
if (data.profile_photos && data.profile_photos.length == 0) {
data.profile_photos.push(data.base_profile.photo)
}
vm.userInfo = data
let num = 0
@ -950,12 +965,12 @@ wepy.page({
if (data.self_is_real_approved == 1) { num = num + 50 }
vm.pairedScore = num
if (data.photo || data.avatar) {
let year = '', city = '', degree = '', industry_sub = data.industry_sub
if (data.profile_courtship) {
year = data.profile_courtship.birthday || ''
city = data.profile_courtship.city || ''
degree = data.profile_courtship.degree || ''
if (data.photo) {
let year = '', city = '', degree = '', industry_sub = data.base_profile.industry_sub
if (data.base_profile) {
year = data.base_profile.year || ''
city = data.base_profile.city || ''
degree = data.base_profile.degree || ''
}
vm.posterConfig = {
@ -968,7 +983,7 @@ wepy.page({
{x: 20, y: 288 + 26, width: 200, lineHeight: 22, text: `${degree} | ${industry_sub}`, fontSize: 26, color: '#fff', zIndex: 99}
],
images: [
{url: data.photo || data.avatar, width: 420, height: 336, y: 0, x: 0},
{url: data.base_profile.photo, width: 420, height: 336, y: 0, x: 0},
{url: 'https://image.fulllinkai.com/202206/20/be5b39dde1ad4720893b2e3c52b4480d.png', width: 420, height: 100, y: 236, x: 0},
{url: 'https://image.fulllinkai.com/202206/20/bd732960011f55fed0e5e7d623118494.png', width: 136, height: 40, y: 276, x: 264}
]
@ -987,9 +1002,29 @@ wepy.page({
console.log(err)
})
},
// 选择夸夸选项
changePraise(e, index) {
let vm = this
if (!vm.praiseList[index].state) {
if (vm.selectPraise && vm.selectPraise.length >= 3) {
vm.$showToast('最多只能选择3个')
return
}
vm.praiseList[index].state = true
vm.selectPraise.push({label: e.label, state: true})
} else {
vm.praiseList[index].state = false
vm.selectPraise = vm.selectPraise.filter(item => { return item.label != e.label })
}
},
// 关注
attention() {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
vm.$showLoading('')
vm.$post({url: `${service.host}/follow/users/119488`}).then(({code, data}) => {
if (code == 0) {
@ -1017,9 +1052,12 @@ wepy.page({
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/friend/users/${vm.id}`}).then(({code, data}) => {
vm.$delete({url: `${service.host}/friend/user/${vm.id}`}).then(({code, data}) => {
if (code == 0) {
vm.$showToast('好友已取消')
setTimeout(() => {
wx.navigateBack({delta: 1})
}, 1200)
}
wx.hideLoading()
}).catch(() => {
@ -1034,6 +1072,11 @@ wepy.page({
// 对Ta不感兴趣
dislikeFn() {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
wx.showModal({
title: '温馨提示',
content: '是否对Ta不感兴趣标记为不感兴趣下次系统将不再为您推荐Ta.',
@ -1058,17 +1101,22 @@ wepy.page({
// 加入黑名单并屏蔽
shield() {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
wx.showModal({
title: '加入黑名单',
content: '拉黑后,对方将无法访问、关注、发送好友请求,也无法给你发消息,可以在【设置-黑名单】中取消',
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/blacklist/friends/${vm.id}`}).then(({code, data}) => {
vm.$post({url: `${service.host}/user/${vm.id}/linking/blacklist`}).then(({code, data}) => {
if (code == 0) {
vm.$showToast(`已加入黑名单`)
setTimeout(() => {
wx.switchTab({url: '/pages/tabBar/news'})
wx.navigateBack({delta: 1})
}, 1200)
}
wx.hideLoading()
@ -1084,18 +1132,25 @@ wepy.page({
// 举报
report() {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
vm.reportShow = false
wx.navigateTo({url: `/pages/users/report?id=${vm.id}&type=details`})
},
// 隐身访问处理
hiddenChange() {
let vm = this
vm.$post({url: `${service.host}/blacklist/friends/${vm.id}`}).then(({code, data}) => {
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
vm.$post({url: `${service.host}/other/user/${vm.id}/hidden`}).then(({code, data}) => {
if (code == 0) {
vm.$showToast(`已加入黑名单`)
setTimeout(() => {
wx.switchTab({url: '/pages/tabBar/news'})
}, 1200)
vm.$showToast(`已开启隐身访问`)
}
wx.hideLoading()
}).catch(() => {
@ -1125,7 +1180,7 @@ wepy.page({
// 获取打招呼信息
getGreet(state) {
let vm = this
vm.$get({url: `${service.host}/greet/log?status=${state}`}).then(({code, data}) => {
vm.$get({url: `${service.host}/chat/greet/log?status=${state}`}).then(({code, data}) => {
if (code == 0) {
vm.message = data.name
}
@ -1135,8 +1190,10 @@ wepy.page({
// 联系朋友
contactFriendFn() {
let vm = this
if (vm.userType == 'marriage') {
vm.message = '你好,我有认识的单身嘉宾想认识你,可以沟通一下吗?'
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
vm.getGreet(0)
},
@ -1161,14 +1218,28 @@ wepy.page({
},
jumpPath(type) {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
if (type == 'chitchat') {
wx.navigateTo({url: `/pages/news/groupChitchat?id=${vm.userInfo.id}&name=${encodeURIComponent(vm.userInfo.nickname)}&pic=${vm.userInfo.photo}&type=${vm.userInfo.type}`})
} else if (type == 'vip' && !vm.isIos) {
wx.navigateTo({url: `/pages/users/upgradeVIP`})
}
vm.modalName = ''
},
hiddenLogin() {
let vm = this
vm.loginShow = false
}
},
onHide() {
let vm = this
clearTimeout(this.timer)
vm.waitBullets = []
},
onShow() {
let vm = this
const info = wx.getSystemInfoSync()
@ -1181,10 +1252,17 @@ wepy.page({
},
onLoad(e) {
let vm = this
vm.userData = wx.getStorageSync('userInfo')
vm.userId = wx.getStorageSync('user_id')
vm.userType = wx.getStorageSync('type')
vm.id = e.id
vm.getDetail()
vm.getPraiseList()
vm.getUserPraise()
vm.showNextBullet()
vm.timer = setInterval(() => {
vm.showNextBullet()
}, 3000)
}
})
</script>
@ -1192,10 +1270,12 @@ wepy.page({
{
navigationBarTitleText: '单身交友',
enablePullDownRefresh: false,
backgroundColorTop: '#ffffff',
backgroundColorBottom: '#ffffff',
navigationBarBackgroundColor: '#f5f5f5',
backgroundColorTop: '#f5f5f5',
backgroundColorBottom: '#f5f5f5',
usingComponents: {
'poster': 'plugin://FL-plugin/poster'
'poster': 'plugin://FL-plugin/poster',
loginDialog: '~@/components/loginDialog',
}
}
</config>

View File

@ -199,14 +199,14 @@ wepy.page({
degree: '', // 学历
degreeList: ['硕士以上', '本科以上', '专科以上', '不限'], // 学历
belief: ['不限', '基督教', '佛教', '伊斯兰教', '其他'],
beliefIndex: -1,
beliefIndex: 0,
industry: '',
industry_sub: '',
Business: [],
multiIndex: [0, 0],
objectMultiArray: [],
incomeList: ['不限', '5w以下', '5~10w', '10~15w', '15~30w', '30~50w', '50~100w', '100~500w', '500w以上'],
incomeIndex: -1,
incomeIndex: 1,
sexIndex: '',
ageIndex: '',
@ -284,18 +284,18 @@ wepy.page({
let vm = this
let data = {
inputVal: vm.inputVal, // 上个页面搜索框内容
is_approved: vm.realNameList[parseInt(vm.realNameIndex)], // 实名认证
is_approved: vm.realNameList[parseInt(vm.realNameIndex)] == '不限' ? '' : vm.realNameList[parseInt(vm.realNameIndex)], // 实名认证
realNameIndex: vm.realNameIndex, // 实名认证
is_rank: vm.is_rank_list[parseInt(vm.vipIndex)], // vip会员
is_rank: vm.is_rank_list[parseInt(vm.vipIndex)] == '不限' ? '' : vm.is_rank_list[parseInt(vm.vipIndex)], // vip会员
vipIndex: vm.vipIndex, // vip会员下标
degree: vm.degreeList[parseInt(vm.educateIndex)], // 学历
degree: vm.degreeList[parseInt(vm.educateIndex)] == '不限' ? '' : vm.degreeList[parseInt(vm.educateIndex)], // 学历
educateIndex: vm.educateIndex, // 学历下标
belief: vm.belief[vm.beliefIndex], // 信仰
belief: vm.belief[vm.beliefIndex] == '不限' ? '' : vm.belief[vm.beliefIndex], // 信仰
beliefIndex: vm.beliefIndex, // 信仰下标
industry: vm.industry, // 职业
industry_sub: vm.industry_sub, // 副职业
industry: vm.industry == '不限' ? '' : vm.industry, // 职业
industry_sub: vm.industry_sub == '不限' ? '' : vm.industry_sub, // 副职业
multiIndex: vm.multiIndex, // 职业下标
income: vm.incomeList[vm.incomeIndex], // 年收入
income: vm.incomeList[vm.incomeIndex] ? '' : vm.incomeList[vm.incomeIndex], // 年收入
incomeIndex: vm.incomeIndex, // 年收入下标
sexIndex: vm.sexIndex, // 性别下标
@ -322,10 +322,10 @@ wepy.page({
vm.realNameIndex = params.realNameIndex
vm.vipIndex = params.vipIndex
vm.educateIndex = params.educateIndex
vm.beliefIndex = params.beliefIndex ? parseInt(params.beliefIndex) : -1
vm.industry = params.industry
vm.beliefIndex = params.beliefIndex ? parseInt(params.beliefIndex) : 0
vm.industry = params.industry || '不限'
vm.industry_sub = params.industry_sub
vm.incomeIndex = params.incomeIndex ? parseInt(params.incomeIndex) : -1
vm.incomeIndex = params.incomeIndex ? parseInt(params.incomeIndex) : 0
vm.multiIndex = params.multiIndex
vm.sexIndex = params.sexIndex

View File

@ -151,11 +151,11 @@ page {
<view class="ui-searchUsers">
<view class="ui-top-box">
<view class="f-fcl">
<image :src="userInfo.avatar || userInfo.photo" mode="aspectFill" class="ui-user-pic" @tap="jumpDetailPath(userInfo)"></image>
<image :src="userInfo.avatar" mode="aspectFill" class="ui-user-pic" @tap="jumpDetailPath(userInfo)"></image>
<view class="ui-relative">
<image class="ui-search-icon" src="https://image.fulllinkai.com/202405/13/629916bd281b7afa1a61ed099db182cf.png" mode="widthFix"></image>
<input type="text" placeholder="搜索昵称" class="text-left ui-search-box" confirm-type="search" v-model="inputVal" focus="{{inputShowed}}" @confirm="initData" />
<image v-if="inputVal" class="ui-close-search-icon" src="https://image.fulllinkai.com/202307/04/a7f548083c45667843828e7fccef7d8c.png" mode="widthFix"></image>
<image v-if="inputVal" class="ui-close-search-icon" src="https://image.fulllinkai.com/202307/04/a7f548083c45667843828e7fccef7d8c.png" mode="widthFix" @tap="inputVal = ''"></image>
</view>
</view>
<view class="f-fbc">
@ -198,12 +198,12 @@ page {
<block v-else>
<view class="love_user_list_1" v-for="(item,index) in list" :key="index" @tap="jumpDetailPath(item)">
<view>
<image class="love_user_photo_1" :src="item.photo || item.avatar" mode="aspectFill"></image>
<image class="love_user_photo_1" :src="item.photo" mode="aspectFill"></image>
<view class="user_data_box_1">
<view class="user_data_name_1 f-fbc">
<view class="f-fc">
<view class="font_32 bold color333 name_1">{{item.nickname}}</view>
<image v-if="item.isSuperRank == 0" class="vipIcon_1" src="https://images.ufutx.com/202103/17/bfad7e2a8e86cf7912ff280234a35606.png" mode="widthFix"></image>
<image v-if="!is_rank" class="vipIcon_1" src="https://images.ufutx.com/202103/17/bfad7e2a8e86cf7912ff280234a35606.png" mode="widthFix"></image>
<image v-else class="vipIcon_1" src="https://images.ufutx.com/202103/17/d0913df8b234057229ab3dd102497a50.png" mode="widthFix"></image>
<view class="m_rpe f-fcc">
<image class="u_rpe_img" v-if="item.is_approved == 1" src="https://images.ufutx.com/202105/26/17b7eec949ba18e576d5de67bca00d94.png" mode="widthFix"></image>
@ -249,31 +249,31 @@ wepy.page({
data: {
userInfo: {},
inputVal: '',
sexIndex: 0,
sexIndex: 1,
sexList: [
{title: '不限', value: '不限', active: true},
{title: '只看男', value: 'single_man', active: false},
{title: '只看女', value: 'single_woman', active: false}
{title: '不限', value: '', active: true},
{title: '只看男', value: '1', active: false},
{title: '只看女', value: '2', active: false}
],
approveList: [
{title: '不限', value: '不限', active: true},
{title: '不限', value: '', active: true},
{title: '已认证', value: '已认证', active: false},
{title: '未认证', value: '未认证', active: false}
],
region: ['', '', ''],
region_id: ['', '', ''],
ageIndex: 0,
ageIndex: [5, 9],
ageList: [],
sexText: '性别',
ageText: '年龄',
cityText: '城市',
searchList: [
{title: '不限', value: '不限', active: true},
{title: '不限', value: '', active: true},
{title: '超级VIP', value: '超级VIP', active: false},
{title: '普通会员', value: '普通会员', active: false}
],
beliefList: [
{title: '不限', value: '不限', active: true},
{title: '不限', value: '', active: true},
{title: '基督教', value: '基督教', active: false},
{title: '其他', value: '其他', active: false}
],
@ -287,9 +287,10 @@ wepy.page({
realNameIndex: 2, // 实名认证
vipIndex: 2, // VIP会员
educateIndex: 3, // 学历
beliefIndex: -1, // 信仰
incomeIndex: -1, // 收入
beliefIndex: 0, // 信仰
incomeIndex: 0, // 收入
timer: null,
no_more: false,
loading: false,
page: 1,
@ -300,35 +301,34 @@ wepy.page({
let vm = this
let data = {
page: vm.page,
min_age: vm.ageIndex ? vm.ageList[0][vm.ageIndex[0]] : '不限',
max_age: vm.ageIndex ? vm.ageList[1][vm.ageIndex[1]] : '不限',
province: vm.region[1] ? vm.region[1] : '不限',
city: vm.region[2] ? vm.region[2] : '不限',
min_age: vm.ageIndex ? vm.ageList[0][vm.ageIndex[0]] : '',
max_age: vm.ageIndex ? vm.ageList[1][vm.ageIndex[1]] : '',
province: vm.region[1] ? vm.region[1] : '',
city: vm.region[2] ? vm.region[2] : '',
sex: vm.sexList[vm.sexIndex].value,
is_approved: vm.is_approved ? vm.is_approved : '不限',
is_rank: vm.is_VIP ? vm.is_VIP : '不限',
degree: vm.is_degree ? vm.is_degree : '不限',
belief: vm.belief ? vm.belief : '不限',
industry: vm.is_industry ? vm.is_industry : '不限',
industry_sub: vm.is_industry_sub ? vm.is_industry_sub : '不限',
income: vm.is_income ? vm.is_income : '不限'
is_approved: vm.is_approved ? vm.is_approved : '',
is_rank: vm.is_VIP ? vm.is_VIP : '',
degree: vm.is_degree ? vm.is_degree : '',
belief: vm.belief ? vm.belief : '',
industry: vm.is_industry ? vm.is_industry : '',
industry_sub: vm.is_industry_sub ? vm.is_industry_sub : '',
income: vm.is_income ? vm.is_income : ''
}
console.log(data, '*/**********')
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/user/list?keyword=${vm.inputVal}`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/other/user/list?keyword=${vm.inputVal}`, data}).then(({code, data}) => {
if (code === 0) {
vm.userInfo = data.user
if (vm.list.length === 0 || vm.page === 1) {
vm.list = data.users.data
vm.list = data.data
} else {
data.users.data.map(function (item) {
data.data.map(function (item) {
vm.list.push(item)
})
}
if (vm.list.length < 15 || data.users.data.length < 15) {
if (vm.list.length < 15 || data.data.length < 15) {
vm.no_more = true
}
vm.record(data.users.data)
vm.record(data.data)
setTimeout(() => {
vm.loading = true
}, 500)
@ -428,6 +428,17 @@ wepy.page({
wx.navigateTo({url: `/pages/home/information?id=${e.id}`})
}
},
watch: {
inputVal () {
let vm = this
clearTimeout(vm.timer)
vm.timer = setTimeout(() => {
vm.page = 1
vm.no_more = false
vm.getList()
}, 800)
}
},
// 上拉获取更多数据
onReachBottom() {
let vm = this
@ -451,14 +462,18 @@ wepy.page({
},
onLoad(e) {
let vm = this
vm.userInfo = wx.getStorageSync('userInfo')
if (vm.userInfo.sex == 1) {
vm.sexIndex = 2
}
if (e.params) {
let params = JSON.parse(e.params)
vm.inputVal = params.inputVal
vm.belief = params.belief ? params.belief : '不限'
vm.is_approved = params.is_approved ? params.is_approved : '不限'
vm.is_VIP = params.is_rank ? params.is_rank : '不限'
vm.is_degree = params.degree ? params.degree : '不限'
vm.is_industry = params.industry ? params.industry : '不限'
vm.inputVal = params.inputVal || ''
vm.belief = params.belief ? params.belief : ''
vm.is_approved = params.is_approved ? params.is_approved : ''
vm.is_VIP = params.is_rank ? params.is_rank : ''
vm.is_degree = params.degree ? params.degree : ''
vm.is_industry = params.industry ? params.industry : ''
vm.is_industry_sub = params.industry_sub ? params.industry_sub : ''
vm.multiIndex = params.multiIndex
vm.ageIndex = params.ageIndex

View File

@ -105,7 +105,7 @@ page {
<block v-else>
<view class="ui-pb-20">
<view class="recommended_user_data_box">
<view class="recommended_user" v-for="(item,index) in list" :key="index">
<view class="recommended_user" v-for="(item,index) in list" :key="index" @tap="jumpPath(`/pages/home/information?id=${item.id}`)">
<image class="userPhoto" :src="item.photo" mode="aspectFill"></image>
<view class="mask"></view>
<view class="recommended_user_data">
@ -146,7 +146,7 @@ wepy.page({
page: 1,
list: [], // 列表数据
verify: {},
recommendShow: true,
recommendShow: false,
intentionShow: false,
recommendData: {}
},
@ -154,11 +154,10 @@ wepy.page({
getList() {
let vm = this
let data = {
area_id: vm.id,
page: vm.page
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/area/users/v2`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/area/${vm.id}/users`, data}).then(({code, data}) => {
if (code === 0) {
if (vm.list.length === 0 || vm.page === 1) {
vm.list = data.data
@ -237,6 +236,9 @@ wepy.page({
if (state) {
vm.verify.has_apply_area = state
}
},
jumpPath(url) {
wx.navigateTo({url: url})
}
},
// 上拉获取更多数据

View File

@ -781,9 +781,9 @@ wepy.page({
let vm = this
let timeData = new Date().getTime()
let data = {
to_user_id: vm.otherUserId,
content: vm.msg,
type: 'text'
other_user_id: vm.otherUserId,
field_7: vm.msg,
field_6: 'text'
}
if (!vm.msg) {
vm.$showToast('请输入聊天内容')
@ -852,9 +852,9 @@ wepy.page({
sendPictures(file) {
let vm = this
let data = {
to_user_id: vm.otherUserId,
content: vm.msg,
type: 'picture'
other_user_id: vm.otherUserId,
field_7: vm.msg,
field_6: 'picture'
}
vm.openShow = false
vm.uploadState = true

View File

@ -369,25 +369,25 @@ page {
<view class="ui-item-data" @tap="jumpPath(item)">
<view class="weuis" @tap.stop="jumpDetailPath(item)">
<view class="dist dot" v-if="item.status == 0"></view>
<image :src="tabBarIndex === 0 ? (item.other_user.avatar || item.other_user.photo) : (item.receive_user.avatar || item.receive_user.photo)" mode="aspectFill" class="bc_acatar"></image>
<image :src="item.user.photo" mode="aspectFill" class="bc_acatar"></image>
</view>
<view class="rit weuis">
<view class="title">
<view class="font_32 color333 bold name">
{{tabBarIndex === 0 ? item.other_user.nickname :item.receive_user.nickname }}
{{item.user.nickname }}
</view>
<block v-if="tabBarIndex === 0 ? item.other_user.type !== 'single' :item.receive_user.type !== 'single'">
<block v-if="item.user.type !== 'single'">
<image class="referencesIcon" src="https://image.fulllinkai.com/202207/15/7e78a1dd367f1250d4cba4e85bfd60f1.png" mode="widthFix"></image>
</block>
<view class="font_24 time">{{ item.created_at }}</view>
<block v-if="tabBarIndex === 0 ? item.other_user.type == 'single' : item.receive_user.type == 'single'">
<image v-if="tabBarIndex === 0 ? item.other_user.is_super_rank == 0 : item.receive_user.is_super_rank == 0" class="Vip flo_l bg-img" src="https://images.ufutx.com/202102/04/bfad7e2a8e86cf7912ff280234a35606.png"></image>
<view class="font_24 time">{{ item.create_time }}</view>
<block v-if="item.user.type == 'single'">
<image v-if="item.user.rank_id == 0" class="Vip flo_l bg-img" src="https://images.ufutx.com/202102/04/bfad7e2a8e86cf7912ff280234a35606.png"></image>
<image v-else class="Vip flo_l bg-img" src="https://images.ufutx.com/202102/04/d0913df8b234057229ab3dd102497a50.png"></image>
<view class="age {{tabBarIndex === 0 ? (item.other_user.sex == 1?'sex1':'') : (item.receive_user.sex == 1?'sex1':'') }}">
<image v-if="tabBarIndex === 0 ? item.other_user.sex == 1 : item.receive_user.sex == 1" class="img" src="https://images.ufutx.com/202101/27/1fc8381ccac933612936bb617a5ae906.png" alt=""/>
<view class="age {{item.user.sex == 1?'sex1':''}}">
<image v-if="item.user.sex == 1" class="img" src="https://images.ufutx.com/202101/27/1fc8381ccac933612936bb617a5ae906.png" alt=""/>
<image v-else class="img" src="https://images.ufutx.com/202101/27/f17913a8fc57de75dc0046db6c317b35.png" alt=""/>
<view v-if="tabBarIndex === 0 ? item.other_user.age == null : item.receive_user.age == null">0</view>
<view v-else>{{ tabBarIndex === 0 ? item.other_user.age : item.receive_user.age }}</view>
<view v-if="item.user.age == null">0</view>
<view v-else>{{ item.user.age }}</view>
</view>
</block>
</view>
@ -515,14 +515,20 @@ wepy.page({
methods: {
getList() {
let vm = this
let url = ``
if (vm.tabBarIndex == 0) {
url = `${service.host}/notice/receive/friend/request/list`
} else {
url = `${service.host}/notice/send/friend/request/list`
}
let data = {
page: vm.page
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/friend/request/logs/v2?type=${vm.tabBarIndex === 0 ? 'receive' : 'send'}`, data}).then(({code, data}) => {
vm.$get({url: url, data}).then(({code, data}) => {
if (code === 0) {
data.data.forEach((item) => {
item.created_at = item.created_at.split(' ', 1)
item.create_time = item.create_time.split(' ', 1)
})
if (vm.list.length === 0 || vm.page === 1) {
vm.list = data.data
@ -572,12 +578,10 @@ wepy.page({
}
if (e) {
data = {
id: vm.id,
status: 1
}
} else {
data = {
id: vm.id,
status: -1,
reply: vm.rejectText,
refuse_tag: reject
@ -594,7 +598,7 @@ wepy.page({
}
if (vm.throttle) {
vm.throttle = false
vm.$post({url: `${service.host}/deal/friend/request/v2`, data}).then(({code, data}) => {
vm.$post({url: `${service.host}/notice/deal/friend/request/${vm.id}`, data}).then(({code, data}) => {
if (code == 0) {
if (e) {
vm.$showToast('已添加为好友')
@ -654,12 +658,12 @@ wepy.page({
return
}
if ((vm.tabBarIndex == 0 && e.status != '0') || (vm.tabBarIndex == 1 && e.status != '-1')) {
url = `/pages/home/information?id=${vm.tabBarIndex == 0 ? e.other_user.id : e.receive_user.id}`
url = `/pages/home/information?id=${e.user.id}`
wx.navigateTo({url: url})
return
}
// 好友申请是否已经真人认证
if (e.other_user.is_real_approved != 1) {
if (e.user.is_real_approved != 1) {
vm.approveTips = true
vm.approveState = true
}
@ -670,16 +674,15 @@ wepy.page({
// 好友申请获取申请用户数据
vm.msg = e.message
vm.id = e.id
vm.name = e.other_user.nickname
vm.sex = e.other_user.sex
vm.userId = e.other_user.id
vm.userType = e.other_user.type
vm.pic = e.other_user.avatar || e.other_user.photo
vm.name = e.user.nickname
vm.sex = e.user.sex
vm.userId = e.user.id
vm.userType = e.user.type
vm.pic = e.user.photo
vm.applyForShow = true
},
jumpDetailPath(e) {
let vm = this
wx.navigateTo({url: `/pages/home/information?id=${vm.tabBarIndex == 0 ? e.other_user.id : e.receive_user.id}`})
wx.navigateTo({url: `/pages/home/information?id=${e.user.id}`})
}
},
// 上拉获取更多数据

View File

@ -724,7 +724,7 @@ wepy.page({
// 获取群成员信息
getMembers() {
let vm = this
vm.$post({url: `${service.host}/chat/group/detail?team_id=${vm.otherUserId}`}).then(({code, data}) => {
vm.$post({url: `${service.host}/team/${vm.otherUserId}/detail`}).then(({code, data}) => {
if (code === 0) {
// 第一次进入页面的时候才请求历史消息
if (!vm.membersData.id) {

View File

@ -141,8 +141,8 @@ page {
<view class="ui-member-block" v-for="(item,index) in detail.members" :key="index">
<block v-if="hidden">
<view class="ui-member-box">
<image @tap.stop="jumpPath(item)" class="ui-member-pic" :src="item.avatar === 'https://image.fulllinkai.com/202207/04/1fa9a906b956efa26852fb685a845fff.png?x-oss-process=style/scale1' ? defaultImg : item.avatar" mode="aspectFill"></image>
<view class="ui-member-name color-666 font_22 ellipsis_1">{{item.pivot.nick ? item.pivot.nick :item.nickname}}</view>
<image @tap.stop="jumpPath(item)" class="ui-member-pic" :src="item.photo === 'https://image.fulllinkai.com/202207/04/1fa9a906b956efa26852fb685a845fff.png?x-oss-process=style/scale1' ? defaultImg : item.photo" mode="aspectFill"></image>
<view class="ui-member-name color-666 font_22 ellipsis_1">{{item.nickname}}</view>
</view>
</block>
</view>
@ -163,24 +163,24 @@ page {
<view class="ui-group-detail">
<view class="ui-detail-list">
<view class="ui-detail-title bold font30 color-333">群聊头像</view>
<image class="ui-detail-pic" :src="detail.icon" mode="aspectFill"></image>
<image class="ui-detail-pic" :src="detail.team.icon" mode="aspectFill"></image>
</view>
<view class="ui-detail-line"></view>
<view class="ui-detail-list">
<view class="ui-detail-title bold font30 color-333">群聊名称</view>
<view class="ui-detail-name ellipsis_1 font30 color-666">{{ detail.tname }}</view>
<view class="ui-detail-name ellipsis_1 font30 color-666">{{ detail.team.tname }}</view>
</view>
<view class="ui-detail-line"></view>
<view class="ui-detail-list" v-if="detail.is_join == 1">
<view class="ui-detail-title bold font30 color-333">我在本群的昵称</view>
<view class="ui-detail-name ellipsis_1 font30 color-666">
<input class=" ui-detail-name-text" adjust-position="{{true}}" type="text" confirm-type="done" placeholder="请输入不超过12个字符" @enter="changeGroupName" maxlength="12" cursor-spacing="20" v-model="detail.user_team.nick" @confirm="changeGroupName"/>
<input class=" ui-detail-name-text" adjust-position="{{true}}" type="text" confirm-type="done" placeholder="请输入不超过12个字符" @enter="changeGroupData" maxlength="12" cursor-spacing="20" v-model="detail.user_team.nick" @confirm="changeGroupData"/>
<image id="img" class="ui-detail-name-icon" src="https://image.fulllinkai.com/202308/11/54e725db8277cce7c2803070aa3eb289.png" mode="aspectFill" lazy-load="true"></image>
</view>
</view>
<view class="ui-detail-line"></view>
<view class="font30 color-333 bold">群聊简介</view>
<view class="ui-detail-intro color-666 font_26">{{ detail.intro }}</view>
<view class="ui-detail-intro color-666 font_26">{{ detail.team.intro }}</view>
</view>
<view class="ui-group-detail" v-if="detail.is_join == 1">
<view class="ui-detail-list">
@ -237,7 +237,7 @@ wepy.page({
getDetail() {
let vm = this
vm.$showLoading('')
vm.$post({url: `${service.host}/chat/group/detail?team_id=${vm.id}`}).then(({code, data}) => {
vm.$get({url: `${service.host}/team/${vm.id}/detail`}).then(({code, data}) => {
if (code === 0) {
vm.detail = data
}
@ -247,11 +247,12 @@ wepy.page({
console.log(err)
})
},
// 修改群昵称
changeGroupName() {
// 修改群信息
changeGroupData() {
let vm = this
let data = {
team_id: vm.id,
show_other_nick: vm.detail.user_team.show_other_nick,
is_top: vm.detail.user_team.is_top,
nick: vm.detail.user_team.nick
}
if (!vm.detail.user_team.nick) {
@ -261,10 +262,10 @@ wepy.page({
if (vm.throttle) {
vm.throttle = false
vm.$showLoading('更改中')
vm.$post({url: `${service.host}/chat/group/update/nick`, data}).then(({code, data}) => {
vm.$put({url: `${service.host}/team/${vm.id}/update`, data}).then(({code, data}) => {
wx.hideLoading()
if (code == 0) {
vm.$showToast(`群昵称已修改`)
vm.$showToast(`群信息已修改`)
}
vm.throttle = true
}).catch(() => {
@ -273,27 +274,17 @@ wepy.page({
})
}
},
// 是否展示成员昵称
// 监听群昵称是否显示
changeShowNick(e) {
let vm = this
let data = {
team_id: vm.id,
show_other_nick: e.$wx.detail.value ? 1 : 0
}
if (vm.throttle) {
vm.throttle = false
vm.$showLoading('')
vm.$post({url: `${service.host}/chat/group/update/show_other_nick`, data}).then(({code, data}) => {
if (code == 0) {
vm.detail.user_team.show_other_nick = e.detail.value ? 1 : 0
}
wx.hideLoading()
vm.throttle = true
}).catch(() => {
wx.hideLoading()
vm.throttle = true
})
}
vm.detail.user_team.show_other_nick = e.$wx.detail.value ? 1 : 0
vm.changeGroupData()
},
// 监听置顶
changeShowTop(e) {
let vm = this
vm.detail.user_team.is_top = e.$wx.detail.value ? 1 : 0
vm.changeGroupData()
},
// 消息免打扰设置
changeMutenotiType(e) {
@ -343,7 +334,7 @@ wepy.page({
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/chat/group/out?team_id=${vm.id}`}).then(({code, data}) => {
vm.$post({url: `${service.host}/team/${vm.id}/leave`}).then(({code, data}) => {
if (code == 0) {
wx.switchTab({url: '/pages/tabBar/news'})
}
@ -364,7 +355,7 @@ wepy.page({
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/chat/group/join?team_id=${vm.id}`}).then(({code, data}) => {
vm.$post({url: `${service.host}/team/${vm.id}/join`}).then(({code, data}) => {
if (code == 0) {
vm.getDetail()
}

View File

@ -125,7 +125,7 @@ page {
<image v-if="list.length == 0 && loading" class="ui-no-data-icon" src="https://images.ufutx.com/202104/13/1737964f7c98cbf65d728137dc2792eb.png" mode="aspectFill"></image>
<block v-else>
<view class="ui-list-items" v-for="(item,index) in list" :key="index">
<view class="font_24 color999 text-center ui-pb-24 ui-pt-4">{{item.created_at}}</view>
<view class="font_24 color999 text-center ui-pb-24 ui-pt-4">{{item.create_time}}</view>
<view class="ui-item-data">
<view class="ui-relative">
<view class="ui-dist ui-dot" v-if="item.status == 0"></view>
@ -199,12 +199,12 @@ wepy.page({
page: vm.page
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/notices`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/notice/system/list`, data}).then(({code, data}) => {
if (code === 0) {
data.data.forEach((item) => {
let endTime = item.created_at.replace(/-/g, '/')
let endTime = item.create_time.replace(/-/g, '/')
let recordTime = parseFloat(new Date(endTime).getTime()) / 1000
item.created_at = getDiffTime(recordTime, false)
item.create_time = getDiffTime(recordTime, false)
})
if (vm.list.length === 0 || vm.page === 1) {
vm.list = data.data
@ -277,7 +277,7 @@ wepy.page({
return
}
if (e.type == 'follow' || e.type == 'friend' || e.type == 'remind_profile') {
url = `/pages/home/information?id=${e.other_user.id}`
url = `/pages/home/information?id=${e.user_id}`
} else if (e.type == 'temp') {
url = `/pages/users/tempMember`
} else if (e.type == 'moment' || e.type == 'change_moment_topic') {

View File

@ -319,7 +319,7 @@ page {
<block v-else>
<view class="m_fans_lst f-fc">
<view class="u_fans_lst" v-for="(item,index) in fansList" :key="index" @tap="jumpPath(item, index)">
<image class="u_fans_img {{index >= 3 && user.rank_id == 0 ? 'blur' : ''}}" :src="item.avatar" mode="aspectFill"></image>
<image class="u_fans_img {{index >= 3 && user.rank_id == 0 ? 'blur' : ''}}" :src="item.photo" mode="aspectFill"></image>
<image class="ui-fans-icon" v-if="item.hidden_profile != 'NONE'" src="https://image.fulllinkai.com/202203/22/7a244fa7e39105c3f9cb9d951dcd5664.png" mode="aspectFit"></image>
<view class="u_vclst_ct">
<view class="u_vclst_name white bold font_24 ellipsis_1">{{item.nickname}}</view>
@ -403,7 +403,7 @@ wepy.page({
size: 15
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/user/preview/histroies`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/preview/list`, data}).then(({code, data}) => {
if (code === 0) {
data.data.forEach((item) => {
item.created_at = utils.commentTimeHandle(item.created_at)
@ -438,7 +438,7 @@ wepy.page({
size: 15
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/followers`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/follow/fans/list`, data}).then(({code, data}) => {
if (code === 0) {
data.data.forEach((item) => {
item.nickname = `${item.nickname.substring(0, 1)}***`

View File

@ -126,15 +126,15 @@ page {
height: 124rpx;
width: 124rpx;
right: 30rpx;
bottom: 180rpx;
bottom: 320rpx;
text-align: center;
z-index: 1000;
}
.m_returnTop {
position: fixed;
right: 62rpx;
bottom: 200rpx;
right: 46rpx;
bottom: 160rpx;
z-index: 99;
-webkit-transition: opacity 1s;
transition: opacity 1s;
@ -181,7 +181,7 @@ page {
<view class="ui-hotTopic-box">
<scroll-view scroll-x="true" class="ui-scroll">
<block v-for="(item,index) in hotTopics" :key="index">
<view v-if="item.is_hot == 1" class="cu-avatar ui-main" style="background-image:url({{ item.back_image }});" @tap.stop="jumpPath(`/pages/dynamic/hotTopic?id=${item.id}`)">
<view class="cu-avatar ui-main" style="background-image:url({{ item.back_image }});" @tap.stop="jumpPath(`/pages/dynamic/hotTopic?id=${item.id}`)">
<view>#{{ item.name }}</view>
<view>{{ item.moment_count }} 动态</view>
<view class="ui-mask"></view>
@ -194,7 +194,7 @@ page {
{{ item }}
</view>
</view>
<dynamicList :dynamicList="dynamicList" @changeSelect="changeSelect" :from="'dynamic'"></dynamicList>
<dynamicList :dynamicList="dynamicList" @changeSelect="changeSelect" @signInVerify="signInVerify" :from="'dynamic'"></dynamicList>
</scroll-view>
</swiper-item>
<swiper-item wx:key="id" style="-webkit-overflow-scrolling:touch"></swiper-item>
@ -207,7 +207,8 @@ page {
<image class="u_returnTop_img" @tap.stop="BackTop" src="https://images.ufutx.com/202106/23/f0d10551dc5d3399cc7f15805cf04f4f.png" mode="scaleToFill" lazy-load="false"></image>
</view>
<!--动态操作功能selectData选择的动态数据、selectIndex选中的动态下标、admin是否管理员、from来自哪个父组件-->
<dynamicOperation :selectData="selectData" :chooseShow.sync="chooseShow" :selectIndex="selectIndex" :admin="admin" :from="'dynamic'" @hideModal="hideModal" @operation="changeOperation"></dynamicOperation>
<dynamicOperation :selectData="selectData" :chooseShow.sync="chooseShow" :selectIndex="selectIndex" :admin="admin" :from="'dynamic'" @hideModal="hideModal" @operation="changeOperation" @signInVerify="signInVerify"></dynamicOperation>
<loginDialog :loginShow="loginShow" @hiddenLogin="hiddenLogin"></loginDialog>
</template>
<script>
@ -222,6 +223,7 @@ wepy.page({
mixins: [https, base],
data: {
loginShow: false,
chooseShow: false,
no_more: false,
loading: false,
@ -257,11 +259,11 @@ wepy.page({
page: vm.page
}
vm.$showLoading('加载中')
vm.$get({url: `${service.host}/moments/v2?is_hot=${vm.dynamicTabsIndex == 0 ? 1 : 0}`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/list?is_hot=${vm.dynamicTabsIndex == 0 ? 1 : 0}`, data}).then(({code, data}) => {
if (code === 0) {
if (data.data && data.data.length > 0) {
data.data.forEach((item, index) => {
item.created_at = commentTimeHandle(item.created_at)
item.create_time = commentTimeHandle(item.create_time)
let sty = typeof (item.photos)
if (sty == 'string') {
item.photos = JSON.parse(item.photos)
@ -295,7 +297,7 @@ wepy.page({
// 获取热门话题
getHotTopics() {
let vm = this
vm.$get({url: `${service.host}/moment/topics`}).then(({code, data}) => {
vm.$get({url: `${service.host}/moment/topic/list`}).then(({code, data}) => {
if (code === 0) {
vm.hotTopics = data.data
}
@ -382,7 +384,21 @@ wepy.page({
vm.showBackTopBtn = false
},
jumpPath(url) {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
wx.navigateTo({url: url})
},
signInVerify() {
let vm = this
vm.loginShow = true
},
hiddenLogin() {
let vm = this
vm.loginShow = false
}
},
// 上拉获取更多数据
@ -424,6 +440,7 @@ backgroundColorTop: '#ffffff',
backgroundColorBottom: '#ffffff',
usingComponents: {
dynamicOperation: '~@/components/dynamicOperation',
loginDialog: '~@/components/loginDialog',
dynamicList: '~@/components/dynamicList'
}
}

View File

@ -4,179 +4,319 @@ page {
background-color: #ffffff;
}
.ui-top-menu-list{
padding: 0 20rpx;
margin: 30rpx 0 20rpx 0;
.ui-home{
padding-bottom: 140rpx;
}
.ui-top-menu-item{
width: 25%;
.ui-top-up{
width: 174rpx;
height: 36rpx;
display: block;
}
.ui-top-menu-icon{
width: 120rpx;
height: 120rpx;
.ui-top-box{
display: fiex;
overflow-x: auto;
margin-left: 6rpx;
.ui-top-menu-count{
position: absolute;
top: 12rpx;
right: 2rpx;
margin: auto;
width: 36rpx;
height: 36rpx;
line-height: 30rpx;
border-radius: 50%;
font-size: 22rpx;
color: #ffffff;
background: #F1013D;
border: 4rpx solid #ffffff;
}
.ui-top-bg{
flex-shrink: 0;
margin-right: -20rpx;
width: 248rpx;
height: 328rpx;
background-image: url("https://image.fulllinkai.com/202409/24/420219e731c8a9cd64cf115f42192180.png");
background-position: center;
background-size: cover;
background-repeat: no-repeat;
.ui-top-user-pic{
width: 132rpx;
height: 132rpx;
display: block;
border-radius: 50%;
margin: 46rpx auto 16rpx auto;
}
.ui-top-menu-title{
margin-top: -20rpx;
.ui-top-user-nam{
width: 168rpx;
margin: 0 auto;
}
.ui-top-city{
max-width: 110rpx;
}
}
}
.ui-container{
.ui-touch-item {
display: flex;
justify-content: space-between;
width: 100%;
overflow: hidden;
padding: 24rpx 0 24rpx 30rpx;
}
.ui-prefecture-title{
padding: 24rpx 0 20rpx 30rpx;
}
.ui-content {
width: 100%;
margin-right: 0;
-webkit-transition: all 0.4s;
transition: all 0.4s;
-webkit-transform: translateX(90px);
transform: translateX(90px);
margin-left: -90px;
overflow: hidden;
position: relative;
.ui-prefecture-box{
display: flex;
overflow-x: auto;
margin-left: 30rpx;
.ui-messageBox {
margin-top: 2rpx;
margin-left: 16rpx;
.ui-prefecture-item{
width: 270rpx;
height: 180rpx;
border-radius: 16rpx;
margin-right: 16rpx;
flex-shrink: 0;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
.ui-is-top{
margin-left: 16rpx;
padding-left: 8rpx;
width: 76rpx;
height: 32rpx;
background: linear-gradient(90deg, #FFD18D 0%, #FFA564 100%);
border-radius: 8rpx;
line-height: 32rpx;
}
.ui-name {
width: 400rpx;
}
.ui-message {
width: 524rpx;
}
}
.ui-unreadBox {
.ui-prefecture-mask{
width: 270rpx;
height: 180rpx;
border-radius: 16rpx;
background: rgba(0, 0, 0, 0.1);
position: absolute;
right: 30rpx;
top: 0;
overflow: hidden;
left: 0;
z-index: 1;
}
}
}
.ui-lastTime {
margin-top: 10rpx;
}
.ui-referrals-box{
padding: 52rpx 30rpx 0 30rpx;
.ui-no-disturbing {
width: 32rpx;
height: 32rpx;
margin-top: 12rpx;
}
.ui-require-icon{
width: 220rpx;
height: 48rpx;
display: block;
margin-top: -8rpx;
}
}
.ui-unreadNum, .ui-unreadNum_1 {
float: right;
width: 28rpx;
height: 28rpx;
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
font-size: 20rpx;
background: #f1013D;
color: #fff;
margin-top: 12rpx;
}
.box_swiper {
transform: translateY(0);
.ui-unreadNum_1 {
width: 44rpx;
border-radius: 14rpx;
.card-swiper{
min-height: 900rpx !important;
margin-top: -16rpx;
swiper-item{
width: 640rpx !important;
left: 30rpx;
padding: 0 12zrpx;
}
}
.card-swiper swiper-item.cur .swiper-item, .swiper-item{
transition: all .2s ease-in 0s;
min-height: 828rpx !important;
border-radius: 28rpx !important;
transform: translateY(0);
box-shadow: 4rpx 8rpx 28rpx 0 rgba(0, 0, 0, 0.06);
overflow: hidden;
backface-visibility: hidden;
}
.t_title{
width: 90%;
margin: auto;
padding: 24rpx 12rpx;
border-bottom: 2rpx solid #F8F8F8;
text-align: center;
}
.t_dot{
width: 48rpx;
height: 12rpx;
background: #FF5380;
border-radius: 9px;
margin: auto auto 12rpx auto;
}
.t_r_btn{
width: 312rpx;
height: 80rpx;
background: #FFF4F7;
border-radius: 40rpx;
color: #F33B6C;
margin: 12rpx auto;
._icon{
width: 32rpx;
height: auto;
margin-right: 12rpx;
}
}
.t_bg{
width: 100%;
height: 600rpx;
margin-top: -82rpx;
background-image: url("https://image.fulllinkai.com/202206/09/07e06b19c240c8903586a03f6d935990.png");
background-size: cover;
}
.t_btn {
width: 416rpx;
height: 72rpx;
line-height: 72rpx;
background: linear-gradient(270deg, #FEB8BD 0%, #FE8992 100%);
box-shadow: 0 4rpx 20rpx 0 rgba(254, 154, 162, 0.45);
border-radius: 36rpx;
margin: auto;
color: white;
}
.bc_img{
width: 100%;
height: 640rpx;
background-size: cover;
background-position: top;
background-image: url("https://image.fulllinkai.com/202204/01/3949b098e12738b067d665fe95e0d949.png");
border-top-left-radius: 24rpx !important;
border-top-right-radius: 24rpx !important;
transform: translateY(0);
}
.d_user_data{
padding: 0 22rpx;
.reality_icon,.real_icon,.vip_icon{
width: 80rpx;
height: auto;
margin-right: 10rpx;
}
.vip_icon{
width: 32rpx;
margin-left: 10rpx
}
.address {
.address_icon {
width: 20rpx;
height: 24rpx;
margin-right: 4rpx;
}
}
}
.ui-del-box {
background: #f1013D;
width: 90px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: #fff;
-webkit-transform: translateX(90px);
transform: translateX(90px);
-webkit-transition: all 0.4s;
transition: all 0.4s;
.lastPic{
transform: rotateY(26deg);
box-shadow: none;
}
.touch-move-active .ui-content,
.touch-move-active .ui-del-box {
-webkit-transform: translateX(0);
transform: translateX(0);
.noneBor{
box-shadow: none;
}
.nextPic {
transform: rotateY(26deg);
}
}
</style>
<template>
<view class="ui-news">
<cuCustom></cuCustom>
<view class="ui-top-menu-list f-fbc">
<view class="text-center ui-top-menu-item ui-relative" v-for="(item,index) in menuList" :key="index" @tap="jumpPath(item)">
<image class="ui-top-menu-icon ui-relative" :src="item.icon" mode="aspectFit">
<view class="ui-top-menu-count" wx:if="{{item.count}}">{{item.count}}</view>
</image>
<view class="color666 font_24 ui-top-menu-title">{{item.title}}</view>
<view class="ui-home">
<cuCustom :searchName="'寻找心仪的Ta'" @tap="jumpPath('/pages/home/searchUsers')"></cuCustom>
<view class="f-fbc ui-pl-30 ui-pt-40 ui-pr-30">
<view class="font_34 color333 bold">置顶推荐</view>
<image class="ui-top-up" src="https://image.fulllinkai.com/202409/24/9c5a93366fc9e24dec02ba62c87ecf15.png" mode="widthFix" @tap="applyTopUp" v-if="topUpState != 2"></image>
</view>
<view class="f-fcl ui-top-box">
<view class="ui-top-bg" v-for="(item,index) in topList" :key="index" @tap="jumpPath(`/pages/home/information?id=${item.id}`)">
<image class="ui-top-user-pic" :src="item.photo" mode="aspectFill"></image>
<view class="ui-top-user-nam ellipsis_1 font_30 bold color333 text-center">{{item.nickname}}</view>
<view class="f-fcc font_24 color666">
<view>{{item.year}}<text decode>&nbsp;·&nbsp;</text></view>
<view class="ellipsis_1 ui-top-city">{{item.city}}</view>
</view>
</view>
</view>
<view class="ui-container">
<view class="ui-touch-item" :class="{'touch-move-active' : item.isTouchMove}" data-index="{{index}}" bindtouchstart="touchstart" bindtouchmove="touchmove" v-for="(item,index) in list" :key="index" @tap="jumpChatPath(item)">
<view class="ui-content">
<image class="cu-avatar round lg flo_l" :src="item.icon" mode="aspectFit" @tap.stop="jumpDetailPath(item)"></image>
<view class="ui-messageBox flo_l">
<view class="font_30 color333 ui-name ellipsis_1 f-fcl">
{{item.title}}
<view v-if="item.is_top == 1" class="ui-is-top font_20 white">已置顶</view>
<view class="ui-prefecture-title font_34 color333 bold">专区推荐</view>
<view class="f-fcl ui-prefecture-box">
<view class="ui-prefecture-item ui-relative" :style="{backgroundImage:'url('+(item.pic)+');'}" v-for="(item,index) in prefectureList" :key="index" @tap="jumpPath(`/pages/home/singleSquare?id=${item.id}&title=${item.title}`)">
<view class="ui-prefecture-mask font_28 colorF bold f-fcc">{{item.title}}</view>
</view>
</view>
<view class="f-fbc ui-referrals-box">
<view class="font_34 color333 bold">为你推荐</view>
<image class="ui-require-icon" src="https://image.fulllinkai.com/202409/24/4f52d791e75a7e89a5696754f37e51f7.png" mode="widthFix" @tap="jumpPath('/pages/users/selfTextarea?text=期望对方&placeText=写下你心中理想的对象')"></image>
</view>
<view class="box_swiper">
<swiper class="card-swiper" bindchange="cardSwiper" :current="cardCur" previousMargin="-2px" nextMargin="10px">
<swiper-item v-for="(item,index) in referrals" :key="index" class="{{cardCur==index?'cur':'noneBor'}} {{cardCur==index+1?'lastPic':''}} {{cardCur==index-1?'nextPic':''}}">
<block v-if="item.type && item.type == 'time'">
<view class="swiper-item radius shadow">
<view class="t_title color999 font_26">福恋会在每天 12 点为你推荐 7 个用户</view>
<view class="text-center ui-mt-26">
<view class="t_dot"></view>
<view class="font_28 color666">下次推荐时间</view>
</view>
<view class="text-center bold font_52 ui-mt-24" style="letter-spacing: 6rpx;" v-if="countdown">
{{ countdown.h}}:{{ countdown.m}}:{{ countdown.s}}
</view>
<block v-if="countdown.d == '0' && countdown.h == '00' && countdown.m == '00' && countdown.s == '00'">
<view class="t_r_btn text-center f-fcc" @tap="refreshFn">
<image src="https://image.fulllinkai.com/202206/09/c68f69b89269c604a3671b81ff1c14a5.png" class="_icon" mode="widthFix"></image>
手动更新每日推荐
</view>
</block>
<block v-else>
<view class="t_r_btn text-center f-fcc" @tap="goBackFirst">
<image src="https://image.fulllinkai.com/202206/09/c68f69b89269c604a3671b81ff1c14a5.png" class="_icon" mode="widthFix"></image>
回看今日推荐
</view>
</block>
<view class="t_bg"></view>
<view class="t_btn text-center" @tap="goto_2('/pages/users/qualitySingle','other')">点击查看更多优质单身</view>
</view>
<view class="ui-message ellipsis_1 font_24 color666">
<span v-if="item.at_show" class="red">[有人@你]</span>
{{item.content}}
</block>
<block v-else-if="item.type && item.type == 'activity'">
<view class="swiper-item radius shadow activityCard" @tap="goto_2(item.path, item.type)">
<view class="bc_img" :style="{backgroundImage:'url('+(item.pic)+');'}"></view>
</view>
</block>
<block v-else>
<view class="swiper-item radius shadow" @tap="jumpPath(`/pages/home/information?id=${item.id}`)">
<view class="bc_img" :style="{backgroundImage:'url('+(item.pic)+');'}" @tap="goto_3('/pages/home/information?id={{item.id}}','user')"></view>
<view class="f-fbc d_user_data ui-mt-18">
<view class="f-fbc ">
<span class="bold color333 font_32 ellipsis_1" style="max-width: 30vw;">{{ item.nickname }}</span>
<image src="https://image.fulllinkai.com/202206/10/d0913df8b234057229ab3dd102497a50.png" class="vip_icon" mode="widthFix" v-if="item.rank_id> 0"></image>
<image src="https://image.fulllinkai.com/202206/10/bfad7e2a8e86cf7912ff280234a35606.png" class="vip_icon" mode="widthFix" v-else></image>
<image src="https://image.fulllinkai.com/202206/10/5cb84879a0dc81757dc526ebeb61bc0e.png" class="real_icon" mode="widthFix" v-if="item.is_approved == 1"></image>
<image src="https://image.fulllinkai.com/202206/10/279ade8a42810a91eb80a0717823dffa.png" class="reality_icon" mode="widthFix" v-if="item.is_real_approved == 1"></image>
</view>
<view class="address f-fbc">
<image src="https://image.fulllinkai.com/202206/07/817a393539ee854226eef79defef2fc4.png" class="address_icon" mode="aspectFit"></image>
<span class="font_24">{{ item.city }}</span>
</view>
</view>
<view class="f-fbc d_user_data ui-mt-8">
<span class="color333 font_28 ellipsis_1">{{ item.year + ' · ' }}{{item.stature + 'cm · '}}{{ item.degree ? item.degree + ' · ' : '' }}{{ item.industry_sub ? item.industry_sub : '' }}</span>
</view>
<view class="f-fbc d_user_data ui-mt-6">
<span class="color666 font_28 ellipsis_1" style="width: 80vw;">{{ item.introduction || '介绍:未填写' }}</span>
</view>
</view>
</block>
</swiper-item>
</swiper>
</view>
<view class="ui-prefecture-title font_34 color333 bold" v-if="squareList && squareList.length > 0">单身广场</view>
<block v-for="(item,index) in squareList" :key="index">
<view class="box_swiper ui-pl-30 ui-pr-30 ui-mb-40">
<view class="swiper-item radius shadow" @tap="jumpPath(`/pages/home/information?id=${item.id}`)">
<view class="bc_img" :style="{backgroundImage:'url('+(item.photo)+');'}"></view>
<view class="f-fbc d_user_data ui-mt-18">
<view class="f-fbc ">
<span class="bold color333 font_32 ellipsis_1" style="max-width: 30vw;">{{ item.nickname }}</span>
<image src="https://image.fulllinkai.com/202206/10/d0913df8b234057229ab3dd102497a50.png" class="vip_icon" mode="widthFix" v-if="item.rank_id"></image>
<image src="https://image.fulllinkai.com/202206/10/bfad7e2a8e86cf7912ff280234a35606.png" class="vip_icon" mode="widthFix" v-else></image>
<image src="https://image.fulllinkai.com/202206/10/5cb84879a0dc81757dc526ebeb61bc0e.png" class="real_icon" mode="widthFix" v-if="item.is_approved == 1"></image>
<image src="https://image.fulllinkai.com/202206/10/279ade8a42810a91eb80a0717823dffa.png" class="reality_icon" mode="widthFix" v-if="item.is_real_approved == 1"></image>
</view>
<view class="address f-fbc">
<image src="https://image.fulllinkai.com/202206/07/817a393539ee854226eef79defef2fc4.png" class="address_icon" mode="aspectFit"></image>
<span class="font_24">{{ item.city }}</span>
</view>
</view>
<view class="ui-unreadBox color999 text-right">
<view class="ui-lastTime font_22">{{item.last_time}}</view>
<block v-if="item.muteTeam">
<image class="ui-no-disturbing" src="https://image.fulllinkai.com/202406/29/c682c95e835831195a5af75c303a9720.png" mode="widthFix"></image>
</block>
<block v-else>
<view class="ui-unreadNum" v-if="item.new_count && item.new_count <= 99">{{item.new_count}}</view>
<view class="ui-unreadNum_1" v-if="item.new_count && item.new_count > 99">{{item.new_count}}</view>
</block>
<view class="f-fbc d_user_data ui-mt-8">
<span class="color333 font_28 ellipsis_1">{{ item.year + ' · ' }}{{item.stature + 'cm · '}}{{ item.degree ? item.degree + ' · ' : '' }}{{ item.industry_sub ? item.industry_sub : '' }}</span>
</view>
<view class="f-fbc d_user_data ui-mt-6">
<span class="color666 font_28 ellipsis_1" style="width: 80vw;">{{ item.introduction || '介绍:未填写' }}</span>
</view>
</view>
<view class="ui-del-box">退出</view>
</view>
</view>
</block>
<loginDialog :loginShow="loginShow" @hiddenLogin="hiddenLogin"></loginDialog>
</view>
</template>
@ -191,114 +331,81 @@ wepy.page({
mixins: [https, base],
data: {
menuList: [
{
icon: 'https://image.fulllinkai.com/202201/21/a2a7445a8b70694056dd7795ef5ecc4e.png',
title: '系统通知',
path: '/pages/news/systemNews',
count: ''
},
{
icon: 'https://image.fulllinkai.com/202201/21/1d8c26aa4e48a965bab9eb000db8d054.png',
title: '好友申请',
path: '/pages/news/friendRequest',
count: ''
},
{
icon: 'https://image.fulllinkai.com/202201/21/1715406efd38dfe258b23f632b9c16eb.png',
title: '访客/粉丝',
path: '/pages/news/visitor?type=fans',
count: ''
},
{
icon: 'https://image.fulllinkai.com/202201/21/9571a0bdddf66ea097eecd5a4a601436.png',
title: '我看过谁',
path: '/pages/news/review?type=review&title=我看过谁',
count: ''
}
],
index: null, // 滑动删除聊天消息下标
groupSessionsCount: [], // 群聊消息未读数
teamAtList: [], // 群聊@
list: [] // 消息列表数据
loginShow: false,
throttle: true,
topUpState: null,
topList: [], // 置顶推荐
prefectureList: [], // 专区推荐
squareList: [], // 单身广场
squarePage: 1,
no_more: false,
cardCur: 0, // 为你推荐轮播下标
referrals: [ // 为你推荐
{name: '焉然', pic: 'https://image.fulllinkai.com/202409/24/ccd8c3e29b9bdfc89907d92584497154.jpeg'},
{name: 'Sady', pic: 'https://image.fulllinkai.com/202409/24/ccd8c3e29b9bdfc89907d92584497154.jpeg'},
{name: 'Sunny', pic: 'https://image.fulllinkai.com/202409/24/ccd8c3e29b9bdfc89907d92584497154.jpeg'},
{name: '焉然', pic: 'https://image.fulllinkai.com/202409/24/ccd8c3e29b9bdfc89907d92584497154.jpeg'},
{name: '智锋', pic: 'https://image.fulllinkai.com/202409/24/ccd8c3e29b9bdfc89907d92584497154.jpeg'},
{name: '志辉', pic: 'https://image.fulllinkai.com/202409/24/ccd8c3e29b9bdfc89907d92584497154.jpeg'},
{name: '焉然', pic: 'https://image.fulllinkai.com/202409/24/ccd8c3e29b9bdfc89907d92584497154.jpeg'}
]
},
methods: {
getList() {
// 获取置顶推荐用户
getTopUser() {
let vm = this
let data = {
page: vm.page
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/message/sessionV2`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/area/top/users`}).then(({code, data}) => {
if (code === 0) {
vm.teamAtList = wx.getStorageSync('teamAtList') || []
vm.groupSessionsCount = wx.getStorageSync('teamsSessionsCount') || []
vm.menuList[0].count = data.system_count
vm.menuList[1].count = data.friend_count
vm.menuList[2].count = data.follow_count + data.preview_count
let {session} = data
let arrList = []
if (session.data && session.data.length > 0) {
session.data.forEach((item) => {
if (item.chat_type == 'group_chat') {
arrList.push({
chat_type: item.chat_type,
icon: item.team.icon,
title: item.team.tname,
is_top: item.is_top,
content: item.last_message ? item.last_message.body.msg ? item.last_message.other_user.nickname ? (item.last_message.other_user.nickname + '' + item.last_message.body.msg) : (item.last_message.other_user.name + '' + item.last_message.body.msg) : '' : '',
last_time: item.last_message ? item.last_message.last_time : '',
id: item.team_id,
hidden_profile: 'NONE',
msgId: item.id,
isTouchMove: false,
new_count: wx.getStorageSync('muteNotList') && wx.getStorageSync('muteNotList').length > 0 ? 0 : vm.getGroupCount(item.team_id)
})
} else {
if (item.other_user) {
arrList.push({
chat_type: item.chat_type,
icon: item.other_user.avatar || item.other_user.circle_avatar,
title: item.other_user.nickname || item.other_user.name,
is_top: item.is_top,
content: item.last_message ? item.last_message.content : '',
last_time: item.last_message ? item.last_message.last_time : '',
id: item.other_user.id,
hidden_profile: item.other_user.hidden_profile,
type: item.other_user.type,
msgId: item.id,
isTouchMove: false,
new_count: item.new_count
})
}
}
vm.topList = data || []
}
wx.hideLoading()
}).catch(err => {
wx.hideLoading()
console.log(err)
})
},
// 获取专区推荐
getArea() {
let vm = this
vm.$get({url: `${service.host}/area/class`}).then(({code, data}) => {
if (code === 0) {
vm.prefectureList = data || []
}
wx.hideLoading()
}).catch(err => {
wx.hideLoading()
console.log(err)
})
},
// 获取每日推荐
getEveryday() {
let vm = this
vm.$get({url: `${service.host}/other/user/recommend`}).then(({code, data}) => {
if (code === 0) {
// vm.topList = data || []
}
wx.hideLoading()
}).catch(err => {
wx.hideLoading()
console.log(err)
})
},
// 获取广场
getSquare() {
let vm = this
vm.$get({url: `${service.host}/other/user/square?page=${vm.squarePage}`}).then(({code, data}) => {
if (code === 0) {
if (vm.squareList.length === 0 || vm.squarePage === 1) {
vm.squareList = data.data
} else {
data.data.map(function (item) {
vm.squareList.push(item)
})
}
vm.list = [...arrList]
// 赋值所在群组已开启消息免打扰字段
if (wx.getStorageSync('muteNotList') && wx.getStorageSync('muteNotList').length > 0) {
let arr = wx.getStorageSync('muteNotList')
arr.forEach((i) => {
vm.list.forEach((j) => {
if (j.chat_type == 'group_chat' && i.teamId == j.id && !j.muteState) {
j.new_count = 0
j.muteTeam = i.muteTeam
j.muteState = true
} else if (j.chat_type == 'group_chat') {
j.new_count = vm.getGroupCount(j.id)
}
})
})
}
console.log(vm.list, '777')
if (vm.list.length < 15 || session.data.length < 15) {
if (vm.squareList.length < 15 || data.data.length < 15) {
vm.no_more = true
}
setTimeout(() => {
vm.loading = true
}, 500)
vm.page++
vm.squarePage++
}
wx.hideLoading()
}).catch(err => {
@ -306,125 +413,108 @@ wepy.page({
console.log(err)
})
},
getNewCount() {
// 申请置顶推荐状态
applyTopUpState () {
let vm = this
vm.$get({url: `${service.host}/new/message/count`}).then(({code, data}) => {
vm.$get({url: `${service.host}/area/top/users/status`}).then(({code, data}) => {
if (code === 0) {
let {new_count} = data
let groupCountList = wx.getStorageSync('teamsSessionsCount') || []
let groupCount = 0
if (groupCountList.length > 0) {
for (let i = 0; i < groupCountList.length; i++) {
groupCount += groupCountList[i].unread
}
}
if ((new_count + groupCount) > 0) {
wx.setTabBarBadge({
index: 0,
text: `${new_count + groupCount}`
})
} else {
wx.removeTabBarBadge({
index: 0
})
}
vm.topUpState = data.status
}
wx.hideLoading()
}).catch(err => {
wx.hideLoading()
console.log(err)
})
},
// 获取群未读数
getGroupCount(id) {
let newCount = this.groupSessionsCount.filter(item => {
return item.id == id
})
if (newCount.length === 0) {
return 0
// 申请置顶推荐
applyTopUp () {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
return newCount[0].unread
},
touchstart (e) {
let vm = this
vm.list.forEach(function (v, i) {
if (v.isTouchMove) { v.isTouchMove = false }
})
vm.startX = e.changedTouches[0].clientX
vm.startY = e.changedTouches[0].clientY
},
touchmove (e) {
let vm = this
vm.index = e.currentTarget.dataset.index
let startX = vm.startX
let startY = vm.startY
let touchMoveX = e.changedTouches[0].clientX
let touchMoveY = e.changedTouches[0].clientY
let angle = vm.angle({ X: startX, Y: startY }, { X: touchMoveX, Y: touchMoveY })
vm.list.forEach(function (v, i) {
v.isTouchMove = false
if (Math.abs(angle) > 30) return
if (i == vm.index) {
v.isTouchMove = touchMoveX <= startX
if (vm.topUpState == 1) {
vm.$showToast('你已申请,等待审核')
return
}
wx.showModal({
title: '温馨提示',
content: '是否确认申请“我也要上推荐”?',
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/area/top/users`}).then((code, data) => {
if (code == 0) {
vm.$showToast('申请已提交')
}
wx.hideLoading()
}).catch(() => {
wx.hideLoading()
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
angle(start, end) {
let _X = end.X - start.X
let _Y = end.Y - start.Y
return 360 * Math.atan(_Y / _X) / (2 * Math.PI)
cardSwiper(e) {
let vm = this
let source = e.$wx.detail.source
if (source == 'autoplay' || source == 'touch') {
vm.cardCur = e.$wx.detail.current
}
},
// 聊天对话
jumpChatPath(e) {
let url = ``
if (e.chat_type === 'group_chat') {
url = `/pages/news/groupChitchat?id=${e.id}&name=${encodeURIComponent(e.title)}&pic=${e.icon}`
} else {
url = `/pages/news/chitchat?id=${e.id}&name=${encodeURIComponent(e.title)}&type=${e.type}&pic=${e.icon}`
jumpPath(url) {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
wx.navigateTo({url: url})
},
// 用户详情
jumpDetailPath(e) {
let url = ``
if (e.chat_type === 'group_chat') {
url = `/pages/news/groupChitchat?id=${e.id}&name=${encodeURIComponent(e.title)}&pic=${e.icon}`
} else {
url = `/pages/home/information?id=${e.id}`
}
wx.navigateTo({url: url})
},
jumpPath(e) {
wx.navigateTo({url: e.path})
hiddenLogin() {
let vm = this
vm.loginShow = false
}
},
// 上拉获取更多数据
onReachBottom() {
let vm = this
if (!vm.no_more) {
vm.getSquare()
}
},
// 下拉刷新
onPullDownRefresh() {
let vm = this
vm.squarePage = 1
vm.no_more = false
vm.getSquare()
},
onShow() {
let vm = this
vm.getList()
vm.getNewCount()
},
created() {}
onLoad() {
let vm = this
vm.getTopUser()
vm.getArea()
vm.getEveryday()
vm.getSquare()
vm.applyTopUpState()
}
})
</script>
<config>
{
navigationBarTitleText: '消息',
navigationBarTitleText: '推荐',
navigationStyle: 'custom',
enablePullDownRefresh: true,
backgroundColorTop: '#ffffff',
backgroundColorBottom: '#ffffff',
usingComponents: {
cuCustom: '~@/components/cuCustom'
cuCustom: '~@/components/cuCustom',
loginDialog: '~@/components/loginDialog',
}
}
</config>

View File

@ -142,15 +142,15 @@ page {
<view class="ui-news">
<cuCustom></cuCustom>
<view class="ui-top-menu-list f-fbc">
<view class="text-center ui-top-menu-item ui-relative" v-for="(item,index) in menuList" :key="index" @tap="close">
<view class="text-center ui-top-menu-item ui-relative" v-for="(item,index) in menuList" :key="index" @tap="jumpPath(item)">
<image class="ui-top-menu-icon ui-relative" :src="item.icon" mode="aspectFit">
<view class="ui-top-menu-count" wx:if="{{item.count}}">{{item.count}}</view>
<view class="ui-top-menu-count" v-if="item.count">{{item.count}}</view>
</image>
<view class="color666 font_24 ui-top-menu-title">{{item.title}}</view>
</view>
</view>
<view class="ui-container">
<view class="ui-touch-item" :class="{'touch-move-active' : item.isTouchMove}" data-index="{{index}}" bindtouchstart="touchstart" bindtouchmove="touchmove" v-for="(item,index) in list" :key="index" @tap="jumpPath(item)">
<view class="ui-touch-item" :class="{'touch-move-active' : item.isTouchMove}" data-index="{{index}}" bindtouchstart="touchstart" bindtouchmove="touchmove" v-for="(item,index) in list" :key="index" @tap="jumpChatPath(item)">
<view class="ui-content">
<image class="cu-avatar round lg flo_l" :src="item.icon" mode="aspectFit" @tap.stop="jumpDetailPath(item)"></image>
<view class="ui-messageBox flo_l">
@ -174,9 +174,11 @@ page {
</block>
</view>
</view>
<view class="ui-del-box">退出</view>
<view v-if="item.chat_type == 'linkmen'" class="ui-del-box" @tap="quitGroup(item, index)">退出</view>
<view v-else class="ui-del-box" @tap="deleteList(item, index)">删除</view>
</view>
</view>
<loginDialog :loginShow="loginShow" @hiddenLogin="hiddenLogin"></loginDialog>
</view>
</template>
@ -191,35 +193,38 @@ wepy.page({
mixins: [https, base],
data: {
loginShow: false,
menuList: [
{
icon: 'https://image.fulllinkai.com/202201/21/a2a7445a8b70694056dd7795ef5ecc4e.png',
title: '系统通知',
path: '/pages/users/myNews',
path: '/pages/news/systemNews',
count: ''
},
{
icon: 'https://image.fulllinkai.com/202201/21/1d8c26aa4e48a965bab9eb000db8d054.png',
title: '好友申请',
path: '/pages/users/friendRequest',
path: '/pages/news/friendRequest',
count: ''
},
{
icon: 'https://image.fulllinkai.com/202201/21/1715406efd38dfe258b23f632b9c16eb.png',
title: '访客/粉丝',
path: '/pages/users/visitorFriendlist?type=fans',
path: '/pages/news/visitor?type=fans',
count: ''
},
{
icon: 'https://image.fulllinkai.com/202201/21/9571a0bdddf66ea097eecd5a4a601436.png',
title: '我看过谁',
path: '/pages/users/review?type=review&title=我看过谁',
path: '/pages/news/review?type=review&title=我看过谁',
count: ''
}
],
index: null, // 滑动删除聊天消息下标
groupSessionsCount: [], // 群聊消息未读数
teamAtList: [], // 群聊@
page: 1,
no_more: false,
list: [] // 消息列表数据
},
methods: {
@ -229,45 +234,41 @@ wepy.page({
page: vm.page
}
vm.$showLoading('加载中...')
vm.$get({url: `${service.host}/message/sessionV2`, data}).then(({code, data}) => {
vm.$get({url: `${service.host}/chat/linkmen`, data}).then(({code, data}) => {
if (code === 0) {
vm.menuList[0].count = data.system_count
vm.menuList[1].count = data.friend_count
vm.menuList[2].count = data.follow_count + data.preview_count
let {session} = data
vm.teamAtList = wx.getStorageSync('teamAtList') || []
vm.groupSessionsCount = wx.getStorageSync('teamsSessionsCount') || []
let arrList = []
if (session.data && session.data.length > 0) {
session.data.forEach((item) => {
if (data.data && data.data.length > 0) {
data.data.forEach((item) => {
if (item.chat_type == 'group_chat') {
arrList.push({
chat_type: item.chat_type,
icon: item.team.icon,
title: item.team.tname,
icon: item.other_photo,
title: item.other_nickname,
is_top: item.is_top,
content: item.last_message ? item.last_message.body.msg ? item.last_message.other_user.nickname ? (item.last_message.other_user.nickname + '' + item.last_message.body.msg) : (item.last_message.other_user.name + '' + item.last_message.body.msg) : '' : '',
last_time: item.last_message ? item.last_message.last_time : '',
id: item.team_id,
content: item.last_user_nickname + '' + item.content,
last_time: item.last_time_str,
id: item.join_to_id,
hidden_profile: 'NONE',
msgId: item.id,
isTouchMove: false,
new_count: wx.getStorageSync('muteNotList') && wx.getStorageSync('muteNotList').length > 0 ? 0 : this.getGroupCount(item.team_id),
path: `/pages/home/groupChitchat?id=${item.team_id}&name=` + encodeURIComponent(`${item.team.tname}`)
new_count: wx.getStorageSync('muteNotList') && wx.getStorageSync('muteNotList').length > 0 ? 0 : vm.getGroupCount(item.join_to_id)
})
} else {
console.log(item.new_count, '///////****')
arrList.push({
chat_type: item.chat_type,
icon: item.other_user ? item.other_user.avatar || item.other_user.circle_avatar : '',
title: item.other_user ? item.other_user.nickname || item.other_user.name : '',
icon: item.other_photo,
title: item.other_nickname,
is_top: item.is_top,
content: item.last_message ? item.last_message.content : '',
last_time: item.last_message ? item.last_message.last_time : '',
id: item.other_user ? item.other_user.id : '',
hidden_profile: item.other_user ? item.other_user.hidden_profile : '',
msgId: item.id,
content: item.content,
last_time: item.last_time_str,
id: item.join_to_id,
hidden_profile: '',
type: item.other_type,
msgId: item.last_id,
isTouchMove: false,
new_count: item.new_count,
path: item.other_user ? `/pages/home/chitchat?id=${item.other_user.id}&name=` + encodeURIComponent(`${item.other_user.nickname ? item.other_user.nickname : item.other_user.name}`) + `&type=${item.other_user.type}` : ''
new_count: item.new_count
})
}
})
@ -283,7 +284,7 @@ wepy.page({
j.muteTeam = i.muteTeam
j.muteState = true
} else if (j.chat_type == 'group_chat') {
j.new_count = this.getGroupCount(j.id)
j.new_count = vm.getGroupCount(j.id)
}
})
})
@ -306,7 +307,7 @@ wepy.page({
getNewCount() {
let vm = this
vm.$get({url: `${service.host}/new/message/count`}).then(({code, data}) => {
vm.$get({url: `${service.host}/notice/count`}).then(({code, data}) => {
if (code === 0) {
let {new_count} = data
let groupCountList = wx.getStorageSync('teamsSessionsCount') || []
@ -332,6 +333,55 @@ wepy.page({
})
},
quitGroup (e, index) {
let vm = this
wx.showModal({
title: '温馨提示',
content: `是否确认退出${e.title}群聊?`,
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/team/${e.id}/leave`}).then(({code, data}) => {
if (code == 0) {
vm.$showToast(`已退出群聊`)
vm.list.splice(index, 1)
}
wx.hideLoading()
}).catch(() => {
wx.hideLoading()
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
// 删除联系人列表
deleteList (e, index) {
let vm = this
wx.showModal({
title: '温馨提示',
content: `是否确认退出${e.title}群聊?`,
success: function (res) {
if (res.confirm) {
vm.$showLoading('')
vm.$post({url: `${service.host}/team/${e.id}/leave`}).then(({code, data}) => {
if (code == 0) {
vm.$showToast(`已删除`)
vm.list.splice(index, 1)
}
wx.hideLoading()
}).catch(() => {
wx.hideLoading()
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
// 获取群未读数
getGroupCount(id) {
let newCount = this.groupSessionsCount.filter(item => {
@ -375,40 +425,74 @@ wepy.page({
return 360 * Math.atan(_Y / _X) / (2 * Math.PI)
},
close () {
console.log('2222222')
this.$app.$options.globalData.nim.team.updateMyMemberInfo({
teamId: '23903306874',
bitConfigMask: 1
})
// 聊天对话
jumpChatPath(e) {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
let url = ``
if (e.chat_type === 'group_chat') {
url = `/pages/news/groupChitchat?id=${e.id}&name=${encodeURIComponent(e.title)}&pic=${e.icon}`
} else {
url = `/pages/news/chitchat?id=${e.id}&name=${encodeURIComponent(e.title)}&type=${e.type}&pic=${e.icon}`
}
wx.navigateTo({url: url})
},
jumpPath(e) {
console.log(e, '8888888888')
wx.navigateTo({
url: `${e.path}&pic=${e.icon}`
})
},
// 用户详情
jumpDetailPath(e) {
wx.navigateTo({
url: `${e.path}&pic=${e.icon}`
})
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
let url = ``
if (e.chat_type === 'group_chat') {
url = `/pages/news/groupChitchat?id=${e.id}&name=${encodeURIComponent(e.title)}&pic=${e.icon}`
} else {
url = `/pages/home/information?id=${e.id}`
}
wx.navigateTo({url: url})
},
jumpPath(e) {
let vm = this
// 校验是否完成注册资料
if (!vm.$signInVerify()) {
vm.loginShow = true
return
}
wx.navigateTo({url: e.path})
},
hiddenLogin() {
let vm = this
vm.loginShow = false
}
},
// 上拉获取更多数据
onReachBottom() {
let vm = this
if (!vm.no_more) {
vm.getList()
}
},
// 下拉刷新
onPullDownRefresh() {
let vm = this
vm.page = 1
vm.no_more = false
vm.getList()
},
onShow() {
this.teamAtList = wx.getStorageSync('teamAtList') || []
this.groupSessionsCount = wx.getStorageSync('teamsSessionsCount') || []
this.getList()
this.getNewCount()
let vm = this
vm.getNewCount()
},
created() {}
onLoad() {
let vm = this
vm.getList()
}
})
</script>
<config>
@ -419,7 +503,8 @@ enablePullDownRefresh: true,
backgroundColorTop: '#ffffff',
backgroundColorBottom: '#ffffff',
usingComponents: {
cuCustom: '~@/components/cuCustom'
cuCustom: '~@/components/cuCustom',
loginDialog: '~@/components/loginDialog',
}
}
</config>

View File

@ -12,8 +12,8 @@ page {
import wepy from '@wepy/core'
import https from '../../mixins/https'
import base from '../../mixins/base'
import {wx_login} from '../../utils/util'
import { IM } from '../../utils/im'
// import {wx_login} from '../../utils/util'
// import { IM } from '../../utils/im'
wepy.page({
config: {},
@ -22,25 +22,29 @@ wepy.page({
data: {},
watch: {},
methods: {
appLogin() {
let vm = this
let app = vm.$app.$options
wx_login().then((e) => {
wx.hideLoading()
let {accid, token} = e.data.im_user
app.globalData.nim = IM(accid, token)
setTimeout(() => {
wx.switchTab({url: `/pages/tabBar/home`})
}, 100)
}).catch(() => {
})
}
// appLogin() {
// let vm = this
// let app = vm.$app.$options
// wx_login().then((e) => {
// wx.hideLoading()
// let {accid, token} = e.data.im_user
// app.globalData.nim = IM(accid, token)
// setTimeout(() => {
// wx.switchTab({url: `/pages/tabBar/home`})
// }, 100)
// }).catch(() => {
// })
// }
},
onLoad() {
let vm = this
vm.appLogin()
// let vm = this
// vm.appLogin()
},
onShow() {
setTimeout(() => {
wx.switchTab({url: `/pages/tabBar/home`})
}, 100)
},
onShow() {},
created() {
}
})

View File

@ -54,8 +54,10 @@ const wx_login = () => {
wx.setStorageSync('mobile', data.user.mobile) // 用户手机号
let userInfo = {
name: data.user.nickname,
avatar: data.user.avatar || 'https://image.fulllinkai.com/202203/09/cc1c73eb1a4941fef25a15cd1ff2f9df.png',
avatar: data.user.photo || 'https://image.fulllinkai.com/202203/09/cc1c73eb1a4941fef25a15cd1ff2f9df.png',
showId: data.user.id,
rank_id: data.user.rank_id,
sex: data.user.sex,
id: data.user.id,
type: data.user.type
}