698 lines
26 KiB
Vue
698 lines
26 KiB
Vue
<template>
|
||
<view :style="colorStyle">
|
||
<view>
|
||
<view class="w-full notice flex-y-center pl-30 fs-26"
|
||
v-show="(configData.community_integral_num > 0 || configData.community_exp_num > 0) && !id">
|
||
完成本次发布,审核通过可得
|
||
<text class="font-num" v-show="configData.community_integral_num > 0">{{configData.community_integral_num}}积分</text>
|
||
<text class="font-num" v-show="configData.community_integral_num > 0 && configData.community_exp_num > 0">+</text>
|
||
<text class="font-num" v-show="configData.community_exp_num > 0">{{configData.community_exp_num}}经验值</text>奖励
|
||
</view>
|
||
<view class="px-30">
|
||
<view class="pt-30 grid-column-3 grid-gap-20rpx">
|
||
<view class="relative w-full h-214" v-for="(item, index) in formData.slider_image" :key="index"
|
||
@tap="proviewPic(item)">
|
||
<image :src="item" mode="aspectFill" class="w-full h-214 rd-16rpx"></image>
|
||
<view class="abs-rt w-32 h-32 del-pic flex-center" @tap.stop="DelPic(index)">
|
||
<text class="iconfont icon-ic_close text--w111-fff fs-20"></text>
|
||
</view>
|
||
<view class="abs-lt poster-badge flex-center fs-18" v-if="index == 0">封面</view>
|
||
</view>
|
||
<view
|
||
class="w-full h-214 flex-col flex-center upload bg--w111-f5f5f5 rd-16rpx text--w111-999"
|
||
@click="uploadpic"
|
||
v-if="!formData.video_url && formData.slider_image.length < 9"
|
||
>
|
||
<text class="iconfont icon-ic_camera fs-60"></text>
|
||
<text class="fs-28 lh-40rpx pt-20">添加照片</text>
|
||
</view>
|
||
<view
|
||
class="w-full h-214 flex-col flex-center upload bg--w111-f5f5f5 rd-16rpx text--w111-999"
|
||
@click="uploadVideo"
|
||
v-if="!formData.slider_image.length && !formData.video_url"
|
||
>
|
||
<text class="iconfont icon-icon_video fs-60"></text>
|
||
<text class="fs-28 lh-40rpx pt-20">添加视频</text>
|
||
</view>
|
||
<block v-if="formData.video_url">
|
||
<view class="w-full h-214 flex-col flex-center video-bg rd-16rpx relative" @tap="openVideoPopup">
|
||
<view class="abs-rt w-32 h-32" @tap.stop="delVideo()"></view>
|
||
<view class="video-player flex-center">
|
||
<text class="iconfont icon-ic_right2 fs-28 text--w111-fff relative"></text>
|
||
</view>
|
||
<text class="pt-22 fs-18 text--w111-fff">点击可预览视频</text>
|
||
</view>
|
||
<view class="w-full h-214 flex-col flex-center upload bg--w111-f5f5f5 rd-16rpx text--w111-999" @click="uploadPoster" v-if="!formData.image">
|
||
<text class="iconfont icon-ic_camera fs-60"></text>
|
||
<text class="fs-28 lh-40rpx pt-12">添加封面</text>
|
||
</view>
|
||
<view class="w-full h-214 flex-col flex-center upload bg--w111-f5f5f5 rd-16rpx relative text--w111-999" @click="uploadPoster" v-if="formData.image">
|
||
<image :src="formData.image" mode="aspectFill" class="w-full h-214 rd-16rpx"></image>
|
||
<view class="abs-lt poster-badge flex-center fs-18">封面</view>
|
||
<view class="poster-huan flex-center text--w111-fff fs-18">更换封面</view>
|
||
</view>
|
||
</block>
|
||
</view>
|
||
<view class="py-32 bb-e">
|
||
<input class="fs-30 fw-500" placeholder="填写标题会有更多赞噢~" placeholder-class="text--w111-999" v-model="formData.title" maxlength="20" />
|
||
</view>
|
||
<view class="pt-18 pb-46 bb-e textarea">
|
||
<textarea
|
||
class="w-full fs-28 h-280"
|
||
placeholder="分享你的体验和心得,你的文字我们都很喜欢~"
|
||
name="comment"
|
||
placeholder-class="text--w111-999"
|
||
v-model="formData.content"
|
||
:maxlength="600"
|
||
></textarea>
|
||
</view>
|
||
<view class="h-100 flex-between-center" @tap="openDrawer(0)">
|
||
<view class="flex-y-center">
|
||
<text class="iconfont icon-icon_talk_2-2"></text>
|
||
<view class="pl-8">添加话题</view>
|
||
</view>
|
||
<view class="fs-28 text--w111-999 flex-y-center" v-show="!topicSelectedList.length">
|
||
<text>去添加</text>
|
||
<text class="iconfont icon-ic_rightarrow"></text>
|
||
</view>
|
||
<view class="fs-28 flex-y-center" v-show="topicSelectedList.length">
|
||
<view class="w-428 line1 text-right">
|
||
<text class="pl-8" v-for="(item, index) in topicSelectedList" :key="index">#{{ item.name }}</text>
|
||
</view>
|
||
<text class="iconfont icon-ic_rightarrow text--w111-999"></text>
|
||
</view>
|
||
</view>
|
||
<view class="mt-30 flex-between-center" @tap="openDrawer(1)">
|
||
<view class="flex-y-center">
|
||
<text class="iconfont icon-icon_Link"></text>
|
||
<view class="pl-8">
|
||
关联商品
|
||
<!-- <text v-show="productNum">({{ productNum }})</text> -->
|
||
</view>
|
||
</view>
|
||
<view class="flex-y-center justify-end" v-show="productSelect.length">
|
||
<image class="w-60 h-60 rd-6rpx block mr-12" v-for="(item, index) in productSelect" :key="index" :src="item.image"></image>
|
||
<text class="iconfont icon-ic_rightarrow fs-32 text--w111-999"></text>
|
||
</view>
|
||
<view class="fs-28 text--w111-999 flex-y-center" v-show="!productSelect.length">
|
||
<text>请选择</text>
|
||
<text class="iconfont icon-ic_rightarrow"></text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="pb-safe">
|
||
<view class="h-200"></view>
|
||
</view>
|
||
<view class="fixed-lb w-full pb-safe bg--w111-fff z-100">
|
||
<view class="footer-box flex-center">
|
||
<view class="w-690 h-88 flex-center bg-color text--w111-fff fs-28 rd-44rpx" @tap="confirmSave">发布</view>
|
||
</view>
|
||
</view>
|
||
<base-drawer mode="bottom" :visible="visible" background-color="transparent" mask maskClosable @close="confirmProductDrawer">
|
||
<view class="w-full bg--w111-fff rd-t-40rpx py-32 relative">
|
||
<view class="close-btn flex-center" @tap="confirmProductDrawer">
|
||
<text class="iconfont icon-ic_close text--w111-666 fs-24"></text>
|
||
</view>
|
||
<view class="flex-center fs-30 text--w111-999">
|
||
<view :class="{ 'tab-active': tabActive == 0 }" @tap="changeTab(0, 'pay')">已购</view>
|
||
<view class="ml-70" :class="{ 'tab-active': tabActive == 1 }" @tap="changeTab(1, 'collect')">收藏</view>
|
||
<view class="ml-70" :class="{ 'tab-active': tabActive == 2 }" @tap="changeTab(2, 'visit')">浏览</view>
|
||
</view>
|
||
<view class="px-30 mt-50 flex-between-center">
|
||
<view class="flex-1 px-32 h-58 rd-30rpx bg--w111-f5f5f5 flex-y-center">
|
||
<text class="iconfont icon-ic_search text--w111-999 fs-28"></text>
|
||
<input type="text" class="flex-1 pl-20 fs-26" placeholder="输入关键字搜索" placeholder-class="text--w111-ccc" v-model="where.keyword" />
|
||
</view>
|
||
<text class="fs-28 pl-24" @tap="getSearch">搜索</text>
|
||
</view>
|
||
<view class="px-30">
|
||
<scroll-view scroll-y="true" @scrolltolower="getProductList" style="height: 780rpx">
|
||
<view class="flex-between-center" v-for="(item, index) in productList" :key="index">
|
||
<text
|
||
class="iconfont text--w111-ccc fs-36"
|
||
:class="item.isSelect ? 'icon-a-ic_CompleteSelect' : 'icon-ic_unselect'"
|
||
@tap="selectItem(item, index)"
|
||
></text>
|
||
<view class="flex-1 flex h-160 mt-30 pl-30">
|
||
<image class="w-160 h-160 rd-16rpx" :src="item.image" mode="aspectFill"></image>
|
||
<view class="h-160 flex-1 flex-col justify-between pl-30">
|
||
<view class="h-68 lh-34rpx fs-30 line2">{{ item.store_name }}</view>
|
||
<baseMoney :money="item.price" symbolSize="24" integerSize="40" decimalSize="24" weight></baseMoney>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view v-if="!productList.length">
|
||
<emptyPage title="暂无商品,去看点别的吧~"></emptyPage>
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
<view class="mx-20 pb-safe bg--w111-fff">
|
||
<view class="mt-52 h-88 flex-center rd-44rpx bg-color fs-28 text--w111-fff mt-24" @tap="confirmProductDrawer">确定({{ productNum }}/5)</view>
|
||
</view>
|
||
</view>
|
||
</base-drawer>
|
||
<uni-popup ref="popup">
|
||
<view class="flex-center">
|
||
<view class="fixed-lt h-80 flex-y-center pl-20 z-999" :style="{ top: sysHeight + 'px' }" @tap="hideModal">
|
||
<text class="iconfont icon-ic_close fs-40 text--w111-fff"></text>
|
||
</view>
|
||
<!--#ifndef APP-PLUS-->
|
||
<video id="myVideo" autoplay loop muted :src="formData.video_url" :style="[videoStyle]"></video>
|
||
<!--#endif-->
|
||
<!--#ifdef APP-PLUS-->
|
||
<view v-html="videoHtml"></view>
|
||
<!--#endif-->
|
||
</view>
|
||
</uni-popup>
|
||
<canvas
|
||
canvas-id="canvas"
|
||
v-if="canvasStatus"
|
||
:style="{ width: canvasWidth + 'px', height: canvasHeight + 'px', position: 'absolute', left: '-100000px', top: '-100000px' }"
|
||
></canvas>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import colors from '@/mixins/color';
|
||
import store from '@/store';
|
||
import { mapState, mapGetters } from 'vuex';
|
||
import { toLogin } from '@/libs/login.js';
|
||
import { TOKENNAME, HTTP_REQUEST_URL } from '@/config/app.js';
|
||
import baseDrawer from '@/components/tui-drawer/tui-drawer.vue';
|
||
import emptyPage from '@/components/emptyPage.vue';
|
||
import { getProductslist } from '@/api/store.js';
|
||
import {
|
||
getTopicApi,
|
||
getProductApi,
|
||
communitySaveApi,
|
||
communityInfoApi,
|
||
communityUpdateApi,
|
||
getCommunityConfig ,
|
||
} from '@/api/community.js';
|
||
import { Debounce } from '@/utils/validate.js'
|
||
let app = getApp();
|
||
export default {
|
||
data() {
|
||
return {
|
||
sysHeight: app.globalData.sysHeight,
|
||
id: '',
|
||
canvasStatus: false,
|
||
visible: false,
|
||
tabActive: 0,
|
||
keyword: '',
|
||
topicList: [],
|
||
recommendTopic: [],
|
||
topicSelectedList: [],
|
||
productList: [],
|
||
productSelect: [],
|
||
loading: false,
|
||
where: {
|
||
page: 1,
|
||
limit: 20,
|
||
type: 'pay',
|
||
keyword: ''
|
||
},
|
||
formData: {
|
||
content_type: null, //内容类型1:图文2视频
|
||
title: '',
|
||
content: '',
|
||
image: '', //视频封面
|
||
video_url: '',
|
||
slider_image: [],
|
||
topic_name: [],
|
||
product_id: []
|
||
},
|
||
upload_max: 50,
|
||
uploadUrl: `${HTTP_REQUEST_URL}/api/upload/video`,
|
||
videoContext: '',
|
||
productNum: 0,
|
||
topicNum: 0,
|
||
canvasWidth: '',
|
||
canvasHeight: '',
|
||
configData:{
|
||
community_exp_num:0, //经验
|
||
community_integral_num:0 //积分
|
||
},
|
||
};
|
||
},
|
||
components: { baseDrawer, emptyPage },
|
||
computed: {
|
||
...mapGetters(['isLogin']),
|
||
videoHtml() {
|
||
return `<video autoplay loop muted controls="controls" width="100%" height="870px"><source src="${this.formData.video_url}" type="video/mp4"></video>`;
|
||
},
|
||
videoStyle() {
|
||
return {
|
||
width: uni.getWindowInfo().windowWidth + 'px',
|
||
height: uni.getWindowInfo().windowHeight + 'px'
|
||
};
|
||
},
|
||
popupHeight(){
|
||
return uni.getWindowInfo().windowHeight * 0.8
|
||
},
|
||
},
|
||
mixins: [colors],
|
||
onShow() {
|
||
let that = this;
|
||
uni.$on("topicSave", data => {
|
||
if (data) {
|
||
that.topicSelectedList = data;
|
||
}
|
||
// 清除监听
|
||
uni.$off('topicSave');
|
||
})
|
||
},
|
||
onLoad(options) {
|
||
if (this.isLogin) {
|
||
this.getConfig();
|
||
if (options.id) {
|
||
this.id = options.id;
|
||
this.getInfo();
|
||
}
|
||
if (options.topic_name) {
|
||
// this.topicName = options.topic_name;
|
||
this.topicSelectedList.push({name:options.topic_name})
|
||
}
|
||
|
||
this.getProductList();
|
||
// #ifndef APP-PLUS
|
||
this.videoContext = uni.createVideoContext('myVideo', this);
|
||
// #endif
|
||
} else {
|
||
toLogin();
|
||
}
|
||
},
|
||
methods: {
|
||
getConfig(){
|
||
getCommunityConfig().then(res=>{
|
||
this.configData = res.data;
|
||
})
|
||
},
|
||
proviewPic(url){
|
||
uni.previewImage({
|
||
urls: this.formData.slider_image,
|
||
current: url
|
||
});
|
||
},
|
||
DelPic(index) {
|
||
this.formData.slider_image.splice(index, 1);
|
||
},
|
||
delVideo() {
|
||
this.formData.video_url = '';
|
||
},
|
||
openVideoPopup() {
|
||
this.$refs.popup.open();
|
||
this.videoContext = uni.createVideoContext('myVideo', this);
|
||
this.$nextTick(() => {
|
||
this.videoContext.play();
|
||
});
|
||
},
|
||
hideModal() {
|
||
this.$refs.popup.close();
|
||
},
|
||
uploadPoster() {
|
||
let that = this;
|
||
this.canvasStatus = true;
|
||
that.$util.uploadImageChange(
|
||
{ count: 1, url: 'upload/image' },
|
||
function (res) {
|
||
that.formData.image = res.data.url;
|
||
},
|
||
(res) => {
|
||
this.canvasStatus = false;
|
||
},
|
||
(res) => {
|
||
this.canvasWidth = res.w;
|
||
this.canvasHeight = res.h;
|
||
}
|
||
);
|
||
},
|
||
uploadpic() {
|
||
let that = this;
|
||
this.canvasStatus = true;
|
||
that.$util.uploadImageChange(
|
||
{ count: 9, url: 'upload/image' },
|
||
function (res) {
|
||
if (that.formData.slider_image.length == 9)
|
||
return that.$util.Tips({
|
||
title: '最多上传9张'
|
||
});
|
||
that.formData.slider_image.push(res.data.url);
|
||
},
|
||
(res) => {
|
||
this.canvasStatus = false;
|
||
},
|
||
(res) => {
|
||
this.canvasWidth = res.w;
|
||
this.canvasHeight = res.h;
|
||
}
|
||
);
|
||
},
|
||
// 上传视频
|
||
uploadVideo() {
|
||
let that = this;
|
||
uni.chooseVideo({
|
||
sourceType: ['camera', 'album'],
|
||
success: (res) => {
|
||
uni.showLoading({
|
||
title: '视频上传中'
|
||
});
|
||
if (Math.ceil(res.size / 1024) < that.upload_max * 1024) {
|
||
uni.uploadFile({
|
||
url: that.uploadUrl,
|
||
filePath: res.tempFilePath,
|
||
name: 'file',
|
||
header: {
|
||
// #ifdef MP
|
||
'Content-Type': 'multipart/form-data',
|
||
// #endif
|
||
[TOKENNAME]: 'Bearer ' + store.state.app.token
|
||
},
|
||
success: (uploadFileRes) => {
|
||
uni.hideLoading();
|
||
let data = JSON.parse(uploadFileRes.data);
|
||
if (data.status == 200) {
|
||
that.formData.video_url = data.data.url;
|
||
} else {
|
||
return this.$util.Tips({
|
||
title: data.msg
|
||
});
|
||
}
|
||
},
|
||
complete: function (err) {
|
||
uni.hideLoading();
|
||
}
|
||
});
|
||
} else {
|
||
uni.hideLoading();
|
||
uni.showModal({
|
||
title: '提示',
|
||
showCancel: false,
|
||
content: `视频超出限制${that.upload_max}MB`
|
||
});
|
||
}
|
||
},
|
||
fail: (err) => {
|
||
that.$util.Tips({
|
||
title: err
|
||
});
|
||
}
|
||
});
|
||
},
|
||
confirmProductDrawer() {
|
||
this.visible = false;
|
||
},
|
||
openDrawer(type) {
|
||
if (type == 1) {
|
||
if (this.id) {
|
||
this.productList.map((itemA) => {
|
||
this.formData.product_id.forEach((itemB) => {
|
||
if (itemB === itemA.product_id) {
|
||
this.$set(itemA, 'isSelect', true);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
this.visible = !this.visible;
|
||
} else {
|
||
let that = this;
|
||
// uni.$emit("topicOpen", that.topicSelectedList)
|
||
let jsonStr = '';
|
||
if(this.topicSelectedList.length){
|
||
jsonStr = JSON.stringify(this.topicSelectedList)
|
||
}
|
||
uni.navigateTo({
|
||
url: '/pages/discover/discoverCreate/topic?data=' + jsonStr
|
||
})
|
||
// this.showTopic = !this.showTopic;
|
||
// if (this.showTopic) {
|
||
// this.topicKeyword = '#';
|
||
// this.focus = true;
|
||
// }
|
||
}
|
||
},
|
||
getProductList() {
|
||
if (this.loading) return;
|
||
this.loading = true;
|
||
getProductApi(this.where)
|
||
.then((res) => {
|
||
res.data.map((item) => {
|
||
this.$set(item, 'isSelect', false);
|
||
this.formData.product_id.forEach((itemB) => {
|
||
if (itemB === item.product_id) {
|
||
this.$set(item, 'isSelect', true);
|
||
}
|
||
});
|
||
});
|
||
let list = res.data;
|
||
let loading = list.length < this.where.limit;
|
||
this.productList = this.productList.concat(list);
|
||
this.where.page++;
|
||
this.loading = loading;
|
||
})
|
||
.catch((err) => {
|
||
this.loading = false;
|
||
return this.$util.Tips({
|
||
title: err
|
||
});
|
||
});
|
||
},
|
||
getSearch() {
|
||
this.loading = false;
|
||
this.where.page = 1;
|
||
this.productList = [];
|
||
this.getProductList();
|
||
},
|
||
changeTab(val, type) {
|
||
this.tabActive = val;
|
||
this.where.type = type;
|
||
this.getSearch();
|
||
},
|
||
selectItem(item) {
|
||
if (item.isSelect) {
|
||
item.isSelect = false;
|
||
if (this.formData.product_id.includes(item.product_id)) {
|
||
let i = this.productSelect.findIndex((o) => o.id == item.product_id);
|
||
this.productSelect.splice(i, 1);
|
||
this.formData.product_id.splice(i, 1);
|
||
this.productNum--;
|
||
}
|
||
} else {
|
||
if (this.productSelect.length == 5)
|
||
return this.$util.Tips({
|
||
title: '最多选择5件商品'
|
||
});
|
||
item.isSelect = true;
|
||
let arr = [];
|
||
this.productSelect.forEach((k) => {
|
||
arr.push(k.id);
|
||
});
|
||
if (!arr.includes(item.product_id)) {
|
||
this.productNum++;
|
||
this.productSelect.push(item);
|
||
this.formData.product_id.push(item.product_id);
|
||
}
|
||
}
|
||
},
|
||
confirmSave() {
|
||
// if(!this.formData.title) return this.$util.Tips({
|
||
// title: '请输入标题'
|
||
// })
|
||
if (!this.formData.content)
|
||
return this.$util.Tips({
|
||
title: '请输入内容'
|
||
});
|
||
if (!this.formData.video_url && !this.formData.slider_image.length)
|
||
return this.$util.Tips({
|
||
title: '请上传要分享的图片'
|
||
});
|
||
if (this.formData.video_url && !this.formData.image)
|
||
return this.$util.Tips({
|
||
title: '请上传海报'
|
||
});
|
||
this.formData.topic_name = this.topicSelectedList.map(item => item.name);
|
||
this.formData.content_type = this.formData.slider_image.length ? 1 : 2;
|
||
uni.showLoading({
|
||
title: '正在提交...'
|
||
});
|
||
let funApi = '';
|
||
funApi = this.id ? communityUpdateApi(this.id, this.formData) : communitySaveApi(this.formData);
|
||
funApi
|
||
.then((res) => {
|
||
uni.hideLoading();
|
||
let exp = this.configData.community_exp_num;
|
||
let integral = this.configData.community_integral_num;
|
||
return this.$util.Tips(
|
||
{
|
||
title: res.msg
|
||
},
|
||
{
|
||
tab: 4,
|
||
url: '/pages/discoverIndex/index'
|
||
}
|
||
);
|
||
})
|
||
.catch((err) => {
|
||
uni.hideLoading();
|
||
return this.$util.Tips({
|
||
title: err
|
||
});
|
||
});
|
||
},
|
||
getInfo() {
|
||
communityInfoApi(this.id)
|
||
.then((res) => {
|
||
let info = res.data;
|
||
let keys = Object.keys(this.formData);
|
||
keys.map((i) => {
|
||
this.formData[i] = info[i];
|
||
});
|
||
if (this.formData.product_id == null) {
|
||
this.formData.product_id = [];
|
||
}
|
||
if (res.data.topic.length) {
|
||
this.topicSelectedList = res.data.topic;
|
||
}
|
||
if (res.data.product && res.data.product.length) {
|
||
this.productSelect = res.data.product;
|
||
}
|
||
this.productNum = res.data.product.length;
|
||
this.topicNum = res.data.topic.length;
|
||
})
|
||
.catch((err) => {
|
||
return this.$util.Tips({
|
||
title: err
|
||
});
|
||
});
|
||
},
|
||
}
|
||
};
|
||
</script>
|
||
<style>
|
||
page {
|
||
background-color: #ffffff;
|
||
}
|
||
</style>
|
||
<style lang="scss">
|
||
.notice {
|
||
height: 84rpx;
|
||
background: var(--view-minorColorT);
|
||
}
|
||
.del-pic {
|
||
background-color: #999;
|
||
border-radius: 0 16rpx 0 16rpx;
|
||
}
|
||
.close-btn {
|
||
position: absolute;
|
||
right: 28rpx;
|
||
top: 28rpx;
|
||
width: 36rpx;
|
||
height: 36rpx;
|
||
border-radius: 50%;
|
||
background-color: #eee;
|
||
}
|
||
.bb-e {
|
||
border-bottom: 1rpx solid #eee;
|
||
}
|
||
.b-e {
|
||
border: 1rpx solid #eee;
|
||
}
|
||
.b-d {
|
||
border: 1rpx solid #ddd;
|
||
}
|
||
.filter-cell ~ .filter-cell{
|
||
border-top: 1px solid #f5f5f5;
|
||
}
|
||
.textarea {
|
||
height: 100%;
|
||
}
|
||
.label-item {
|
||
color: var(--view-theme);
|
||
background: var(--view-minorColorT);
|
||
border: 1rpx solid transparent;
|
||
}
|
||
.icon-a-ic_CompleteSelect {
|
||
color: var(--view-theme);
|
||
}
|
||
.pro-cell {
|
||
padding: 36rpx 30rpx;
|
||
}
|
||
.add-btn {
|
||
width: 690rpx;
|
||
height: 88rpx;
|
||
background: var(--view-theme);
|
||
border-radius: 50rpx;
|
||
background-color: var(--view-theme);
|
||
margin-bottom: 32rpx;
|
||
}
|
||
.tab-active {
|
||
font-weight: 500;
|
||
color: #333;
|
||
position: relative;
|
||
&:after {
|
||
content: '';
|
||
position: absolute;
|
||
left: 50%;
|
||
transform: translateX(-50%);
|
||
bottom: -14rpx;
|
||
width: 40rpx;
|
||
height: 5rpx;
|
||
background: var(--view-theme);
|
||
border-radius: 4rpx;
|
||
}
|
||
}
|
||
.poster-badge {
|
||
width: 54rpx;
|
||
height: 29rpx;
|
||
background: var(--view-theme);
|
||
color: #fff;
|
||
border-radius: 16rpx 0rpx 16rpx 0rpx;
|
||
}
|
||
.video-bg {
|
||
background-image: url('@/static/img/video_bg.png');
|
||
background-repeat: no-repeat;
|
||
background-size: cover;
|
||
}
|
||
.video-player {
|
||
width: 50rpx;
|
||
height: 50rpx;
|
||
border-radius: 50%;
|
||
background: rgba(0, 0, 0, 0.5);
|
||
.iconfont {
|
||
left: 2rpx;
|
||
}
|
||
}
|
||
.poster-huan {
|
||
position: absolute;
|
||
bottom: 0;
|
||
width: 100%;
|
||
height: 40rpx;
|
||
background: rgba(0, 0, 0, 0.5);
|
||
border-radius: 0rpx 0rpx 16rpx 16rpx;
|
||
}
|
||
.canvas-box {
|
||
position: absolute;
|
||
left: -100px;
|
||
top: -100px;
|
||
width: 750px;
|
||
height: 1624px;
|
||
}
|
||
.footer-box {
|
||
height: 126rpx;
|
||
.w-690 {
|
||
width: 690rpx;
|
||
}
|
||
}
|
||
.mt-62{
|
||
margin-top: 62rpx;
|
||
}
|
||
.close-icon{
|
||
top: 36rpx;
|
||
right: 32rpx;
|
||
}
|
||
.overflow-scroll{
|
||
overflow-y: scroll;
|
||
}
|
||
</style>
|