Commit c55539ab by 程默

Merge branch 'product_dev' of http://code.mayi888.com/chengmo/mayi-mp-shop into product_dev

parents 55977c02 83e55891
......@@ -47,4 +47,7 @@ export default {
-webkit-transition: width 2s;
-o-transition: width 2s;
}
@import url("../static/font/iconfont.css");
@import url('../static/css/common.scss');
</style>
......@@ -69,4 +69,8 @@ export default {
addShareRecord(options) {
return requestPOST(`${process.env.OLSHOP_URL}/liveBroadcastInfo/addShareRecord`,options);
},
//获取服务器时间戳
queryServerTimeNow(){
return requestGET(`${process.env.OLSHOP_URL}/liveBroadcastInfo/getServerTimeNow`)
}
};
\ No newline at end of file
import {requestPOST,requestGET} from "@/utils/request.js";
export default {
//获取直播间列表
queryLiveList(){
return requestGET(`${process.env.OLSHOP_URL}/liveBroadcastInfo/getList`)
},
//获取直播间详情
queryLiveDetail(options){
return requestGET(`${process.env.OLSHOP_URL}/liveBroadcastInfo/queryDetail`,options)
},
//更新直播状态
updateLiveStatus(options){
return requestPOST(`${process.env.OLSHOP_URL}/liveBroadcastInfo/updateStateByLiveId`,options)
},
//获取直播评论
queryLiveComments(options){
return requestPOST(`${process.env.OLSHOP_URL}/liveBroadcastInfo/getLiveStateById`,options)
},
//获取商品列表接口
queryProductList(options){
return requestGET(`${process.env.OLSHOP_URL}/liveBroadcastGoods/getListByLiveBroadcastId`,options)
},
//直播商品上下屏
queryProductUpDown(options){
return requestPOST(`${process.env.OLSHOP_URL}/liveBroadcastGoods/updateUpperScreenByGoodsIdAndLiveId`,options)
},
//获取已完成的直播
queryCompleteLive(options){
return requestPOST(`${process.env.OLSHOP_URL}/liveBroadcastInfo/historyRecord`,options)
},
//完成的直播详情
queryCompleteDetail(options){
return requestGET(`${process.env.OLSHOP_URL}/liveBroadcastInfo/getLiveStatisticsById`,options)
},
//获取服务器时间戳
queryServerTimeNow(){
return requestGET(`${process.env.OLSHOP_URL}/liveBroadcastInfo/getServerTimeNow`)
}
}
\ No newline at end of file
......@@ -7,7 +7,11 @@
"pages/wxPay/main",
"pages/counter/main",
"pages/address/main",
"pages/contact/main"
"pages/contact/main",
"pages/liveList/main",
"pages/historyLive/main",
"pages/liveOver/main",
"pages/live/main"
],
"window": {
"backgroundTextStyle": "light",
......
<template>
<!-- 评论模块 -->
<div class="livedIsMsg">
<div class="list">
<scroll-view :style="{'max-height': '24vh','width':'52vw'}" :scroll-y="true" :scroll-top="scrollTop" :scroll-with-animation="true" @scrolltolower="scrolltolower">
<div class="item flex" v-for="(item,index) in commentsList" :key="index">
<div class="user">
<p class="live"></p>
<div class="name">
<span class="user">{{item.customerName}}</span><span class="test">{{item.guestbookContent}}</span>
</div>
</div>
</div>
</scroll-view>
</div>
</div>
</template>
<script type="text/ecmascript-6">
export default {
name: "",
props:{
id:{
type:Number,
default:0
},
commentsList:{
type:Array,
default:null
},
updateVal:{
type:{
type:Number,
default:0
}
}
},
data() {
return {
list: [],
scrollTop:0,
};
},
watch:{
updateVal(){
this.scrollTop=this.commentsList.length*1000;
}
},
onLoad(){
},
methods: {
scrolltolower(){
},
}
};
</script>
<style lang="scss" scoped>
/* 一行否则出现省略号 */
.line-clamp1 {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
.livedIsMsg {
padding: 8px;
margin-bottom: 10px;
position: fixed;
left: 12px;
bottom: 20vh;
.list {
width: 50vw;
overflow: hidden;
bottom: 0;
padding-left: 10px;
background-color: rgba(0,0,0,0.3);
.item {
width: 50vw;
padding: 4px 0;
display: flex;
align-items: flex-start;
.user {
.name {
color: #f9a93c;
font-size: 12px;
}
}
.test {
font-size: 12px;
color: #f1f1f1;
word-break: break-all;
}
}
}
}
</style>
<template>
<div
class="navbar"
:style="{'height' : navHeight + 'px','padding-top':navTop+'px'}"
>
<div class="back" @click="back">
<span class="iconfont iconzuo"></span>
</div>
<div class="user-info" v-if="!isSetBeauty" :style="{'width' : liveInfo.liveBroadcastState != 0 ? '160px' : '114px'}">
<div class="user-info-left">
<div class="avatar">
<img :src="liveInfo.logoUrl" alt="">
</div>
<div class="username text-overflow" v-if="!status">{{liveInfo.shopName}}</div>
</div>
<div class="logining-info" v-if="status">
<div class="info-left">
<div class="login-name text-overflow">{{liveInfo.title}}</div>
<div class="login-time">{{time}}</div>
</div>
</div>
<div class="over-live" @click="endLive" v-if="liveInfo.liveBroadcastState ==1 || liveInfo.liveBroadcastState == 3">结束</div>
</div>
</div>
</template>
<script>
import { setTimes } from '../../utils'
import liveApi from '@/api/liveing'
export default {
props:{
navTop:{
type:Number,
default:0
},
navHeight:{
type:Number,
default:0
},
type:{ //1:直播间 2:结束直播间
type:Number,
default:1
},
isLive : {
type:Boolean,
default : false
},
//直播间id
id : {
type : Number,
default:0
},
isSetBeauty : {
type:Boolean,
default:false
},
pusher:{
type:Object,
default:null
},
realStartTime:{
type:Number,
default:0
},
liveInfo:{
type:Object,
default : null
}
},
data(){
return{
status : false,
userInfo : null,
time : '00:00:00',
starttime : 0,
timer : null,
}
},
watch:{
isLive(newVal,oldVal){
this.status = newVal && this.type == 1 ? true : false
this.starttime = this.realStartTime
if(newVal){
this.liveTimeHandler()
}
}
},
created(){
},
onShow(){
clearInterval(this.timer)
},
onReady(){
this.userInfo = this.$store.state.userInfo;
},
onHide(){
clearInterval(this.timer)
},
onUnload(){
clearInterval(this.timer)
},
methods:{
//结束直播
endLive(){
wx.showModal({
title: '',
content: '是否结束本场直播',
confirmText : '结束直播',
confirmColor : '#07c160',
success : res => {
if (res.confirm) {
this.$emit('changeOver',0);
this.changeLiveStatus(2);
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
back(){
if(this.isSetBeauty){
this.$emit('closeSetBeauty',false)
}else{
if(this.type == 1 && this.liveInfo.liveBroadcastState == 1){
liveApi.updateLiveStatus({
id : this.id,
liveBroadcastState : 3
}).then(res => {
if(res.data.code == '200'){
console.log('stop')
this.pusher.pause()
clearInterval(this.timer); //结束直播
wx.reLaunch({url:'../liveList/main'})
}
})
}else if(this.type == 1 && this.liveInfo.liveBroadcastState == 0){
wx.reLaunch({url:'../liveList/main'})
}else if(this.type == 2){
wx.reLaunch({url:'../liveList/main'})
}else if(this.type == 3){
wx.redirectTo({url:`../historyLive/main`})
}else{
wx.navigateBack();
}
}
},
//改变直播状态
changeLiveStatus(val){
liveApi.updateLiveStatus({
id : this.id,
liveBroadcastState : val
}).then(res => {
if(res.data.code == '200'){
if(val == 2){
// console.log(this.queryDataTimer + '2222222')
console.log('over')
clearInterval(this.timer); //结束直播
this.$emit('clearAllInterval')
}
//
console.log(this.id)
console.log(JSON.stringify(this.liveInfo))
this.$set(this.liveInfo,'boStream','')
this.$set(this.liveInfo,'tuiStream','')
wx.navigateTo({url:`../liveOver/main?id=${this.id}&liveInfo=${JSON.stringify(this.liveInfo)}`})
// wx.reLaunch({url:`../liveList/main`})
}
})
},
liveTimeHandler(){
if(this.isLive){
this.time = setTimes(++this.starttime);
this.timer = setInterval(() => {
this.time = setTimes(++this.starttime);
},1000)
}
}
}
}
</script>
<style scoped lang="scss">
.navbar{
box-sizing: border-box;
width: 100%;
position: fixed;
left: 0;
top: 0;
z-index: 100;
display: flex;
align-items: center;
.back{
width: 33.5px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
.iconzuo{
color: white;
font-size: 13px;
}
}
.user-info{
.user-info-left{
display: flex;
justify-content: flex-start;
align-items: center;
}
height: 30px;
line-height: 30px;
background-color: rgba(0,0,0,.6);
border-radius: 15px;
display: flex;
align-items: center;
justify-content: space-between;
.avatar{
width: 26px;
height: 26px;
border-radius: 50%;
overflow: hidden;
// background-color: rosybrown;
// padding: 4px;
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
img{
width: 100%;
height: 100%;
}
}
.username{
width: 75px;
text-align: center;
font-size: 12px;
color: white;
}
.logining-info{
.info-left{
text-align: center;
width: 70px;
color: white;
margin-left: 10px;
.login-name{
width: 70px;
font-size: 12px;
line-height: 14px;
}
.login-time{
font-size: 10px;
line-height: 14px;
}
}
}
.over-live{
width: 35px;
height: 19px;
border-radius: 9.5px;
text-align: center;
line-height: 19px;
font-size: 12px;
color: white;
margin-right : 4px;
background-image:-webkit-linear-gradient(to right,#FF877D, #FB566D);
background-image:-moz-linear-gradient(to right,#FF877D, #FB566D);
background-image:-o-linear-gradient(to right,#FF877D, #FB566D);
background-image: linear-gradient(to right,#FF877D, #FB566D);
}
}
}
</style>
\ No newline at end of file
<template>
<div class="popup-wrap">
<van-popup
:show="productDialogStatus"
position="bottom"
:overlay="true"
@close="close"
custom-style="height:399px;border-top-left-radius: 16px;border-top-right-radius: 16px;z-index:100;"
lock-scoll= "true"
>
<div class="product-title" v-if="productList.length">商品列表({{productList.length}})</div>
<div class="product-list" v-if="productList.length">
<div class="item" v-for="(item,index) in productList" :key="index">
<div class="item-index">{{item.number}}</div>
<div class="item-img">
<image :src="item.productImgUrl" mode="aspectFill" alt=""></image>
</div>
<div class="item-detail">
<div class="product-name text-overflow2">
{{item.productName}}
</div>
<div class="product-bottom">
<div class="product-price">{{item.minPrice}}</div>
<div
class="product-do product-up"
@click="setProductStatus(1,item.productId,item)"
v-if="item.upperScreenState == 0 || item.upperScreenState == 2"
>
上屏
</div>
<div
class="product-do product-down"
@click="setProductStatus(0,item.productId,item)"
v-if="item.upperScreenState == 1"
>
下屏
</div>
</div>
</div>
</div>
</div>
<div class="product-no-list" v-else >
暂无商品
</div>
</van-popup>
</div>
</template>
<script>
export default {
props:{
productDialogStatus:{
type:Boolean,
default:false
},
productList:{
type:Array,
default:null
}
},
data(){
return {
list : [],
}
},
watch:{
productList(newVal){
this.productList = newVal
}
},
created(){
},
methods:{
close(){
this.$emit('hideProductPopup',false)
},
setProductStatus(type,id,item,index){
this.$emit('changeProduct',type,id,item)
}
}
}
</script>
<style scoped lang="scss">
.popup-wrap{
position: relative;
z-index: 100;
}
.product-title{
width: 100%;
height: 45px;
line-height: 45px;
font-size: 16px;
color: #333333;
padding-left: 16.5px;
box-sizing: border-box;
}
.product-list{
width: 100%;
height: 350px;
overflow-y: auto;
.item{
display: flex;
justify-content: space-between;
padding: 16px 16.5px;
border-bottom: 1px solid #EEEEED;
position: relative;
.item-index{
position: absolute;
width: 19px;
height: 16px;
color: white;
text-align: center;
line-height: 16px;
background-color: #999;
border-top-left-radius: 4px;
border-bottom-right-radius: 4px;
font-size: 12px;
}
.item-img{
width: 90px;
height: 90px;
border-radius:4px;
background-color: #B1B1B1;
margin-right: 16.5px;
overflow: hidden;
image{
width: 100%;
height: 100%;
object-fit: cover;
}
}
.item-detail{
width: 220.5px;
position: relative;
.product-name{
font-size: 15px;
color: #333333;
}
.product-bottom{
width: 100%;
margin-top: 25px;
position: absolute;
bottom: 0;
left: 0;
.product-price{
font-size: 18px;
color: #FF0000;
float: left;
}
.product-do{
width: 64px;
height: 24px;
text-align: center;
line-height: 24px;
border-radius: 12px;
font-size: 15px;
box-sizing: border-box;
float: right;
}
.product-up{
color: white;
background-image:-webkit-linear-gradient(to right,#FF877D, #FB566D);
background-image:-moz-linear-gradient(to right,#FF877D, #FB566D);
background-image:-o-linear-gradient(to right,#FF877D, #FB566D);
background-image: linear-gradient(to right,#FF877D, #FB566D);
}
.product-down{
color: #FF4240;
border: 1px solid #FF4240;
}
}
}
}
}
.product-no-list{
text-align: center;
padding-top: 40px;
line-height: 18px;
color: #999;
}
</style>
\ No newline at end of file
<template>
<div class="container" :style="{'padding-top':navHeight +'px'}">
<div class="navbar" :style="{'height' : navHeight + 'px','padding-top':navTop+'px'}">
<div @click="toLiveList" class="history-btn">
<span class="iconfont iconzuo"></span>
</div>
<div class="navbar-title">直播计划</div>
</div>
<div class="uprefresh" v-if="isUprefresh">正在刷新...</div>
<div class="history-list">
<div class="list-item" v-for="(item,index) in list" :key="index" @click="liveDetail(item)">
<div class="item-top">
<div class="top-img">
<img :src="item.logoUrl" alt="">
</div>
<div class="top-name">{{item.shopName}}</div>
</div>
<div class="item-info">
<div class="info-poster">
<image :src="item.coverUrl" mode="aspectFill" alt=""></image>
</div>
<div class="info-detail">
<div class="detail-name">{{item.title}}</div>
<div class="detail-time">开播时间:{{item.startTime}}</div>
<div class="detail-data">
<div class="look data-icon">
<span class="iconfont iconyanjing"></span>
{{item.watchNum}}
</div>
<div class="thumbs data-icon">
<span class="iconfont iconicon_huabanfuben"></span>
{{item.likeNum}}
</div>
<div class="comment data-icon">
<span class="iconfont iconpinglun"></span>
{{item.guestBookNum}}
</div>
</div>
</div>
</div>
</div>
</div>
<van-divider
class="no-more"
v-if="isNoMore"
contentPosition="center"
customStyle="border-color: #ccc;"
>
已经到底了
</van-divider>
</div>
</template>
<script>
import liveApi from '@/api/liveing'
import { DFSImg,getNavbarInfo } from '../../utils/common.js'
export default {
data(){
return{
list:[],
currentPage : 1,
pageSize : 5,
pages : 0,
navTop : '',
navHeight : '',
isUprefresh :false,
isNoMore : false,
}
},
methods:{
getLiveHandler(type){
if(type == 'init'){
wx.showLoading({
title : '加载中'
})
}
liveApi.queryCompleteLive({
pageSize : this.pageSize,
currentPage : this.currentPage
}).then(res => {
if(res.data.code == '200'){
wx.hideLoading()
this.pages = res.data.pages;
if(type == 'refresh'){
wx.hideNavigationBarLoading();
this.isUprefresh = false;
// 停止下拉动作
wx.stopPullDownRefresh();
res.data.data.forEach(item => {
item.coverUrl = DFSImg(item.coverUrl)
item.logoUrl = DFSImg(item.logoUrl)
item.startTime = `${item.startTime.split(' ')[0]} ${item.startTimeByWeek} ${item.startTime.split(' ')[1].substr(0,5)}`
})
this.list = res.data.data;
}else if(type == 'more'){
res.data.data.forEach(item => {
item.coverUrl = DFSImg(item.coverUrl)
item.logoUrl = DFSImg(item.logoUrl)
item.startTime = `${item.startTime.split(' ')[0]} ${item.startTimeByWeek} ${item.startTime.split(' ')[1].substr(0,5)}`
this.list.push(item)
})
if(res.data.current == res.data.pages){
this.isNoMore = true;
}
}else{
res.data.data.forEach(item => {
item.coverUrl = DFSImg(item.coverUrl)
item.logoUrl = DFSImg(item.logoUrl)
item.startTime = `${item.startTime.split(' ')[0]} ${item.startTimeByWeek} ${item.startTime.split(' ')[1].substr(0,5)}`
})
this.list = res.data.data;
}
}
}).catch(error => {
wx.showToast({ title: error, icon: "none" });
wx.hideLoading()
})
},
liveDetail(item){
wx.navigateTo({url:`../liveOver/main?id=${item.id}&type=3&liveInfo=${JSON.stringify(item)}`})
},
toLiveList(){
wx.reLaunch({url:`../liveList/main`})
}
},
onShow(){
this.isUprefresh = false;
this.isNoMore = false;
this.currentPage = 1;
this.getLiveHandler('init')
},
created(){
//获取导航栏信息
getNavbarInfo((res) => {
this.navTop = res.navTop
this.navHeight = res.navHeight
})
},
onPullDownRefresh(){
this.isUprefresh = true;
this.currentPage = 1;
this.getLiveHandler('refresh');
wx.showNavigationBarLoading();
},
onReachBottom(){
if(this.currentPage < this.pages){
++this.currentPage;
this.getLiveHandler('more');
}
},
}
</script>
<style scoped lang="scss">
img{
width: 100%;
height: 100%;
}
.container{
min-height: 100vh;
background-color: #efefef;
padding-bottom: 24px;
}
.navbar{
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
position: relative;
background-color: white;
width: 100%;
position: fixed;
left: 0;
top: 0;
z-index: 10;
.history-btn{
width: 24px;
height: 24px;
position: absolute;
left: 16px;
.iconfont{
font-size: 15px;
color: #323232;
}
}
.navbar-title{
font-size: 14px;
color: #000;
text-align: center;
}
}
.uprefresh{
line-height: 30px;
font-size: 16px;
color: #999;
text-align: center;
}
.history-list{
width: 100%;
box-sizing: border-box;
padding: 12px 12px 0 12px;
.list-item{
width: 100%;
background-color: white;
border-radius: 4px;
padding: 0 12px 16px;
margin-bottom: 12px;
box-sizing: border-box;
.item-top{
display: flex;
justify-content: flex-start;
align-items: center;
height: 42px;
margin-bottom: 4px;
.top-img{
width: 27px;
height: 27px;
border-radius: 50%;
overflow: hidden;
background-color: #B5B5B5;
margin-right: 6px;
}
.top-name{
font-size: 15px;
color: #333333;
}
}
.item-info{
width: 100%;
display: flex;
justify-content: flex-start;
justify-items: center;
.info-poster{
width: 90px;
height: 90px;
border-radius: 3px;
background-color: #B5B5B5;
margin-right: 16px;
overflow: hidden;
image{
width: 100%;
height: 100%;
}
}
.info-detail{
.detail-name{
font-size: 15px;
color: #333333;
}
.detail-time{
font-size: 13px;
color: #999999;
line-height: 34px;
}
}
.detail-data{
color: #999;
font-size: 13px;
display: flex;
justify-content: flex-start;
align-items: center;
margin-top: 14px;
.data-icon{
margin-right: 16px;
font-size: 13px;
}
}
}
}
}
.no-more{
width: 90%;
line-height: 30px;
font-size: 16px;
color: #999;
text-align: center;
}
</style>
\ No newline at end of file
import Vue from 'vue'
import App from './index'
const app = new Vue(App)
app.$mount()
{
"navigationBarTitleText":"直播计划",
"enablePullDownRefresh":true,
"navigationStyle":"custom",
"usingComponents": {
"van-divider": "/static/vant/divider/index"
}
}
\ No newline at end of file
......@@ -94,6 +94,10 @@ export default {
} else if (options.from && options.from == "livedBackShop") {
//直播页back到商城
this.page = decodeURIComponent(options.backpath);
} else if(options.from && options.from == "liveList"){
//从主播端跳到商品
this.page = decodeURIComponent(options.backpath);
this.params += "&" + serialize(options.params);
} else if (options.from && options.from == "livedToGoodsInfo") {
//从直播详情商品列表到商城商品详情
this.page = decodeURIComponent(options.backpath);
......
import Vue from 'vue'
import App from './index'
const app = new Vue(App)
app.$mount()
{
"navigationStyle":"custom",
"usingComponents": {
"van-popup": "/static/vant/popup/index"
}
}
\ No newline at end of file
import Vue from 'vue'
import App from './index'
const app = new Vue(App)
app.$mount()
{
"enablePullDownRefresh":true,
"navigationBarTitleText":"直播计划"
}
\ No newline at end of file
<template>
<div class="container" :style="{'padding-top':navHeight +'px'}">
<image class="bg-img" :src="overInfo.coverUrl" mode="aspectFill" alt=""></image>
<navBar :navTop="navTop" :liveInfo="liveInfo" :navHeight="navHeight" :type="type"></navBar>
<div class="live-over">
<div class="over-text">直播已结束</div>
<div class="live-time">直播时长:{{overInfo.liveTime}}</div>
</div>
<div class="live-info">
<div class="info-row item-row-one">
<div class="info-item">
<div class="item-num">{{overInfo.watchNum}}</div>
<div class="item-text">观看</div>
</div>
<div class="info-item">
<div class="item-num">{{overInfo.goodsClickNum}}</div>
<div class="item-text">商品点击</div>
</div>
</div>
<div class="info-row">
<div class="info-item">
<div class="item-num">{{overInfo.shareNum}}</div>
<div class="item-text">分享</div>
</div>
<div class="info-item">
<div class="item-num">{{overInfo.guestBookNum}}</div>
<div class="item-text">评论</div>
</div>
<div class="info-item">
<div class="item-num">{{overInfo.likeNum}}</div>
<div class="item-text"></div>
</div>
</div>
</div>
</div>
</template>
<script>
import navBar from '@/components/common/navbar.vue'
import { getNavbarInfo,DFSImg } from '../../utils/common.js'
import liveApi from '@/api/liveing'
export default {
data(){
return{
navTop : '',
navHeight : '',
type : 2,
overInfo : {},
liveInfo : {}
}
},
components:{
navBar
},
created(){
//获取导航栏信息
getNavbarInfo((res) => {
this.navTop = res.navTop
this.navHeight = res.navHeight
})
},
onShow(){
this.overInfo = {}
},
onLoad(options){
this.overInfo = {}
if(options.type){
this.type = options.type;
}
this.liveInfo = JSON.parse(options.liveInfo)
this.getOverInfo(options.id)
},
methods:{
getOverInfo(id){
liveApi.queryCompleteDetail({
id : id
}).then(res => {
// console.log(res.data.code == 200)
if(res.data.code == 200){
// console.log(res.data.data)
res.data.data.coverUrl = DFSImg(res.data.data.coverUrl)
this.overInfo = res.data.data
console.log(this.overInfo)
}
})
}
},
}
</script>
<style scoped lang="scss">
.container{
width: 100%;
height: 100vh;
box-sizing: border-box;
background-color: rgba(102,102,102,.38);
overflow: hidden;
position: fixed;
top: 0;
left: 0;
.bg-img{
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: -1;
}
.live-over{
color: white;
text-align: center;
padding-top: 25vh;
.over-text{
font-size: 36px;
color: #FFFFFF;
font-weight: bold;
}
.live-time{
font-size: 15px;
line-height: 30px;
}
}
.live-info{
font-size: 18px;
color: white;
margin-top: 10vh;
width: 100%;
.info-row{
display: flex;
justify-content: space-around;
align-items: center;
margin-bottom: 40px;
font-weight: bold;
.info-item{
text-align: center;
}
}
.item-row-one{
width: 100%;
padding: 0 60px;
box-sizing: border-box;
.info-item{
width: 50%;
}
}
}
}
</style>
\ No newline at end of file
import Vue from 'vue'
import App from './index'
const app = new Vue(App)
app.$mount()
{
"navigationStyle":"custom"
}
\ No newline at end of file
......@@ -120,7 +120,12 @@ export default {
hasInvitationStatus: 0, // 邀请资格:0-不能够邀请下级,1-能够邀请下级
spokesmanObj: {}, //分销员信息
navTop: 0,
navHeight: 0
navHeight: 0,
isTimeLock : true, //时间锁
isTimeFirstReq : true, //第一次数据请求
newCommentsTime : 0,
};
},
components: {
......@@ -131,6 +136,9 @@ export default {
},
computed: {},
onLoad(options) {
this.isTimeLock = true;
this.isTimeFirstReq = true;
this.newCommentsTime = 0;
wx.setKeepScreenOn({
keepScreenOn: true
});
......@@ -170,16 +178,14 @@ export default {
});
}
this.init();
setTimeout(() => {
this.infoTiming = setInterval(() => {
this.timingGetInfo();
}, 5000);
}, 2000);
this.userEntry("IN");
// 通过分享进入直播间重新查询订阅消息配置
this.getMsgConfig();
this.isLogin();
this.getServerTimeNow();
},
onShareAppMessage(options) {
......@@ -254,6 +260,7 @@ export default {
// 调直播结束
this.endLived();
} else {
console.log('这里')
this.timingGetInfo();
}
if (this.liveNoticeInfo.liveBroadcastState != 2 && !this.goodTiming) {
......@@ -330,84 +337,97 @@ export default {
});
},
// 定时查询直播数据
timingGetInfo() {
// 前五秒
let query = {
id: Number(this.liveId),
beginTime: new Date().getTime() - 5000
};
live.getLiveStateById(query).then(res => {
if (res.data.code == 200) {
let resData = res.data.data;
// 1、判断状态如果发生改变才init();
// 2、直播中给用户进入通知、评论、点赞数赋值
if (
this.liveNoticeInfo.liveBroadcastState == 0 &&
resData.liveState == "NO_LIVE"
) {
// 未开始且接口也未开始不作操作
} else if (
this.liveNoticeInfo.liveBroadcastState == 1 &&
resData.liveState == "IN_LIVE"
) {
} else if (
this.liveNoticeInfo.liveBroadcastState == 0 &&
resData.liveState == "IN_LIVE"
) {
console.log("未开始----直播中");
// 未开始且接口直播中/直播中且接口已结束
this.init();
} else if (
(this.liveNoticeInfo.liveBroadcastState == 2 &&
resData.liveState == "END_LIVE") ||
(this.liveNoticeInfo.liveBroadcastState == 1 &&
resData.liveState == "END_LIVE")
) {
console.log(
this.liveNoticeInfo.liveBroadcastState,
resData.liveState,
this.firstComing,
"直播中----结束",
"结束----结束"
);
//直播结束且接口已结束
if (this.firstComing) {
this.firstComing = false;
timingGetInfo(serverTime) {
if(this.isTimeLock){
this.isTimeLock = false;
let dataTime = this.isTimeFirstReq ? serverTime - 2000 : this.newCommentsTime
// 前五秒
let query = {
id: Number(this.liveId),
beginTime: dataTime
};
live.getLiveStateById(query).then(res => {
this.isTimeFirstReq = false;
this.isTimeLock = true;
if (res.data.code == 200) {
let resData = res.data.data;
// 1、判断状态如果发生改变才init();
// 2、直播中给用户进入通知、评论、点赞数赋值
if (
this.liveNoticeInfo.liveBroadcastState == 0 &&
resData.liveState == "NO_LIVE"
) {
// 未开始且接口也未开始不作操作
} else if (
this.liveNoticeInfo.liveBroadcastState == 1 &&
resData.liveState == "IN_LIVE"
) {
} else if (
this.liveNoticeInfo.liveBroadcastState == 0 &&
resData.liveState == "IN_LIVE"
) {
console.log("未开始----直播中");
// 未开始且接口直播中/直播中且接口已结束
this.init();
} else if (
(this.liveNoticeInfo.liveBroadcastState == 2 &&
resData.liveState == "END_LIVE") ||
(this.liveNoticeInfo.liveBroadcastState == 1 &&
resData.liveState == "END_LIVE")
) {
console.log(
this.liveNoticeInfo.liveBroadcastState,
resData.liveState,
this.firstComing,
"直播中----结束",
"结束----结束"
);
//直播结束且接口已结束
if (this.firstComing) {
this.firstComing = false;
this.init();
}
} else if (
this.liveNoticeInfo.liveBroadcastState == 1 &&
resData.liveState == "PAUSE_LIVE"
) {
this.liveNoticeInfo.liveBroadcastState = 3;
} else if (
this.liveNoticeInfo.liveBroadcastState == 3 &&
resData.liveState == "IN_LIVE"
) {
this.liveNoticeInfo.liveBroadcastState = 1;
}
} else if (
this.liveNoticeInfo.liveBroadcastState == 1 &&
resData.liveState == "PAUSE_LIVE"
) {
this.liveNoticeInfo.liveBroadcastState = 3;
} else if (
this.liveNoticeInfo.liveBroadcastState == 3 &&
resData.liveState == "IN_LIVE"
) {
this.liveNoticeInfo.liveBroadcastState = 1;
}
this.guestBookList = resData.guestBookList; //评论列表
this.likeInfo = resData.likeInfo; //点赞信息
// 直播中且接口直播中---主要操作
// 数据初始化
this.entryNoticeText = "";
this.liveNoticeInfo.watchNum = resData.watchNum; //观看人数
if (resData.entryNoticeList.length > 0) {
if (resData.entryNoticeList.length == 1) {
this.entryNoticeText = `${resData.entryNoticeList[0].userName}`; //用户进入
} else {
this.entryNoticeText = `${resData.entryNoticeList[0].userName}${
resData.entryNoticeList.length
}人`; //用户进入
// console.log("resData.guestBookList---》", resData.guestBookList)
this.guestBookList = resData.guestBookList; //评论列表
if(resData.guestBookList && resData.guestBookList.length){
this.newCommentsTime = resData.guestBookList[resData.guestBookList.length - 1].createTimeStamp
}
this.likeInfo = resData.likeInfo; //点赞信息
// 直播中且接口直播中---主要操作
// 数据初始化
this.entryNoticeText = "";
this.liveNoticeInfo.watchNum = resData.watchNum; //观看人数
if (resData.entryNoticeList.length > 0) {
if (resData.entryNoticeList.length == 1) {
this.entryNoticeText = `${resData.entryNoticeList[0].userName}`; //用户进入
} else {
this.entryNoticeText = `${resData.entryNoticeList[0].userName}${
resData.entryNoticeList.length
}人`; //用户进入
}
}
this.updateVal = Math.random(); //监听使用数据
} else {
// if (this.infoTiming) {
// clearInterval(this.infoTiming);
// }
}
this.updateVal = Math.random(); //监听使用数据
} else {
if (this.infoTiming) {
clearInterval(this.infoTiming);
}
}
});
});
}else{
console.log('上次请求未结束,进行了下一次请求')
}
},
// 获取商品列表
getGoodsList() {
......@@ -459,6 +479,23 @@ export default {
}
});
},
//服务器时间戳
getServerTimeNow(){
live.queryServerTimeNow().then(res => {
if(res.data.code == 200){
//定时查询数据
// this.timingGetInfo(res.data.data);
this.newCommentsTime = res.data.data
console.log('newCommentsTime',this.newCommentsTime)
// setTimeout(() => {
this.infoTiming = setInterval(() => {
this.timingGetInfo(res.data.data);
}, 2000);
// }, 2000);
}
})
},
error(res) {
console.log(res, "------------------237");
},
......
......@@ -11,5 +11,28 @@ const mutations = {
state.offlineShopCode = code;
},
//设置登录状态
setLoginStatus(state,val){
wx.setStorage({
key: "isLogin",
data: val
});
state.isLogin = val;
},
//设置用户信息
setUserInfo(state,obj){
wx.setStorage({
key: "userInfo",
data: JSON.stringify(obj)
});
state.userInfo = obj;
},
//退出登录
logout(state){
wx.clearStorage()
state.isLogin = 0;
state.userInfo = null;
}
};
export default mutations
\ No newline at end of file
let isLogin = 0;
let userInfo = null;
if(wx.getStorageSync('isLogin')){
isLogin = wx.getStorageSync('isLogin')
}
if(wx.getStorageSync('userInfo')){
userInfo = JSON.parse(wx.getStorageSync('userInfo'))
}
const state = {
spokesmanGroupId: "",
spokesmanShopId: "",
spokesmanRelId: "",
subscribeMessageObj: {},
offlineShopCode:"",
isLogin,
userInfo,
};
export default state
\ No newline at end of file
export function getNavbarInfo(fn){
let menuInfo = wx.getMenuButtonBoundingClientRect(); //右上角胶囊信息
wx.getSystemInfo({
success : (res) =>{
fn({
navTop : res.statusBarHeight, //状态栏高度
navHeight : res.statusBarHeight + menuInfo.height + (menuInfo.top - res.statusBarHeight)*2 //导航栏高度
})
}
})
}
export function DFSImg(path, w, h){
let baseImg = process.env.IMG_DOMAIN ;
if (!Array.isArray(baseImg) && (baseImg.indexOf('aliyun') >= 0 || baseImg.indexOf('cdn') >= 0 )) {
var style = '';
if (w) style += ',w_' + w;
if (h) style += ',h_' + h;
if (style.length > 0) {
if(path.indexOf('?x-oss-process') == -1){
path += '?x-oss-process=image/resize,m_pad,limit_0' + style
}
}
if (path.indexOf('http') == 0) {
return path;
}
return baseImg + path;
} else {
if (path.indexOf('http') == 0) {
return path;
}
if (path.indexOf('/') != 0) {
path = '/' + path;
}
if (w && h) {
path += '.' + w + 'x' + h + '.jpg';
}
return baseImg[Math.floor(Math.random() * 100) % baseImg.length] + path;
}
}
\ No newline at end of file
......@@ -89,3 +89,13 @@ export function getNavbarInfo(fn) {
}
})
}
export function setTimes(value){
let result = parseInt(value)
  let h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600)
  let m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60))
  let s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60))
  result = `${h}:${m}:${s}`
  return result
}
\ No newline at end of file
......@@ -11,7 +11,8 @@ export async function requestGET(url, options) {
header: {
"Shop-Mixid": shopMixid,
"Offline-Shop-Code": store.state.offlineShopCode,
"dubbo-tag": "ljx"
"dubbo-tag": "ljx",
"Authorization": wx.getStorageSync('sessionid') || ""
},
success: function (res) {
resolve(res)
......
.text-overflow{
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.text-overflow2{
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
@mixin btn {
width: 148px;
height: 40px;
text-align: center;
line-height: 40px;
font-size: 16px;
color: white;
border-radius: 8px;
background-image:-webkit-linear-gradient(to right,#FF877D, #FB566D);
background-image:-moz-linear-gradient(to right,#FF877D, #FB566D);
background-image:-o-linear-gradient(to right,#FF877D, #FB566D);
background-image: linear-gradient(to right,#FF877D, #FB566D);
}
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
normalize.css 中也包含这行 */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
@font-face {font-family: "iconfont";
src: url('iconfont.eot?t=1584323888536'); /* IE9 */
src: url('iconfont.eot?t=1584323888536#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAATAAAsAAAAACZAAAARxAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDSAqGAIUVATYCJAMYCw4ABCAFhG0HWhtNCBFVnHHJvjgwtrWkx4oVNPJ3JfGea44qoYl0n/Ph6dT3799dwAJOV3NwfZPSDsBlczoDwcSsM9MAAQR6EwZvd2uqGRsFQAUQL5jjMc+inpK35JP1SXu8DBehstIC2AD8417VzPMPlvUsFpeXOSflQuHQBArQmJ0LeyVrxSpYEe0iu5a4B/t5IADk8KVDCus0KoMULPAYAUC6d6lqD2nCCLaCIJBq+IJrWZDp4CBlJjGXAUzzfp68QXxSgAFHgWeLKmt3Qq5NViNQ0Y5WDgmi4ewA+JsACkAHYAEyvNA5EDRI6lDI1d/AogEAJaRgwNpkNo0typZXI9jtJKToJVCSf3kAAQMOFCxAeIBSydAbpTjAJrP0IKpKA3owoIoCYbUqD7hAgRpB/Iy0/IAdWsADgAxr0sFzBAx4sKC8SqXVyqgcolQ6OkbF/tDDOulLK6v6VW8yuFbONa4XXfRzOlW7Vc0zbDQ6d5otbuhoTC4jFkuF9ZlgflJuejzUZCozm8vLhDO1rVbBYmm+9qjhWPUR8XA73xDcsYveKtS9yGRqsfu695IbSftu+S292azItdEQJeVtEMNNpjYD2meLLhJfXjPP4GqxtDxqMVgxoag2Zx1zEAoh/mZmb7LOpM5oytXVOmmRs/miOVpvnLtwscS6NQv0cuMWZIsiPuTMXx0d1O8DPuhL0McOHcbb1qoCr4V37izwKvRa4E5duqNekEC4J+xqLx+Mviuk6zdDz+31+WSltymLgY7bAw9WzXI/TH9fo4vQutMiIZ5MmV2R3u4w/ZNBgkUX5K5fHpcYnxyfGOeB5aeACEwMEGfXLIf9cT5p3owUMOiM55OoWHr9skp1+Tqsj96+jP+9vqDxsaJjBY18jAkFSiNy4zXFM7iXS3Lqf4j8YCODTD9zH7TqL4R17B2hLyrSR6Tl9oifNs3S5abp7ykqitCnJQS25mZt9WoQwbQdJbYlGR2TSceOxJFlwFNGiUxbnV/Tx8PeKv67NO/84CKN+yGlcuK0o505v+JBU48O5tQYDgCwT6M87c8xx1INHf6y2fQf7QoA9A9zFrBvoZ9p6U+2D311uTvbajK/SRVPdOru7P/ogH0si+7CP0WFxqJfStRwiNUkaOJZZbDVBgKAR+13EGcAyMkY8CN5HT0cSu3SuBwgkMIlAgYS+ACFFMFklq4DDgqNROBJ5YBclPhmBSdqiUwGINIXBYTWNzDUjgGl9UNm6X/AcfUPPG1LkKvI6Z4KoTWHAsXMsIT8E5pCmEyLHfzKK1auzzQu8RhP1KmJQOgF6UyMjDrEBdOriswISGWAC/Uy7HuBUaXFwrzabDz7PhV9kVfIMDsooFDGoBLIfQKNgmDkTDaHzPdfoYrTy2jFQJX3CalJszoIeYIG5FjJjQYuZfPkpRIxhphDRIkBuIAd9SQpwFi8q4UKxlN3iI/OfHoUNVV606uHu7wEIIefwccQSljCEZ5IQO9kOUTctnfDVe94OyTjNlQcr+SSpHZZnjG5HHk2AwAAAA==') format('woff2'),
url('iconfont.woff?t=1584323888536') format('woff'),
url('iconfont.ttf?t=1584323888536') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
url('iconfont.svg?t=1584323888536#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.iconzuo:before {
content: "\e609";
}
.iconyou:before {
content: "\e60f";
}
.iconpinglun:before {
content: "\e641";
}
.iconyanjing:before {
content: "\e857";
}
.iconicon_huabanfuben:before {
content: "\e62b";
}
!function(d){var t,a='<svg><symbol id="iconzuo" viewBox="0 0 1024 1024"><path d="M721.80622223 12.74311111l-495.84355556 496.29866667 495.84355555 499.48444444 51.65511111-51.31377777-444.75733333-448.0568889 444.64355554-444.98488888z" ></path></symbol><symbol id="iconyou" viewBox="0 0 1024 1024"><path d="M748.80341333 546.07872c8.73813333 0 17.47626667-3.34961778 24.02986667-9.90321778 13.25283555-13.25283555 13.25283555-34.80689778 0-48.05973333L299.22645333 14.36330667c-13.25283555-13.25283555-34.80689778-13.25283555-48.05973333 0-13.25283555 13.25283555-13.25283555 34.80689778 0 48.05973333l473.60682667 473.60682667c6.69923555 6.69923555 15.29173333 10.04885333 24.02986666 10.04885333z" ></path><path d="M275.19658667 1019.68554667c8.73813333 0 17.47626667-3.34961778 24.02986666-9.90321778l473.60682667-473.60682667c13.25283555-13.25283555 13.25283555-34.80689778 0-48.05973333-13.25283555-13.25283555-34.80689778-13.25283555-48.05973333 0L251.16672 961.57696c-13.25283555 13.25283555-13.25283555 34.80689778 0 48.05973333 6.5536 6.69923555 15.29173333 10.04885333 24.02986667 10.04885334z" ></path></symbol><symbol id="iconpinglun" viewBox="0 0 1024 1024"><path d="M512.45511111 880.75377778c-32.42666667 0-64.17066667-2.73066667-95.00444444-7.62311111L194.78755555 1003.52V786.432C78.50666667 707.81155555 4.096 587.20711111 4.096 451.69777778c0-236.88533333 227.55555555-428.94222222 508.35911111-428.94222223 280.91733333 0 508.47288889 192.05688889 508.47288889 428.94222223s-227.55555555 429.056-508.47288889 429.056z m0-796.78577778c-245.64622222 0-444.87111111 164.75022222-444.87111111 367.72977778 0 124.70044445 75.20711111 234.72355555 190.00888889 301.056l-2.048 142.336L405.04888889 808.39111111c34.47466667 7.05422222 70.31466667 11.15022222 107.29244444 11.15022222 245.76 0 444.98488889-164.52266667 444.98488889-367.72977778 0.11377778-203.09333333-199.11111111-367.84355555-444.87111111-367.84355555z m254.29333334 428.94222222c-35.15733333 0-63.60177778-27.42044445-63.60177778-61.21244444 0-33.90577778 28.55822222-61.21244445 63.60177778-61.21244445 35.15733333 0 63.488 27.42044445 63.488 61.21244445 0.11377778 33.90577778-28.33066667 61.21244445-63.488 61.21244444z m-254.29333334 0c-35.04355555 0-63.488-27.42044445-63.488-61.21244444 0-33.90577778 28.55822222-61.21244445 63.488-61.21244445 35.15733333 0 63.60177778 27.42044445 63.60177778 61.21244445 0 33.90577778-28.44444445 61.21244445-63.60177778 61.21244444z m-254.17955556 0c-35.15733333 0-63.488-27.42044445-63.488-61.21244444 0-33.90577778 28.33066667-61.21244445 63.488-61.21244445s63.60177778 27.42044445 63.60177778 61.21244445c0 33.90577778-28.44444445 61.21244445-63.60177778 61.21244444z m0 0" ></path></symbol><symbol id="iconyanjing" viewBox="0 0 1024 1024"><path d="M512 671.14895011c-87.50021927 0-159.14895011-71.01467124-159.14895011-159.14895011S424.49978073 352.85104989 512 352.85104989s159.14895011 71.01467124 159.14895011 159.14895011-71.64873083 159.14895011-159.14895011 159.14895011z m0-267.57313574c-59.60159869 0-108.42418563 48.82258572-108.42418563 108.42418563s48.82258572 108.42418563 108.42418563 108.42418563 108.42418563-48.82258572 108.42418563-108.42418563-48.82258572-108.42418563-108.42418563-108.42418563z" ></path><path d="M512 837.90661526c-211.14183376 0-390.58068943-159.14895011-478.7149695-253.62382484-37.40951438-40.57981232-37.40951438-103.35170894 0-143.93152125 88.13427886-94.47487473 267.57313453-253.62382484 478.7149695-253.62382484s390.58068943 159.14895011 478.7149695 253.62382484c37.40951438 40.57981232 37.40951438 103.35170894 0 143.93152125-88.13427886 94.47487473-267.57313453 253.62382484-478.7149695 253.62382484z m0-601.08846483c-192.12004739 0-358.87771133 149.00399673-441.93951471 237.77233519-19.65584596 20.92396513-19.65584596 53.89506241 0 74.81902876 82.42774258 88.76833845 249.81946732 237.77233518 441.93951471 237.77233519s358.87771133-149.00399673 441.93951471-237.77233519c19.65584596-20.92396513 19.65584596-53.89506241 0-74.81902876-83.06180218-88.76833845-249.81946732-237.77233518-441.93951471-237.77233519z" ></path></symbol><symbol id="iconicon_huabanfuben" viewBox="0 0 1024 1024"><path d="M92.83809629 522.67850251c-50.32397657-52.77880432-77.9407926-121.8822165-77.94079259-194.79061196 0-75.3632232 29.33519649-146.3077562 82.72770773-199.5775271S221.83931534 45.5826557 297.20253854 45.5826557c83.70963962 0 161.52769056 36.45419773 214.79746146 99.05231434 53.2697709-62.59811789 131.08782185-99.05231562 214.79746146-99.05231434 75.3632232 0 146.3077562 29.33519649 199.57752711 82.72770775S1009.1026963 252.52466605 1009.1026963 327.88789055c0 67.13954974-24.05731605 132.31523572-67.63051503 183.25291922l-41.97756145-35.84049078C934.59866203 434.3046894 953.86906294 381.89410874 953.86906294 327.88789055c0-125.19623447-101.87536701-227.07160148-227.07160148-227.07160278-77.9407926 0-149.49903253 39.27725041-191.47659398 105.06664462l-23.32086748 36.45419773-23.32086748-36.45419773C446.70157237 140.09353818 375.14333114 100.81628777 297.20253854 100.81628777c-125.19623447 0-227.07160148 101.87536701-227.07160148 227.07160278 0 58.67039168 22.21619394 114.27224997 62.72085824 156.61803377l-40.01369901 38.17257819z" ></path><path d="M512.61370693 978.4173443c-6.5052943 0-13.13333026-2.3320861-18.41121068-6.99625961-11.41495109-10.18753722-12.39688167-27.61681602-2.20934575-39.03176711L899.86284476 474.80935369c10.18753722-11.41495109 27.61681602-12.39688167 39.03176711-2.20934574 11.41495109 10.18753722 12.39688167 27.61681602 2.20934576 39.03176841L533.23426337 969.21173894c-5.40062208 6.13707066-13.01058862 9.20560534-20.62055644 9.20560536z" ></path><path d="M512.61370693 978.4173443c-7.60996783 0-15.09719271-3.06853468-20.62055643-9.20560536L92.34713101 522.06479557c-10.18753722-11.41495109-9.20560534-28.84422991 2.20934575-39.03176712s28.84422991-9.20560534 39.03176711 2.20934446l399.6460195 447.14694467c10.18753722 11.41495109 9.20560534 28.84422991-2.20934574 39.03176711-5.27788044 4.66417349-11.90591638 6.99625961-18.4112107 6.99625961z" ></path></symbol></svg>',e=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(e&&!d.__iconfont__svg__cssinject__){d.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}!function(t){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(t,0);else{var e=function(){document.removeEventListener("DOMContentLoaded",e,!1),t()};document.addEventListener("DOMContentLoaded",e,!1)}else document.attachEvent&&(c=t,o=d.document,i=!1,(a=function(){try{o.documentElement.doScroll("left")}catch(t){return void setTimeout(a,50)}n()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,n())});function n(){i||(i=!0,c())}var c,o,i,a}(function(){var t,e,n,c,o,i;(t=document.createElement("div")).innerHTML=a,a=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",n=e,(c=document.body).firstChild?(o=n,(i=c.firstChild).parentNode.insertBefore(o,i)):c.appendChild(n))})}(window);
\ No newline at end of file
{
"id": "1686837",
"name": "蚂蚁直播",
"font_family": "iconfont",
"css_prefix_text": "icon",
"description": "",
"glyphs": [
{
"icon_id": "6318177",
"name": "左",
"font_class": "zuo",
"unicode": "e609",
"unicode_decimal": 58889
},
{
"icon_id": "13000530",
"name": "右",
"font_class": "you",
"unicode": "e60f",
"unicode_decimal": 58895
},
{
"icon_id": "5121501",
"name": "评论",
"font_class": "pinglun",
"unicode": "e641",
"unicode_decimal": 58945
},
{
"icon_id": "8288891",
"name": "眼睛",
"font_class": "yanjing",
"unicode": "e857",
"unicode_decimal": 59479
},
{
"icon_id": "12685009",
"name": "心",
"font_class": "icon_huabanfuben",
"unicode": "e62b",
"unicode_decimal": 58923
}
]
}
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="zuo" unicode="&#58889;" d="M721.80622223 883.25688889l-495.84355556-496.29866667 495.84355555-499.48444444 51.65511111 51.31377777-444.75733333 448.0568889 444.64355554 444.98488888z" horiz-adv-x="1024" />
<glyph glyph-name="you" unicode="&#58895;" d="M748.80341333 349.92128c8.73813333 0 17.47626667 3.34961778 24.02986667 9.90321778 13.25283555 13.25283555 13.25283555 34.80689778 0 48.05973333L299.22645333 881.63669333c-13.25283555 13.25283555-34.80689778 13.25283555-48.05973333 0-13.25283555-13.25283555-13.25283555-34.80689778 0-48.05973333l473.60682667-473.60682667c6.69923555-6.69923555 15.29173333-10.04885333 24.02986666-10.04885333zM275.19658667-123.68554667000001c8.73813333 0 17.47626667 3.34961778 24.02986666 9.90321778l473.60682667 473.60682667c13.25283555 13.25283555 13.25283555 34.80689778 0 48.05973333-13.25283555 13.25283555-34.80689778 13.25283555-48.05973333 0L251.16672-65.57695999999999c-13.25283555-13.25283555-13.25283555-34.80689778 0-48.05973333 6.5536-6.69923555 15.29173333-10.04885333 24.02986667-10.04885334z" horiz-adv-x="1024" />
<glyph glyph-name="pinglun" unicode="&#58945;" d="M512.45511111 15.24622222000005c-32.42666667 0-64.17066667 2.73066667-95.00444444 7.62311111L194.78755555-107.51999999999998V109.56799999999998C78.50666667 188.18844445000002 4.096 308.79288889 4.096 444.30222222c0 236.88533333 227.55555555 428.94222222 508.35911111 428.94222223 280.91733333 0 508.47288889-192.05688889 508.47288889-428.94222223s-227.55555555-429.056-508.47288889-429.056z m0 796.78577778c-245.64622222 0-444.87111111-164.75022222-444.87111111-367.72977778 0-124.70044445 75.20711111-234.72355555 190.00888889-301.056l-2.048-142.336L405.04888889 87.60888889c34.47466667-7.05422222 70.31466667-11.15022222 107.29244444-11.15022222 245.76 0 444.98488889 164.52266667 444.98488889 367.72977778 0.11377778 203.09333333-199.11111111 367.84355555-444.87111111 367.84355555z m254.29333334-428.94222222c-35.15733333 0-63.60177778 27.42044445-63.60177778 61.21244444 0 33.90577778 28.55822222 61.21244445 63.60177778 61.21244445 35.15733333 0 63.488-27.42044445 63.488-61.21244445 0.11377778-33.90577778-28.33066667-61.21244445-63.488-61.21244444z m-254.29333334 0c-35.04355555 0-63.488 27.42044445-63.488 61.21244444 0 33.90577778 28.55822222 61.21244445 63.488 61.21244445 35.15733333 0 63.60177778-27.42044445 63.60177778-61.21244445 0-33.90577778-28.44444445-61.21244445-63.60177778-61.21244444z m-254.17955556 0c-35.15733333 0-63.488 27.42044445-63.488 61.21244444 0 33.90577778 28.33066667 61.21244445 63.488 61.21244445s63.60177778-27.42044445 63.60177778-61.21244445c0-33.90577778-28.44444445-61.21244445-63.60177778-61.21244444z m0 0" horiz-adv-x="1024" />
<glyph glyph-name="yanjing" unicode="&#59479;" d="M512 224.85104989c-87.50021927 0-159.14895011 71.01467124-159.14895011 159.14895011S424.49978073 543.14895011 512 543.14895011s159.14895011-71.01467124 159.14895011-159.14895011-71.64873083-159.14895011-159.14895011-159.14895011z m0 267.57313574c-59.60159869 0-108.42418563-48.82258572-108.42418563-108.42418563s48.82258572-108.42418563 108.42418563-108.42418563 108.42418563 48.82258572 108.42418563 108.42418563-48.82258572 108.42418563-108.42418563 108.42418563zM512 58.09338474000003c-211.14183376 0-390.58068943 159.14895011-478.7149695 253.62382484-37.40951438 40.57981232-37.40951438 103.35170894 0 143.93152125 88.13427886 94.47487473 267.57313453 253.62382484 478.7149695 253.62382484s390.58068943-159.14895011 478.7149695-253.62382484c37.40951438-40.57981232 37.40951438-103.35170894 0-143.93152125-88.13427886-94.47487473-267.57313453-253.62382484-478.7149695-253.62382484z m0 601.08846483c-192.12004739 0-358.87771133-149.00399673-441.93951471-237.77233519-19.65584596-20.92396513-19.65584596-53.89506241 0-74.81902876 82.42774258-88.76833845 249.81946732-237.77233518 441.93951471-237.77233519s358.87771133 149.00399673 441.93951471 237.77233519c19.65584596 20.92396513 19.65584596 53.89506241 0 74.81902876-83.06180218 88.76833845-249.81946732 237.77233518-441.93951471 237.77233519z" horiz-adv-x="1024" />
<glyph glyph-name="icon_huabanfuben" unicode="&#58923;" d="M92.83809629 373.32149748999996c-50.32397657 52.77880432-77.9407926 121.8822165-77.94079259 194.79061196 0 75.3632232 29.33519649 146.3077562 82.72770773 199.5775271S221.83931534 850.4173443 297.20253854 850.4173443c83.70963962 0 161.52769056-36.45419773 214.79746146-99.05231434 53.2697709 62.59811789 131.08782185 99.05231562 214.79746146 99.05231434 75.3632232 0 146.3077562-29.33519649 199.57752711-82.72770775S1009.1026963 643.47533395 1009.1026963 568.1121094499999c0-67.13954974-24.05731605-132.31523572-67.63051503-183.25291922l-41.97756145 35.84049078C934.59866203 461.6953106 953.86906294 514.10589126 953.86906294 568.1121094499999c0 125.19623447-101.87536701 227.07160148-227.07160148 227.07160278-77.9407926 0-149.49903253-39.27725041-191.47659398-105.06664462l-23.32086748-36.45419773-23.32086748 36.45419773C446.70157237 755.90646182 375.14333114 795.18371223 297.20253854 795.18371223c-125.19623447 0-227.07160148-101.87536701-227.07160148-227.07160278 0-58.67039168 22.21619394-114.27224997 62.72085824-156.61803377l-40.01369901-38.17257819zM512.61370693-82.41734429999997c-6.5052943 0-13.13333026 2.3320861-18.41121068 6.99625961-11.41495109 10.18753722-12.39688167 27.61681602-2.20934575 39.03176711L899.86284476 421.19064631c10.18753722 11.41495109 27.61681602 12.39688167 39.03176711 2.20934574 11.41495109-10.18753722 12.39688167-27.61681602 2.20934576-39.03176841L533.23426337-73.21173894000003c-5.40062208-6.13707066-13.01058862-9.20560534-20.62055644-9.20560536zM512.61370693-82.41734429999997c-7.60996783 0-15.09719271 3.06853468-20.62055643 9.20560536L92.34713101 373.93520443c-10.18753722 11.41495109-9.20560534 28.84422991 2.20934575 39.03176712s28.84422991 9.20560534 39.03176711-2.20934446l399.6460195-447.14694467c10.18753722-11.41495109 9.20560534-28.84422991-2.20934574-39.03176711-5.27788044-4.66417349-11.90591638-6.99625961-18.4112107-6.99625961z" horiz-adv-x="1024" />
</font>
</defs></svg>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment