| | |
| | | <view class="work"> |
| | | <!-- 自定义顶部导航栏 --> |
| | | <!-- <navBarTop :title="'聊天室'"></navBarTop> --> |
| | | |
| | | <view style="height:205rpx;"></view> |
| | | <view class="tab" style="position: fixed;top: 0;width: 100%;height: 205rpx;z-index: 100;"> |
| | | <u-navbar style="position: relative;left: -20rpx;" :is-fixed="false" :border-bottom="false" :is-back="false" title="好友" |
| | | :background="{ background: '#0BB9C8' }" title-color="#fff"> |
| | | <image slot="right" src="/static/images/home/message.png" class="message-icon" mode="widthFix"></image> |
| | | </u-navbar> |
| | | |
| | | <u-navbar style="position: relative;" :is-fixed="false" :border-bottom="false" :is-back="false" title="好友" |
| | | :background="{ background: '#0BB9C8' }" title-color="#fff"> |
| | | <u-icon @click="addFriend" slot="right" class="message-icon" mode="widthFix" name="plus" color="#fff"> |
| | | </u-icon> |
| | | </u-navbar> |
| | | |
| | | <view class="tab"> |
| | | <u-tabs :list="list" :is-scroll="false" :current="current" active-color="#14B9C8" inactive-color="#595959" |
| | | height="100" @change="change" style="background-color:rgba(255,255,255,0.8)"></u-tabs> |
| | | height="100" @change="change"></u-tabs> |
| | | </view> |
| | | <swiper id="swiperBox" :style="{ height: swiperHeight + 'px' }" :current="current" @change="tabsChange"> |
| | | |
| | | <swiper id="swiperBoxPeo" :style="{ height: swiperHeight + 'px' }" :current="current" @change="tabsChange"> |
| | | |
| | | <swiper-item class="swiper-item" v-for="(item, indexs) in list" :key="indexs"> |
| | | <view v-if="indexs == 0" class="main"> |
| | | <div> |
| | | <div class="m-main"> |
| | | <!-- <view class="inTitle">{{Task}}</view> --> |
| | | <view class="inTmain"> |
| | | <contacts v-for="(item,index) in dataListP" :key="index" :Pdata="item" :fromW="indexs" |
| | | @refreshTask="refreshTask"></contacts> |
| | | </view> |
| | | |
| | | <scroll-view scroll-y :scroll-top="scrollTop" style="width: 100%;height: 100%;" |
| | | :refresher-enabled="refresherFlag" :refresher-threshold="threshold" :refresher-triggered="triggered" |
| | | @refresherrefresh="refreshing" @refresherrestore="refresherrestore"> |
| | | |
| | | <view v-if="indexs == 0" class="main"> |
| | | |
| | | <div> |
| | | <div class="m-main"> |
| | | <!-- <view class="inTitle">{{Task}}</view> --> |
| | | <view class="inTmain"> |
| | | <contacts v-for="(item,index) in dataListP" :key="index" :Pdata="item" |
| | | :fromW="indexs" @refreshTask="refreshTask"></contacts> |
| | | </view> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </view> |
| | | <view v-if="indexs == 1" class="main"> |
| | | <div> |
| | | <div class="m-main"> |
| | | <!-- <view class="inTitle">{{Task}}</view> --> |
| | | <view class="inTmain"> |
| | | <contacts v-for="(item,index) in dataListQZ" :key="index" :Pdata="item" :fromW="indexs" |
| | | @refreshTask="refreshTask"></contacts> |
| | | </view> |
| | | </view> |
| | | <view v-if="indexs == 1" class="main"> |
| | | <div> |
| | | <div class="m-main"> |
| | | <!-- <view class="inTitle">{{Task}}</view> --> |
| | | <view class="applys" @click="toFriendRequest"> |
| | | <view class="head-wrap"> |
| | | <image src="../../static/apply.png" class="head" /> |
| | | <view v-if=false class="tip">233</view> |
| | | </view> |
| | | <view class="content-wrap"> |
| | | <text class="name">好友申请</text> |
| | | <text class="mess">若人生只如初见</text> |
| | | </view> |
| | | <view class="data-wrap"> |
| | | <text class="data"></text> |
| | | </view> |
| | | </view> |
| | | <view class="inTmain"> |
| | | <contacts v-for="(item,index) in dataListTXL" :key="index" :Pdata="item" |
| | | :fromW="indexs" @refreshTask="refreshTask"></contacts> |
| | | </view> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </view> |
| | | <view v-if="indexs == 2" class="main"> |
| | | <div> |
| | | <div class="m-main"> |
| | | <!-- <view class="inTitle">{{Task}}</view> --> |
| | | <view class="inTmain"> |
| | | <contacts v-for="(item,index) in dataListTXL" :key="index" :Pdata="item" :fromW="indexs" |
| | | @refreshTask="refreshTask"></contacts> |
| | | </view> |
| | | </view> |
| | | <view v-if="indexs == 2" class="main"> |
| | | <div> |
| | | <div class="m-main"> |
| | | |
| | | <view class="applys" @click="newGroup"> |
| | | <view class="head-wraps"> |
| | | <image src="../../static/qunzhu.png" class="head" /> |
| | | <view v-if=false class="tip">233</view> |
| | | </view> |
| | | <view class="content-wrap"> |
| | | <text class="name">群组创建</text> |
| | | <text class="mess">何事秋风悲画扇</text> |
| | | </view> |
| | | <view class="data-wrap"> |
| | | <text class="data"></text> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- <view class="inTitle">{{Task}}</view> --> |
| | | <view class="inTmain"> |
| | | <contacts v-for="(item,index) in dataListQZ" :key="index" :Pdata="item" |
| | | :fromW="indexs" @refreshTask="refreshTask"></contacts> |
| | | </view> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </view> |
| | | </view> |
| | | |
| | | </scroll-view> |
| | | |
| | | </swiper-item> |
| | | |
| | | </swiper> |
| | | |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | import axios from '../../static/lib/axios.js' |
| | | import contacts from '../../components/contacts/contacts.vue' |
| | | import navBarTop from '../../components/nav-bar-top/nav-bar-top.vue'; |
| | | export default{ |
| | | export default { |
| | | components: { |
| | | navBarTop,contacts |
| | | navBarTop, |
| | | contacts |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | name: '正在聊天' |
| | | }, |
| | | { |
| | | name: '群组' |
| | | name: '好友' |
| | | }, |
| | | { |
| | | name: '通讯录' |
| | | name: '群组' |
| | | } |
| | | ], |
| | | swiperHeight: 0, |
| | |
| | | show: true, |
| | | dataListP: [], |
| | | dataListQZ: [], |
| | | dataListTXL:[], |
| | | dataListTXL: [], |
| | | fromW: '', |
| | | onTop: false, //是否吸顶 |
| | | rect: '', //页面滚动距离 |
| | |
| | | titleTop: '', // |
| | | hello: false, |
| | | userName: '', |
| | | scrollTop: 0, |
| | | threshold: 50, |
| | | triggered: false, |
| | | isRefreshing: false, // 是否在刷新中 |
| | | refresherFlag: true, |
| | | } |
| | | }, |
| | | activated(){ |
| | | this.beginObj(); |
| | | this.getdataList(0); |
| | | }, |
| | | onReady() { |
| | | let that = this; |
| | | uni.getSystemInfo({ |
| | | success(e) { |
| | | console.log(e); |
| | | let { |
| | | windowWidth, |
| | | windowHeight, |
| | | safeArea |
| | | } = e; |
| | | const query = uni.createSelectorQuery().in(that); |
| | | query |
| | | .select('#swiperBox') |
| | | .boundingClientRect(data => { |
| | | that.swiperHeight = safeArea.bottom - data.top; |
| | | }) |
| | | .exec(); |
| | | } |
| | | }); |
| | | }, |
| | | activated() { |
| | | this.beginObj(); |
| | | this.getdataList(0); |
| | | }, |
| | | onReady() { |
| | | let that = this; |
| | | uni.getSystemInfo({ |
| | | success(e) { |
| | | console.log(e); |
| | | let { |
| | | windowWidth, |
| | | windowHeight, |
| | | safeArea |
| | | } = e; |
| | | const query = uni.createSelectorQuery().in(that); |
| | | query |
| | | .select('#swiperBoxPeo') |
| | | .boundingClientRect(data => { |
| | | |
| | | that.swiperHeight = (safeArea.bottom - data.top); |
| | | |
| | | }) |
| | | .exec(); |
| | | } |
| | | }); |
| | | }, |
| | | methods: { |
| | | |
| | | |
| | | refreshing() { |
| | | |
| | | if (this.isRefreshing) { |
| | | return; |
| | | } |
| | | this.isRefreshing = true; |
| | | //界面下拉触发,triggered可能不是true,要设为true |
| | | if (!this.triggered) { |
| | | this.triggered = true; |
| | | } |
| | | |
| | | this.dataListP = []; |
| | | this.dataListQZ = []; |
| | | this.dataListTXL = []; |
| | | |
| | | this.getdataList() |
| | | }, |
| | | |
| | | refresherrestore() { |
| | | |
| | | |
| | | |
| | | }, |
| | | |
| | | change(index) { |
| | | this.current = index; |
| | | }, |
| | |
| | | }, |
| | | getdataList() { |
| | | var that = this; |
| | | if(this.current == 0){ |
| | | if (this.current == 0) { |
| | | uni.request({ |
| | | url:"http://223.82.109.183:2082/api/chat-records/getChatListPage", |
| | | method:"get", |
| | | data:{ |
| | | url: this.$store.state.piAPI + "/chat-records/getChatListPage", |
| | | method: "get", |
| | | data: { |
| | | senderId: WxStorage.get("ids") |
| | | }, |
| | | success:(res)=> { |
| | | success: (res) => { |
| | | var resdata = res.data.data; |
| | | for (var i = 0; i < resdata.length; i++) { |
| | | if(resdata[i].avatar == null || resdata[i].avatar == ""){ |
| | | resdata[i].avatar = "http://s16s652780.51mypc.cn/img/bg/img-logo.png"; |
| | | if (resdata[i].avatar == null || resdata[i].avatar == "") { |
| | | resdata[i].avatar = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c"; |
| | | } |
| | | } |
| | | that.dataListP = resdata; |
| | | that.swiperHeight = resdata.length * 85; |
| | | |
| | | that.scrollTop = 0; |
| | | |
| | | setTimeout(() => { |
| | | that.triggered = false; //触发onRestore,并关闭刷新图标 正常应该放在请求成功得接口里 |
| | | that.isRefreshing = false; |
| | | }, 1000) |
| | | |
| | | } |
| | | }); |
| | | }else if(this.current == 1){ |
| | | } else if (this.current == 1) { |
| | | uni.request({ |
| | | url:"http://223.82.109.183:2082/api/chatgroup/selectList", |
| | | method:"POST", |
| | | data:{ |
| | | senderId: WxStorage.get("ids") |
| | | url: this.$store.state.piAPI + "/friend/page?current=1&size=9999", |
| | | method: "get", |
| | | data: { |
| | | applicant: WxStorage.get("ids") |
| | | }, |
| | | success:(res)=> { |
| | | var resdata = res.data.data; |
| | | success: (res) => { |
| | | var resdata = res.data.data.records; |
| | | for (var i = 0; i < resdata.length; i++) { |
| | | if(resdata[i].avatar == null || resdata[i].avatar == ""){ |
| | | resdata[i].avatar = "http://s16s652780.51mypc.cn/img/bg/qunz.png"; |
| | | |
| | | if (resdata[i].avatar == null || resdata[i].avatar == "") { |
| | | resdata[i].avatar = "https://gimg2.baidu.com/image_search/src=http%3A%2F%2F5b0988e595225.cdn.sohucs.com%2Fimages%2F20191109%2F1d3d4d82715444c4b8284f65e3feed10.jpeg&refer=http%3A%2F%2F5b0988e595225.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1632484198&t=1f4086a5894cbf83b311fa37c276405c"; |
| | | } |
| | | } |
| | | |
| | | that.dataListTXL = resdata; |
| | | |
| | | that.scrollTop = 0; |
| | | |
| | | setTimeout(() => { |
| | | that.triggered = false; //触发onRestore,并关闭刷新图标 正常应该放在请求成功得接口里 |
| | | that.isRefreshing = false; |
| | | }, 1000) |
| | | |
| | | } |
| | | }) |
| | | } else if (this.current == 2) { |
| | | |
| | | uni.request({ |
| | | url: this.$store.state.piAPI + "/chatgroup/selectList", |
| | | method: "GET", |
| | | data: { |
| | | id: WxStorage.get("ids") |
| | | }, |
| | | contentType: "application/x-www-form-urlencoded", |
| | | success: (res) => { |
| | | var resdata = res.data.data; |
| | | for (var i = 0; i < resdata.length; i++) { |
| | | if (resdata[i].avatar == null || resdata[i].avatar == "") { |
| | | resdata[i].avatar = "../../static/images/people.png"; |
| | | } |
| | | } |
| | | that.dataListQZ = resdata; |
| | | that.swiperHeight = resdata.length * 85; |
| | | |
| | | that.scrollTop = 0; |
| | | |
| | | setTimeout(() => { |
| | | that.triggered = false; //触发onRestore,并关闭刷新图标 正常应该放在请求成功得接口里 |
| | | that.isRefreshing = false; |
| | | }, 1000) |
| | | |
| | | } |
| | | }) |
| | | }else if(this.current == 2){ |
| | | uni.request({ |
| | | url:"http://223.82.109.183:2082/api/blade-user/pages?current=1&size=9999", |
| | | method:"get", |
| | | data:{ |
| | | senderId: WxStorage.get("ids") |
| | | }, |
| | | success:(res)=> { |
| | | var resdata = res.data.data.records; |
| | | for (var i = 0; i < resdata.length; i++) { |
| | | |
| | | if(resdata[i].avatar == null || resdata[i].avatar == ""){ |
| | | resdata[i].avatar = "http://s16s652780.51mypc.cn/img/bg/img-logo.png"; |
| | | } |
| | | } |
| | | that.dataListTXL = resdata; |
| | | that.swiperHeight = resdata.length * 85; |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | }, |
| | | refreshTask() { |
| | | this.getdataList(1); |
| | | }, |
| | | |
| | | toFriendRequest() { |
| | | uni.navigateTo({ |
| | | url: '/pages/groupChat/friendrequest?' |
| | | }); |
| | | }, |
| | | addFriend() { |
| | | uni.navigateTo({ |
| | | url: '/pages/groupChat/addFriend?' |
| | | }); |
| | | }, |
| | | newGroup() { |
| | | uni.navigateTo({ |
| | | url: '/pages/groupChat/newGroup/newGroup?' |
| | | }); |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | |
| | | }, |
| | | onShow() { |
| | | this.beginObj(); |
| | | this.getdataList(0); |
| | | |
| | | }, |
| | | onPageScroll(e) { |
| | | // console.log(e.scrollTop, 'pingmu') |
| | | this.rect = e.scrollTop |
| | | }, |
| | | watch: { |
| | |
| | | onLoad: function(options) { |
| | | this.userName = options.login; |
| | | // if(options.txlType == 2){ |
| | | this.current = 2; |
| | | // this.current = 0; |
| | | // } |
| | | |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | <style lang="scss" scoped> |
| | | .work { |
| | | width: 100%; |
| | | height: 100%; |
| | | padding: 0rem 2.5% 3rem 2.5%; |
| | | padding: 0; |
| | | box-sizing: border-box; |
| | | |
| | | .hello { |
| | |
| | | } |
| | | |
| | | .main { |
| | | margin-top: 0.625rem; |
| | | |
| | | margin-top: 0.225rem; |
| | | |
| | | .m-title { |
| | | width: 100%; |
| | | height: 2rem; |
| | |
| | | padding-bottom: 0.5rem; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | .m-main { |
| | | box-sizing: border-box; |
| | | |
| | | .main { |
| | | padding: 0 16px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .message-icon { |
| | | width: 32rpx; |
| | | height: auto; |
| | | font-size: 28px; |
| | | margin-right: 27rpx; |
| | | } |
| | | |
| | | |
| | | .top-bar { |
| | | background-color: rgba(255, 255, 255, .96); |
| | | // background-color: #42B983; |
| | | box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, .1); |
| | | } |
| | | |
| | | .applys { |
| | | display: flex; |
| | | // margin: 40rpx 0; |
| | | margin: 16rpx 32rpx !important; |
| | | height: 130rpx; |
| | | align-items: center; |
| | | border-bottom: 1px solid rgba(0, 0, 0, .1); |
| | | |
| | | &:active { |
| | | background-color: rgba(243, 244, 246, 1); |
| | | } |
| | | |
| | | .head-wrap { |
| | | position: relative; |
| | | |
| | | |
| | | image { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | border-radius: 20upx; |
| | | background-color: rgba(255, 228, 49, 1); |
| | | } |
| | | |
| | | .tip { |
| | | position: absolute; |
| | | top: -6rpx; |
| | | left: 68rpx; |
| | | height: 36rpx; |
| | | min-width: 20rpx; |
| | | min-height: 20rpx; |
| | | background-color: rgba(255, 93, 91, 1); |
| | | border-radius: 18rpx; |
| | | padding: 0 6rpx; |
| | | font-size: 24upx; |
| | | color: rgba(255, 228, 49, 1); |
| | | line-height: 36rpx; |
| | | text-align: center; |
| | | } |
| | | } |
| | | |
| | | .head-wraps { |
| | | position: relative; |
| | | |
| | | |
| | | image { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | border-radius: 20upx; |
| | | background-color: rgba(85, 170, 255, 1.0); |
| | | } |
| | | |
| | | .tip { |
| | | position: absolute; |
| | | top: -6rpx; |
| | | left: 68rpx; |
| | | height: 36rpx; |
| | | min-width: 20rpx; |
| | | min-height: 20rpx; |
| | | background-color: rgba(255, 93, 91, 1); |
| | | border-radius: 18rpx; |
| | | padding: 0 6rpx; |
| | | font-size: 24upx; |
| | | color: rgba(255, 228, 49, 1); |
| | | line-height: 36rpx; |
| | | text-align: center; |
| | | } |
| | | } |
| | | |
| | | .content-wrap { |
| | | margin-left: 32rpx; |
| | | flex: 1; |
| | | |
| | | .name { |
| | | display: block; |
| | | color: rgba(39, 40, 50, 1); |
| | | font-size: 36rpx; |
| | | font-weight: 400; |
| | | line-height: 50rpx; |
| | | } |
| | | |
| | | .mess { |
| | | display: block; |
| | | color: rgba(39, 40, 50, .6); |
| | | font-size: 28upx; |
| | | line-height: 40rpx; |
| | | display: -webkit-box; |
| | | -webkit-box-orient: vertical; |
| | | -webkit-line-clamp: 1; |
| | | overflow: hidden; |
| | | } |
| | | } |
| | | |
| | | .data-wrap { |
| | | |
| | | justify-content: right; |
| | | |
| | | .data { |
| | | font-size: 24upx; |
| | | color: rgba(39, 40, 50, 0.4); |
| | | line-height: 50rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .swiper-item { |
| | | overflow-y: auto !important; |
| | | } |
| | | |
| | | .tab { |
| | | margin-bottom: 10rpx; |
| | | } |
| | | </style> |