493 lines
13 KiB
Vue
493 lines
13 KiB
Vue
|
|
<template>
|
|||
|
|
<view :style="colorStyle">
|
|||
|
|
<NavBar titleText="个人主页"
|
|||
|
|
textSize="34rpx"
|
|||
|
|
:isScrolling="pageScrollStatus"
|
|||
|
|
:iconColor="pageScrollStatus ? '#333333' : '#ffffff'"
|
|||
|
|
:textColor="pageScrollStatus ? '#333333' : '#ffffff'"
|
|||
|
|
showBack
|
|||
|
|
:showEmpty="false"></NavBar>
|
|||
|
|
<!-- :style="{'height': 552 + (sysHeight * 2) + 'rpx'}" -->
|
|||
|
|
<view class="info-card w-full relative" >
|
|||
|
|
<view class="blur-bg w-full h-full abs-lt" :style="[headerStyle]"></view>
|
|||
|
|
<view class="w-full h-full content" :style="[cardStyle]">
|
|||
|
|
<view class="info">
|
|||
|
|
<view class="flex-between-center">
|
|||
|
|
<view class="flex-y-center">
|
|||
|
|
<view class="w-140 h-140 rd-50-p111- relative" :class="userInfo.vip_status ? 'svip-border' : 'white-border'">
|
|||
|
|
<image class="w-full h-full rd-50-p111- block" :src="userInfo.author_image" mode="aspectFill"></image>
|
|||
|
|
<image class="vip-badge" src="@/static/img/svip_badge.png" v-show="userInfo.vip_status"></image>
|
|||
|
|
</view>
|
|||
|
|
<view class="pl-28 text--w111-fff">
|
|||
|
|
<view class="w-260 flex-y-center flex-wrap">
|
|||
|
|
<text class="fs-32 fw-500">{{userInfo.author}}</text>
|
|||
|
|
<view class="vip flex-center" v-show="userInfo.level_name">
|
|||
|
|
<text class="iconfont icon-huiyuandengji"></text>
|
|||
|
|
V{{userInfo.level_name}}
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="fs-24 pt-22">ID:{{userInfo.relation_id}}</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="flex-y-center">
|
|||
|
|
<view class="w-154 h-58 rd-30rpx flex-center fs-24 text--w111-fff bg-white-01"
|
|||
|
|
v-if="userInfo.is_self" @tap="authTo('/pages/discover/discoverCreate/index')">
|
|||
|
|
<text class="iconfont icon-ic_edit fs-26"></text>
|
|||
|
|
<text class="pl-8">去发布</text>
|
|||
|
|
|
|||
|
|
</view>
|
|||
|
|
<view v-else class="w-124 h-58 rd-30rpx flex-center fs-24 text--w111-fff bg-white-01"
|
|||
|
|
@tap="followChange">
|
|||
|
|
<text v-show="!userInfo.is_follow" class="iconfont icon-ic_increase fs-24"></text>
|
|||
|
|
<text>{{userInfo.is_follow ? '已关注' : '关注'}}</text>
|
|||
|
|
</view>
|
|||
|
|
<view class="w-58 h-58 rd-50-p111- ml-12 text--w111-fff bg-white-01 flex-center"
|
|||
|
|
:class="{'msg-icon': is_view == 0}" v-if="userInfo.is_self" @tap="authTo('/pages/discover/discoverMessage/index')">
|
|||
|
|
<text class="iconfont icon-ic_message2 w-32"></text>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="fs-26 text--w111-fff lh-40rpx space-line user-desc mt-20">
|
|||
|
|
<text v-show="userInfo.desc">{{userInfo.desc}} </text>
|
|||
|
|
<text v-show="!userInfo.desc">此人很神秘,什么也没有留下~</text>
|
|||
|
|
<text class="iconfont icon-ic_edit fs-26" v-if="userInfo.is_self" @tap="toggleModal"></text>
|
|||
|
|
</view>
|
|||
|
|
<view class="mt-48 px-28 flex-between-center text--w111-fff">
|
|||
|
|
<view class="text-center" v-for="(item,index) in infoList" :key="index"
|
|||
|
|
@tap="userTo('/pages/discover/discoverFollow/index?type=' + index)">
|
|||
|
|
<view class="fs-30">{{item.count}}</view>
|
|||
|
|
<view class="pt-10 fs-24">{{item.name}}</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="h-56"></view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="list-box">
|
|||
|
|
<view class="list-tab flex-between-center relative" :class="showSearch ? 'pt-28' : 'pt-42'" v-if="userInfo.is_self">
|
|||
|
|
<text v-show="!showSearch"></text>
|
|||
|
|
<view class="flex-y-center fs-34 text--w111-999 center-tabs" v-show="!showSearch">
|
|||
|
|
<view :class="{'active-tab': active == 0}" @tap="changeTab(0)">作品</view>
|
|||
|
|
<view class="ml-66" :class="{'active-tab': active == 1}" @tap="changeTab(1)">赞过</view>
|
|||
|
|
</view>
|
|||
|
|
<view class="w-608 h-58 rd-30rpx bg--w111-f1f1f1 flex-y-center ml-12 pl-20" v-show="showSearch">
|
|||
|
|
<text class="iconfont icon-ic_search fs-30 text--w111-999"></text>
|
|||
|
|
<input type="text" v-model="params.keyword" placeholder="搜索笔记/用户/商品" @confirm="searchSubmit"
|
|||
|
|
class="flex-1 pl-14 fs-24" />
|
|||
|
|
</view>
|
|||
|
|
<text v-show="!showSearch && !params.keyword" class="iconfont icon-ic_search fs-40 pr-10" @tap="openSearch"></text>
|
|||
|
|
<text v-show="showSearch && params.keyword" class="fs-26 text--w111-999 pr-10" @tap="searchSubmit">搜索</text>
|
|||
|
|
<text v-show="showSearch && !params.keyword" class="fs-26 text--w111-999 pr-10" @tap="reset">取消</text>
|
|||
|
|
</view>
|
|||
|
|
<view class="list-tab" v-else></view>
|
|||
|
|
<view class="pt-20 pl-20 pr-20 bg--w111-f5f5f5" v-show="contentList.length">
|
|||
|
|
<waterfallsFlow :wfList="contentList" isSelf @onFlowLike="flowLike"></waterfallsFlow>
|
|||
|
|
</view>
|
|||
|
|
<view class="px-20 bg--w111-f5f5f5" v-show="!contentList.length">
|
|||
|
|
<emptyPage title="暂无内容~"></emptyPage>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
<!-- 确认框 -->
|
|||
|
|
<tui-modal :show="showModal" maskClosable custom @cancel="toggleModal">
|
|||
|
|
<view class="tui-modal-custom">
|
|||
|
|
<view class="fs-32 fw-500 lh-44rpx text-center">编辑简介</view>
|
|||
|
|
<view class="mt-24 bg--w111-f5f5f5 rd-16rpx p-30rpx h-342" @tap="openFocus">
|
|||
|
|
<textarea class="w-full fs-26"
|
|||
|
|
ref="myTextarea"
|
|||
|
|
v-model="userInfo.desc"
|
|||
|
|
auto-height
|
|||
|
|
:focus="focus"
|
|||
|
|
wrap-style="wrap"
|
|||
|
|
:always-embed="true"
|
|||
|
|
:adjust-position="true"
|
|||
|
|
cursor-spacing="85rpx"
|
|||
|
|
:maxlength="50"
|
|||
|
|
name="desc" />
|
|||
|
|
</view>
|
|||
|
|
<view class="flex-between-center mt-40">
|
|||
|
|
<view class="w-244 h-72 rd-36rpx flex-center fs-26 font-num close-btn" @tap="toggleModal">取消</view>
|
|||
|
|
<view class="w-244 h-72 rd-36rpx flex-center bg-color text--w111-fff fs-26" @tap="saveDesc">保存</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
</tui-modal>
|
|||
|
|
<!-- 确认框 -->
|
|||
|
|
<tuiModal
|
|||
|
|
:show="showFollow"
|
|||
|
|
title="确认取消关注"
|
|||
|
|
:maskClosable="false"
|
|||
|
|
@click="handleClick"></tuiModal>
|
|||
|
|
<home></home>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
let sysHeight = uni.getWindowInfo().statusBarHeight;
|
|||
|
|
import colors from "@/mixins/color";
|
|||
|
|
import emptyPage from '@/components/emptyPage.vue';
|
|||
|
|
import NavBar from "@/components/NavBar.vue";
|
|||
|
|
import waterfallsFlow from "@/components/discoverWaterfall/WaterfallsFlow.vue";
|
|||
|
|
import tuiModal from "@/components/tui-modal/index.vue";
|
|||
|
|
import {
|
|||
|
|
communityListApi,
|
|||
|
|
communityUserInfoApi,
|
|||
|
|
communityUpdateDescApi,
|
|||
|
|
communitySetInsterestApi,
|
|||
|
|
communityLikeListApi
|
|||
|
|
} from "@/api/community.js"
|
|||
|
|
import {serviceRecord} from '@/api/user.js';
|
|||
|
|
export default {
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
sysHeight,
|
|||
|
|
pageScrollStatus:false,
|
|||
|
|
id:0,
|
|||
|
|
params:{
|
|||
|
|
page:1,
|
|||
|
|
limit:20,
|
|||
|
|
topic_id:'', //话题
|
|||
|
|
keyword:'',
|
|||
|
|
is_interest:0, //是否关注
|
|||
|
|
relation_id:'',
|
|||
|
|
},
|
|||
|
|
infoList:[
|
|||
|
|
{name:'关注',count:'0'},
|
|||
|
|
{name:'好友',count:'0'},
|
|||
|
|
{name:'粉丝',count:'0'},
|
|||
|
|
{name:'获赞',count:'0'},
|
|||
|
|
],
|
|||
|
|
active:0,
|
|||
|
|
contentList:[],
|
|||
|
|
userInfo:{},
|
|||
|
|
showSearch:false,
|
|||
|
|
showModal:false,
|
|||
|
|
showFollow:false,
|
|||
|
|
focus:false,
|
|||
|
|
is_view: 1
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
mixins: [colors],
|
|||
|
|
components:{ emptyPage, NavBar, waterfallsFlow, tuiModal },
|
|||
|
|
computed:{
|
|||
|
|
headerStyle(){
|
|||
|
|
return {
|
|||
|
|
// 'height': 552 + (this.sysHeight * 2) + 'rpx',
|
|||
|
|
'background-image':`url(${this.userInfo.author_image})`
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
cardStyle(){
|
|||
|
|
return {
|
|||
|
|
'padding-top':40 + this.sysHeight + 'px',
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
provide() {
|
|||
|
|
return {
|
|||
|
|
flowLike: this.flowLike
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
onPageScroll(object) {
|
|||
|
|
if (object.scrollTop > 130) {
|
|||
|
|
this.pageScrollStatus = true;
|
|||
|
|
} else if (object.scrollTop < 130) {
|
|||
|
|
this.pageScrollStatus = false;
|
|||
|
|
}
|
|||
|
|
uni.$emit('scroll');
|
|||
|
|
},
|
|||
|
|
onReachBottom() {
|
|||
|
|
this.getList();
|
|||
|
|
},
|
|||
|
|
onLoad(options) {
|
|||
|
|
this.id = options.id;
|
|||
|
|
this.getList();
|
|||
|
|
},
|
|||
|
|
onShow() {
|
|||
|
|
this.getUserInfo();
|
|||
|
|
},
|
|||
|
|
methods:{
|
|||
|
|
openFocus(){
|
|||
|
|
this.focus = true;
|
|||
|
|
},
|
|||
|
|
changeTab(val){
|
|||
|
|
if(this.active == val) return
|
|||
|
|
this.active = val;
|
|||
|
|
this.loading = false;
|
|||
|
|
this.contentList = [];
|
|||
|
|
this.params.page = 1;
|
|||
|
|
val == 1 ? this.getLike() : this.getList()
|
|||
|
|
},
|
|||
|
|
getList(){
|
|||
|
|
if (this.loading) return;
|
|||
|
|
this.loading = true;
|
|||
|
|
this.$set(this.params,'relation_id',this.id);
|
|||
|
|
communityListApi(this.params).then(res=>{
|
|||
|
|
let list = res.data;
|
|||
|
|
let loading = list.length < this.params.limit;
|
|||
|
|
this.contentList = this.contentList.concat(list);
|
|||
|
|
this.params.page++;
|
|||
|
|
this.loading = loading;
|
|||
|
|
}).catch(err => {
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
getLike(){
|
|||
|
|
if (this.loading) return;
|
|||
|
|
this.loading = true;
|
|||
|
|
communityLikeListApi().then(res=>{
|
|||
|
|
let list = res.data.list;
|
|||
|
|
let loading = list.length < this.params.limit;
|
|||
|
|
this.contentList = this.contentList.concat(list);
|
|||
|
|
this.params.page++;
|
|||
|
|
this.loading = loading;
|
|||
|
|
}).catch(err => {
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
getUserInfo(){
|
|||
|
|
communityUserInfoApi(this.id).then(res=>{
|
|||
|
|
this.userInfo = res.data;
|
|||
|
|
this.infoList[0].count = res.data.follow_num;
|
|||
|
|
this.infoList[1].count = res.data.friend_count;
|
|||
|
|
this.infoList[2].count = res.data.fans_num;
|
|||
|
|
this.infoList[3].count = res.data.like_num;
|
|||
|
|
serviceRecord({page: 1,limit: 1}).then(res => {
|
|||
|
|
this.is_view = res.data.community.is_viewed;
|
|||
|
|
})
|
|||
|
|
}).catch(err => {
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
},{
|
|||
|
|
tab: 3
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
userTo(url){
|
|||
|
|
if(this.userInfo.is_self){
|
|||
|
|
if(url == '/pages/discover/discoverFollow/index?type=3') return
|
|||
|
|
this.authTo(url);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
authTo(url){
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
openSearch(){
|
|||
|
|
this.showSearch = !this.showSearch;
|
|||
|
|
if(!this.showSearch && this.params.keyword){
|
|||
|
|
this.params.keyword = '';
|
|||
|
|
this.params.page = 1;
|
|||
|
|
this.contentList = [];
|
|||
|
|
this.loading = false;
|
|||
|
|
this.getList();
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
searchSubmit(){
|
|||
|
|
this.params.page = 1;
|
|||
|
|
this.contentList = [];
|
|||
|
|
this.loading = false;
|
|||
|
|
this.getList();
|
|||
|
|
},
|
|||
|
|
reset(){
|
|||
|
|
this.params.keyword = '';
|
|||
|
|
this.showSearch = false;
|
|||
|
|
// this.searchSubmit();
|
|||
|
|
},
|
|||
|
|
toggleModal(){
|
|||
|
|
this.showModal = !this.showModal;
|
|||
|
|
},
|
|||
|
|
saveDesc(){
|
|||
|
|
if(this.userInfo.desc == '') return this.$util.Tips({
|
|||
|
|
title: '请输入介绍'
|
|||
|
|
});
|
|||
|
|
communityUpdateDescApi({desc:this.userInfo.desc}).then(res=>{
|
|||
|
|
this.showModal = false;
|
|||
|
|
this.getUserInfo();
|
|||
|
|
uni.showToast({
|
|||
|
|
title:res.msg,
|
|||
|
|
icon:'none'
|
|||
|
|
})
|
|||
|
|
}).catch(err=>{
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
followChange(){
|
|||
|
|
if(this.userInfo.is_follow == 0){
|
|||
|
|
communitySetInsterestApi(this.id,{status:1}).then(res=>{
|
|||
|
|
this.userInfo.is_follow = 1;
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: res.msg
|
|||
|
|
});
|
|||
|
|
}).catch(err => {
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}else{
|
|||
|
|
this.showFollow = true;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
handleClick(e){
|
|||
|
|
let index = e.index;
|
|||
|
|
let that = this;
|
|||
|
|
if(index == 1){
|
|||
|
|
communitySetInsterestApi(this.id,{status:0}).then(res=>{
|
|||
|
|
this.userInfo.is_follow = 0;
|
|||
|
|
this.showFollow = false;
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: res.msg
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
}).catch(err => {
|
|||
|
|
this.showFollow = false;
|
|||
|
|
return this.$util.Tips({
|
|||
|
|
title: err
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}else{
|
|||
|
|
this.showFollow = false;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
flowLike(data){
|
|||
|
|
let index = this.contentList.findIndex(item=> data.id == item.id);
|
|||
|
|
this.contentList[index].is_like = data.status;
|
|||
|
|
if(data.status == 1){
|
|||
|
|
this.contentList[index].like_num++;
|
|||
|
|
}else{
|
|||
|
|
this.contentList[index].like_num--;
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss">
|
|||
|
|
.info-card{
|
|||
|
|
background-size: cover;
|
|||
|
|
}
|
|||
|
|
.blur-bg{
|
|||
|
|
filter: blur(50rpx);
|
|||
|
|
background-size: cover;
|
|||
|
|
}
|
|||
|
|
.content{
|
|||
|
|
position: relative; /* 设置为相对定位 */
|
|||
|
|
z-index: 2; /* 设置更高的层级以覆盖背景 */
|
|||
|
|
filter: blur(0);
|
|||
|
|
background: linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.1) 39%, rgba(0, 0, 0, 0.7) 100%);
|
|||
|
|
}
|
|||
|
|
.info{
|
|||
|
|
padding: 38rpx 34rpx 0 30rpx;
|
|||
|
|
}
|
|||
|
|
.bg-white-01{
|
|||
|
|
background-color:rgba(255, 255, 255, 0.1);
|
|||
|
|
}
|
|||
|
|
.bg--w111-f1f1f1{
|
|||
|
|
background-color: #f1f1f1;
|
|||
|
|
}
|
|||
|
|
.border-white{
|
|||
|
|
border: 1rpx solid #fff;
|
|||
|
|
}
|
|||
|
|
.list-box{
|
|||
|
|
position: relative;
|
|||
|
|
left: 0;
|
|||
|
|
top: -24rpx;
|
|||
|
|
border-radius: 24rpx 24rpx 0 0;
|
|||
|
|
z-index: 90;
|
|||
|
|
}
|
|||
|
|
.list-tab{
|
|||
|
|
background: linear-gradient( 180deg, #FFFFFF 0%, #F5F5F5 100%);
|
|||
|
|
padding-left: 20rpx;
|
|||
|
|
padding-right: 20rpx;
|
|||
|
|
padding-bottom: 24rpx;
|
|||
|
|
border-radius: 24rpx 24rpx 0 0;
|
|||
|
|
}
|
|||
|
|
.center-tabs{
|
|||
|
|
position: absolute;
|
|||
|
|
top: 38rpx;
|
|||
|
|
left: 50%;
|
|||
|
|
transform: translateX(-50%);
|
|||
|
|
}
|
|||
|
|
.active-tab{
|
|||
|
|
font-weight: 500;
|
|||
|
|
color: #333;
|
|||
|
|
position: relative;
|
|||
|
|
&:after{
|
|||
|
|
content: '';
|
|||
|
|
position: absolute;
|
|||
|
|
left: 0;
|
|||
|
|
bottom: -14rpx;
|
|||
|
|
width: 64rpx;
|
|||
|
|
height: 5rpx;
|
|||
|
|
background: var(--view-theme);
|
|||
|
|
border-radius: 4rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.vip{
|
|||
|
|
width: 64rpx;
|
|||
|
|
height: 26rpx;
|
|||
|
|
background: #FEF0D9;
|
|||
|
|
border: 1px solid #FACC7D;
|
|||
|
|
border-radius: 50rpx;
|
|||
|
|
font-size: 18rpx;
|
|||
|
|
font-weight: 500;
|
|||
|
|
color: #DFA541;
|
|||
|
|
margin-left: 10rpx;
|
|||
|
|
.iconfont {
|
|||
|
|
font-size: 16rpx;
|
|||
|
|
margin-right: 4rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.vip-badge{
|
|||
|
|
position: absolute;
|
|||
|
|
top: -20rpx;
|
|||
|
|
right: 0;
|
|||
|
|
width: 48rpx;
|
|||
|
|
height: 46rpx;
|
|||
|
|
}
|
|||
|
|
.svip-border{
|
|||
|
|
border: 2rpx solid #F1BB0D;
|
|||
|
|
}
|
|||
|
|
.tui-modal-custom{
|
|||
|
|
height: 530rpx;
|
|||
|
|
.h-342{
|
|||
|
|
height: 342rpx;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.white-border{
|
|||
|
|
border: 2rpx solid #FFFFFF;
|
|||
|
|
}
|
|||
|
|
.modal-btn{
|
|||
|
|
width: 244rpx;
|
|||
|
|
height: 72rpx;
|
|||
|
|
border-radius: 36rpx;
|
|||
|
|
}
|
|||
|
|
.close-btn{
|
|||
|
|
border: 1rpx solid var(--view-theme);
|
|||
|
|
}
|
|||
|
|
.confirm-btn{
|
|||
|
|
background-color: var(--view-theme);
|
|||
|
|
}
|
|||
|
|
.msg-icon{
|
|||
|
|
position: relative;
|
|||
|
|
&:after{
|
|||
|
|
content: '';
|
|||
|
|
position: absolute;
|
|||
|
|
right: 8rpx;
|
|||
|
|
top: 10rpx;
|
|||
|
|
width: 12rpx;
|
|||
|
|
height: 12rpx;
|
|||
|
|
border-radius: 6rpx;
|
|||
|
|
background-color: #e93323;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.user-desc{
|
|||
|
|
max-height: 200rpx;
|
|||
|
|
overflow-y: scroll;
|
|||
|
|
}
|
|||
|
|
</style>
|