You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1011 lines
31 KiB
1011 lines
31 KiB
<template>
|
|
<div class="liveRoomPage">
|
|
<nav>
|
|
<el-form :inline="true" :model="listQuery" class="demo-form-inline">
|
|
<el-form-item label="状态:" label-width="100px">
|
|
<el-radio-group v-model="listQuery.state" @change="searchTypeChange">
|
|
<el-radio-button
|
|
v-for="item in searchType"
|
|
:key="item.value"
|
|
:label="item.value"
|
|
>
|
|
{{ item.label }}
|
|
</el-radio-button>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<br>
|
|
<el-form-item label="关键字:" label-width="100px">
|
|
<el-input
|
|
v-model="listQuery.search"
|
|
maxlength="20"
|
|
placeholder="请输入直播间名称/ID/主播昵称/微信号"
|
|
class="inputKeyWord"
|
|
style="width:400px;"
|
|
>
|
|
<el-button slot="append" icon="el-icon-search" @click="getList" />
|
|
</el-input>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button style="margin-left: 20px" type="success" @click="add">创建直播间</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
</nav>
|
|
<section>
|
|
<el-table
|
|
ref="multipleTable"
|
|
:data="roomList"
|
|
border
|
|
:header-cell-style="{ background: '#EEF3FF', color: '#333333' }"
|
|
tooltip-effect="dark"
|
|
style="width: 100%"
|
|
>
|
|
<el-table-column prop="id" label="直播间id" />
|
|
<el-table-column prop="title" label="直播间标题" />
|
|
<el-table-column prop="anchorNickname" label="主播昵称" />
|
|
<el-table-column prop="anchorWechat" label="主播微信号" />
|
|
<el-table-column prop="startTime" label="直播开始时间" />
|
|
<el-table-column prop="endTime" label="预计结束时间" />
|
|
<el-table-column prop="createTime" label="创建时间" />
|
|
<el-table-column label="审核状态" width="100">
|
|
<template slot-scope="scope">
|
|
<el-tag v-if="scope.row.state == 0" type="warning">
|
|
待审核
|
|
</el-tag>
|
|
<el-tag v-if="scope.row.state == 1" type="success">
|
|
已通过
|
|
</el-tag>
|
|
<el-tag v-if="scope.row.state == 2" type="danger">
|
|
未通过
|
|
</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column
|
|
fixed="right"
|
|
width="200"
|
|
label="操作"
|
|
show-overflow-tooltip
|
|
>
|
|
<template slot-scope="scope">
|
|
<div class="btnList">
|
|
<el-button
|
|
v-if="scope.row.state == 1"
|
|
type="text"
|
|
@click="addPro(scope.row)"
|
|
>导入</el-button>
|
|
<el-button type="text" @click="edit(scope.row)">编辑</el-button>
|
|
<el-button type="text" @click="seeMore(scope.row)">详情</el-button>
|
|
<el-button type="text" @click="del(scope.row)">删除</el-button>
|
|
<el-button
|
|
v-if="scope.row.state == 2"
|
|
type="text"
|
|
@click="reExamine(scope.row)"
|
|
>重新审核</el-button>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<div class="pagination">
|
|
<el-pagination
|
|
:current-page="listQuery.page"
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
:page-size="10"
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
:total="total"
|
|
@size-change="handleSizeChange"
|
|
@current-change="handleCurrentChange"
|
|
/>
|
|
</div>
|
|
</section>
|
|
|
|
<el-dialog
|
|
:title="'直播间信息'"
|
|
:visible.sync="DetailsLiveShow"
|
|
width="50%"
|
|
center
|
|
:close-on-click-modal="false"
|
|
>
|
|
<el-row>
|
|
<el-col :span="12">
|
|
<el-form :model="liveForm" size="mini" label-width="180px">
|
|
<el-form-item label="直播间标题:">
|
|
{{ liveForm.title }}
|
|
</el-form-item>
|
|
<el-form-item label="直播间id:">
|
|
{{ liveForm.id }}
|
|
</el-form-item>
|
|
<el-form-item label="直播间开始时间:">
|
|
{{ liveForm.startTime }}
|
|
</el-form-item>
|
|
<el-form-item label="背景图:">
|
|
<img :src="liveForm.coverImg" alt="" srcset="">
|
|
</el-form-item>
|
|
<el-form-item label="直播间类型:">
|
|
{{ liveForm.liveType == 1 ? "推流" : "手机" }}
|
|
</el-form-item>
|
|
<el-form-item label="是否开启点赞:">
|
|
{{ liveForm.closeLike == 0 ? "是" : "否" }}
|
|
</el-form-item>
|
|
<el-form-item label="是否开启评论:">
|
|
{{ liveForm.closeComment == 0 ? "是" : "否" }}
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form :model="liveForm" size="mini" label-width="180px">
|
|
<el-form-item label="主播微信号:">
|
|
{{ liveForm.anchorWechat }}
|
|
</el-form-item>
|
|
<el-form-item label="主播昵称:">
|
|
{{ liveForm.anchorNickname }}
|
|
</el-form-item>
|
|
<el-form-item label="直播间结束时间:">
|
|
{{ liveForm.endTime }}
|
|
</el-form-item>
|
|
<el-form-item label="分享图:">
|
|
<img :src="liveForm.shareImg" alt="" srcset="">
|
|
</el-form-item>
|
|
<el-form-item label="是否开启回放:">
|
|
{{ liveForm.closePlayback == 0 ? "是" : "否" }}
|
|
</el-form-item>
|
|
<el-form-item label="是否开启预约:">
|
|
{{ liveForm.closeAppointment == 0 ? "是" : "否" }}
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-col>
|
|
</el-row>
|
|
<div>
|
|
<el-table
|
|
ref="multipleTable"
|
|
:data="roomProList"
|
|
border
|
|
:header-cell-style="{ background: '#EEF3FF', color: '#333333' }"
|
|
tooltip-effect="dark"
|
|
style="width: 100%"
|
|
>
|
|
<el-table-column prop="productId" label="商品ID" />
|
|
<el-table-column prop="productImage" label="商品图片">
|
|
<template slot-scope="scope">
|
|
<img
|
|
style="width: 40px; height: 40px"
|
|
:src="scope.row.productImage"
|
|
alt=""
|
|
>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="productName" label="商品名称" />
|
|
<el-table-column prop="stockNumber" label="库存" />
|
|
<el-table-column label="价格">
|
|
<template slot-scope="scope">
|
|
<span v-if="scope.row.priceType == 1">
|
|
一口价: {{ scope.row.fixedPrice }}
|
|
</span>
|
|
<span v-if="scope.row.priceType == 2">
|
|
最低价:{{ scope.row.minPrice }} <br>
|
|
最高价:{{ scope.row.maxPrice }}
|
|
</span>
|
|
<span v-if="scope.row.priceType == 3">
|
|
现价: {{ scope.row.marketPrice }}
|
|
</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="saleNumber" label="销售数量" />
|
|
<el-table-column prop="saleAmount" label="销售金额" />
|
|
</el-table>
|
|
<el-pagination
|
|
style="margin-top: 20px"
|
|
:current-page="proListQuery.page"
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
:page-size="10"
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
:total="proTotal"
|
|
@size-change="handleSizeChange1"
|
|
@current-change="handleCurrentChange1"
|
|
/>
|
|
</div>
|
|
<div v-if="liveForm.remark" style="text-align: center; margin-top: 20px">
|
|
<span style="color: red">备注:</span>
|
|
{{ liveForm.remark }}
|
|
</div>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="closeFn">关 闭</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
<!--表单组件-->
|
|
<el-dialog
|
|
:close-on-click-modal="false"
|
|
:visible.sync="addLiveShow"
|
|
:title="LiveShowState == 1 ? '创建直播间' : '编辑直播间'"
|
|
width="800px"
|
|
center
|
|
>
|
|
<el-form
|
|
ref="form"
|
|
:model="form"
|
|
:rules="rules"
|
|
size="small"
|
|
label-width="140px"
|
|
>
|
|
<el-form-item label="直播间标题" prop="title">
|
|
<el-input
|
|
v-model="form.title"
|
|
maxlength="20"
|
|
style="width: 370px"
|
|
:disabled="isDisabled"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item label="直播间背景图" prop="coverImg">
|
|
<div class="uploadWidth">
|
|
<el-upload
|
|
class="avatar-uploader1"
|
|
:headers="headers"
|
|
:action="uploadUrl"
|
|
:show-file-list="false"
|
|
:on-success="handlePictureCardPreview1"
|
|
>
|
|
<img
|
|
v-if="form.coverImg"
|
|
:src="form.coverImg"
|
|
class="avatar"
|
|
>
|
|
<i v-else class="el-icon-plus avatar-uploader-icon" />
|
|
</el-upload>
|
|
</div>
|
|
<p style="color: #cf0f0f">直播间背景图,图片规则:建议像素1080*1920,大小不超过2M</p>
|
|
</el-form-item>
|
|
<el-form-item label="直播间分享图片" prop="shareImg">
|
|
<div class="uploadWidth">
|
|
<el-upload
|
|
class="avatar-uploader2"
|
|
:headers="headers"
|
|
:action="uploadUrl"
|
|
:show-file-list="false"
|
|
:on-success="handlePictureCardPreview2"
|
|
>
|
|
<img v-if="form.shareImg" :src="form.shareImg" class="avatar">
|
|
<i v-else class="el-icon-plus avatar-uploader-icon" />
|
|
</el-upload>
|
|
</div>
|
|
<p style="color: #cf0f0f">直播分享图 ,建议像素800*640,大小不超过1M</p>
|
|
</el-form-item>
|
|
<el-form-item label="封面图" prop="feedsImg">
|
|
<div class="uploadWidth">
|
|
<el-upload
|
|
class="avatar-uploader3"
|
|
:headers="headers"
|
|
:action="uploadUrl"
|
|
:show-file-list="false"
|
|
:on-success="handlePictureCardPreview3"
|
|
>
|
|
<img v-if="form.feedsImg" :src="form.feedsImg" class="avatar">
|
|
<i v-else class="el-icon-plus avatar-uploader-icon" />
|
|
</el-upload>
|
|
</div>
|
|
<p style="color: #cf0f0f">购物直播封面图 ,建议尺寸800*800</p>
|
|
</el-form-item>
|
|
<el-form-item label="计划直播开始时间" prop="startTime">
|
|
<el-date-picker
|
|
v-model="form.startTime"
|
|
type="datetime"
|
|
style="width: 370px"
|
|
:disabled="isDisabled"
|
|
format="yyyy-MM-dd HH:mm:ss"
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
/>
|
|
<p style="color: #cf0f0f">
|
|
开播时间需要在当前时间的50分钟左右,并且开始时间不能在6个月后
|
|
</p>
|
|
</el-form-item>
|
|
<el-form-item label="计划直播结束时间" prop="endTime">
|
|
<el-date-picker
|
|
v-model="form.endTime"
|
|
type="datetime"
|
|
style="width: 370px"
|
|
:disabled="isDisabled"
|
|
format="yyyy-MM-dd HH:mm:ss"
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
/>
|
|
<p style="color: #cf0f0f">
|
|
开播时间和结束时间间隔不得短于30分钟,不得超过24小时
|
|
</p>
|
|
</el-form-item>
|
|
<el-form-item
|
|
label="主播昵称"
|
|
prop="anchorNickname"
|
|
:disabled="isDisabled"
|
|
>
|
|
<el-input
|
|
v-model="form.anchorNickname"
|
|
maxlength="20"
|
|
style="width: 370px"
|
|
:disabled="isDisabled"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item
|
|
label="主播微信号"
|
|
prop="anchorWechat"
|
|
:disabled="isDisabled"
|
|
>
|
|
<el-input
|
|
v-model="form.anchorWechat"
|
|
maxlength="20"
|
|
style="width: 370px"
|
|
:disabled="isDisabled"
|
|
/>
|
|
<p style="color: #cf0f0f">
|
|
主播微信号需要实名,搜索微信官方小程序【小程序直播】进行认证
|
|
</p>
|
|
</el-form-item>
|
|
<el-form-item label="主播头像" prop="anchorImge">
|
|
<div class="uploadWidth">
|
|
<el-upload
|
|
class="avatar-uploader3"
|
|
:headers="headers"
|
|
:action="uploadUrl"
|
|
:show-file-list="false"
|
|
:on-success="handlePictureCardPreview4"
|
|
>
|
|
<img
|
|
v-if="form.anchorHeadImg"
|
|
:src="form.anchorHeadImg"
|
|
class="avatar"
|
|
>
|
|
<i v-else class="el-icon-plus avatar-uploader-icon" />
|
|
</el-upload>
|
|
</div>
|
|
</el-form-item>
|
|
|
|
<el-form-item label="直播间类型" prop="liveType">
|
|
<el-radio-group v-model="form.liveType" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">推流</el-radio>
|
|
<el-radio :label="0">手机直播</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item label="横屏、竖屏" prop="screenType">
|
|
<el-radio-group v-model="form.screenType" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">横屏</el-radio>
|
|
<el-radio :label="0">竖屏</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item label="是否关闭点赞" prop="closeLike">
|
|
<el-radio-group v-model="form.closeLike" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">关闭</el-radio>
|
|
<el-radio :label="0">开启</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item label="是否关闭货架" prop="closeGoodsShelf">
|
|
<el-radio-group v-model="form.closeGoodsShelf" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">关闭</el-radio>
|
|
<el-radio :label="0">开启</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item label="是否关闭评论" prop="closeComment">
|
|
<el-radio-group v-model="form.closeComment" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">关闭</el-radio>
|
|
<el-radio :label="0">开启</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
|
|
<el-form-item label="是否关闭回放" prop="closePlayback">
|
|
<el-radio-group v-model="form.closePlayback" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">关闭</el-radio>
|
|
<el-radio :label="0">开启</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<el-form-item label="是否关闭分享" prop="closeShare">
|
|
<el-radio-group v-model="form.closeShare" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">关闭</el-radio>
|
|
<el-radio :label="0">开启</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
<!-- <el-form-item label="是否关闭客服" prop="closeService">
|
|
<el-radio-group v-model="form.closeService" :disabled="isDisabled">
|
|
<el-radio :label="1" class="radio">关闭</el-radio>
|
|
<el-radio :label="0">开启</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item> -->
|
|
<el-form-item label="是否关闭预约" prop="closeAppointment">
|
|
<el-radio-group
|
|
v-model="form.closeAppointment"
|
|
:disabled="isDisabled"
|
|
>
|
|
<el-radio :label="1" class="radio">关闭</el-radio>
|
|
<el-radio :label="0">开启</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="addLiveShow = false">取 消</el-button>
|
|
<el-button
|
|
v-if="LiveShowState == 1"
|
|
type="success"
|
|
:disabled="isDisabled"
|
|
@click="submitCU"
|
|
>确 认</el-button>
|
|
<el-button
|
|
v-if="LiveShowState == 2"
|
|
type="primary"
|
|
:disabled="isDisabled"
|
|
@click="submitCU"
|
|
>保 存</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
<!-- 导入商品 -->
|
|
<el-dialog
|
|
title="导入商品"
|
|
:visible.sync="addProShow"
|
|
width="60%"
|
|
center
|
|
:close-on-click-modal="false"
|
|
>
|
|
<el-form
|
|
:inline="true"
|
|
:model="proListPassQuery"
|
|
class="demo-form-inline"
|
|
>
|
|
<el-form-item class="inputWide" label="关键字">
|
|
<el-input
|
|
v-model="proListPassQuery.search"
|
|
maxlength="20"
|
|
placeholder="请输入关键字搜索"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-button type="primary" plain @click="getProPassList">查询</el-button>
|
|
</el-form-item>
|
|
</el-form>
|
|
<!-- 表格 -->
|
|
<div class="tableBox">
|
|
<el-table
|
|
ref="multipleTable"
|
|
:data="proListPassData"
|
|
border
|
|
:header-cell-style="{ background: '#EEF3FF', color: '#333333' }"
|
|
tooltip-effect="dark"
|
|
style="width: 100%"
|
|
@selection-change="handleSelectionChange"
|
|
>
|
|
<el-table-column type="selection" width="55" />
|
|
<el-table-column prop="productId" label="商品ID" />
|
|
<el-table-column prop="productImage" label="商品图片">
|
|
<template slot-scope="scope">
|
|
<img
|
|
style="width: 40px; height: 40px"
|
|
:src="scope.row.productImage"
|
|
alt=""
|
|
>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="productName" label="商品名称" />
|
|
<el-table-column prop="stockNumber" label="库存" />
|
|
<el-table-column label="价格">
|
|
<template slot-scope="scope">
|
|
<span v-if="scope.row.priceType == 1">
|
|
一口价: {{ scope.row.fixedPrice }}
|
|
</span>
|
|
<span v-if="scope.row.priceType == 2">
|
|
最低价:{{ scope.row.minPrice }} <br>
|
|
最高价:{{ scope.row.maxPrice }}
|
|
</span>
|
|
<span v-if="scope.row.priceType == 3">
|
|
现价: {{ scope.row.marketPrice }}
|
|
</span>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<el-pagination
|
|
style="margin-top: 20px"
|
|
:page-sizes="[10, 20, 50, 100]"
|
|
:page-size="10"
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
:total="proListPassTotal"
|
|
@size-change="handleSizeChange3"
|
|
@current-change="handleCurrentChange3"
|
|
/>
|
|
</div>
|
|
<!-- 新增用户 -->
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="addProShow = false">取 消</el-button>
|
|
<el-button type="success" @click="addproSubmit">确 定</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
liveGetList,
|
|
liveGetProduct,
|
|
addLiveSave,
|
|
updateLive,
|
|
deleteLive,
|
|
liveProGetAll,
|
|
importProduct,
|
|
reExamine,
|
|
} from '@/api/live';
|
|
import { WXuploadUrl } from '@/utils/request';
|
|
import { getToken } from '@/utils/auth.js'
|
|
export default {
|
|
data() {
|
|
return {
|
|
uploadUrl: WXuploadUrl,
|
|
headers: {
|
|
'Authorization-business': getToken()
|
|
},
|
|
searchType: [
|
|
{
|
|
label: '全部',
|
|
value: null,
|
|
},
|
|
{
|
|
label: '待审核',
|
|
value: 0,
|
|
},
|
|
{
|
|
label: '审核已通过',
|
|
value: 1,
|
|
},
|
|
{
|
|
label: '审核未通过',
|
|
value: 2,
|
|
},
|
|
],
|
|
listQuery: {
|
|
state: null,
|
|
search: '',
|
|
page: 0,
|
|
pageSize: 10,
|
|
shopId: null,
|
|
},
|
|
proListQuery: {
|
|
liveId: null,
|
|
page: 0,
|
|
pageSize: 10,
|
|
shopId: null,
|
|
},
|
|
roomList: [], // 直播间列表
|
|
roomProList: [], // 直播相关产品列表
|
|
total: 0,
|
|
proTotal: 0,
|
|
DetailsLiveShow: false,
|
|
activeName: 'first',
|
|
disabled: false,
|
|
liveForm: {}, // 添加直播间
|
|
// 添加直播间部分
|
|
addLiveShow: false,
|
|
isDisabled: false,
|
|
LiveShowState: false,
|
|
form: {
|
|
anchorHeadImg: '',
|
|
anchorNickname: '',
|
|
anchorWechat: '',
|
|
coverImg: '',
|
|
coverMediaId: '',
|
|
closeAppointment: 0,
|
|
closeComment: 0,
|
|
closeGoodsShelf: 0,
|
|
closeLike: 0,
|
|
closePlayback: 0,
|
|
closeService: 0,
|
|
closeShare: 0,
|
|
feedsImg: '',
|
|
feedsMediaId: '',
|
|
endTime: '',
|
|
id: 0,
|
|
liveType: 0,
|
|
remark: '',
|
|
screenType: 0,
|
|
shareImg: '',
|
|
shareMediaId: '',
|
|
shopId: 0,
|
|
startTime: '',
|
|
state: 0,
|
|
title: '',
|
|
},
|
|
rules: {
|
|
title: [
|
|
{ required: true, message: '直播间标题不能为空', trigger: 'blur' },
|
|
{ min: 3, max: 17, message: '最短3个汉字,最长17个汉字', trigger: 'blur' }
|
|
],
|
|
coverImg: [
|
|
{ required: true, message: '背景图不能为空', trigger: 'blur' },
|
|
],
|
|
feedsImg: [
|
|
{ required: true, message: '封面图不能为空', trigger: 'blur' },
|
|
],
|
|
shareImg: [
|
|
{ required: true, message: '分享图片不能为空', trigger: 'blur' },
|
|
],
|
|
startTime: [
|
|
{ required: true, message: '开始时间不能为空', trigger: 'blur' },
|
|
],
|
|
endTime: [
|
|
{ required: true, message: '预计结束时间不能为空', trigger: 'blur' },
|
|
],
|
|
anchorNickname: [
|
|
{ required: true, message: '主播昵称不能为空', trigger: 'blur' },
|
|
{ min: 2, max: 15, message: '最短2个汉字,最长15个汉字', trigger: 'blur' }
|
|
],
|
|
anchorWechat: [
|
|
{ required: true, message: '主播微信号不能为空', trigger: 'blur' },
|
|
],
|
|
liveType: [
|
|
{
|
|
required: true,
|
|
message: '直播间类型 1:推流 0:手机直播不能为空',
|
|
trigger: 'blur',
|
|
},
|
|
],
|
|
screenType: [
|
|
{
|
|
required: true,
|
|
message: '横屏、竖屏 【1:横屏,0:竖屏】不能为空',
|
|
trigger: 'blur',
|
|
},
|
|
],
|
|
closeGoodsShelf: [
|
|
{
|
|
required: true,
|
|
message: '是否关闭货架 【0:开启,1:关闭】不能为空',
|
|
trigger: 'blur',
|
|
},
|
|
],
|
|
closeComment: [
|
|
{
|
|
required: true,
|
|
message: '是否关闭评论 【0:开启,1:关闭】不能为空',
|
|
trigger: 'blur',
|
|
},
|
|
],
|
|
closeAppointment: [
|
|
{
|
|
required: true,
|
|
message: '是否关闭预约 【0:开启,1:关闭】不能为空',
|
|
trigger: 'blur',
|
|
},
|
|
],
|
|
},
|
|
addProShow: false,
|
|
proListPassData: [],
|
|
proListPassQuery: {
|
|
liveId: null,
|
|
page: 0,
|
|
pageSize: 10,
|
|
shopId: null,
|
|
search: null,
|
|
},
|
|
proListPassTotal: 0,
|
|
proPassFrom: {
|
|
liveId: null,
|
|
liveProductIdList: [],
|
|
shopId: null,
|
|
},
|
|
isAllow: true,
|
|
};
|
|
},
|
|
created() {
|
|
this.getList();
|
|
},
|
|
methods: {
|
|
// 获取直播间列表
|
|
async getList() {
|
|
const res = await liveGetList(this.listQuery);
|
|
this.total = res.data.total;
|
|
this.roomList = res.data.list;
|
|
},
|
|
// 获取直播间相关产品信息
|
|
async getProList() {
|
|
this.proListQuery.shopId = this.liveForm.shopId;
|
|
this.proListQuery.liveId = this.liveForm.id;
|
|
const res = await liveGetProduct(this.proListQuery);
|
|
this.roomProList = res.data.list;
|
|
this.proTotal = res.data.total;
|
|
},
|
|
seeMore(row) {
|
|
this.liveForm = row;
|
|
this.DetailsLiveShow = true;
|
|
this.getProList();
|
|
},
|
|
del(row) {
|
|
this.$confirm('是否确认删除该内容?', '提示', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning',
|
|
}).then(() => {
|
|
deleteLive(row)
|
|
.then((res) => {
|
|
this.closeDialogVisible = false;
|
|
this.$message.success('删除成功');
|
|
this.getList();
|
|
})
|
|
.catch((err) => {
|
|
this.$message.error(err.msg);
|
|
});
|
|
});
|
|
},
|
|
// 选择查询状态
|
|
searchTypeChange(e) {
|
|
this.listQuery.state = e;
|
|
this.getList();
|
|
},
|
|
// 分页
|
|
handleCurrentChange(e) {
|
|
this.listQuery.page = e;
|
|
this.getList();
|
|
},
|
|
handleSizeChange(e) {
|
|
this.listQuery.pageSize = e;
|
|
this.getList();
|
|
},
|
|
handleCurrentChange1(e) {
|
|
this.proListQuery.page = e;
|
|
this.getProList();
|
|
},
|
|
handleSizeChange1(e) {
|
|
this.proListQuery.pageSize = e;
|
|
this.getProList();
|
|
},
|
|
closeFn() {
|
|
this.DetailsLiveShow = false;
|
|
},
|
|
// 添加直播间
|
|
// 图片上传
|
|
handlePictureCardPreview1(file) {
|
|
console.log(file);
|
|
if(file.code==='200'){
|
|
this.form.coverImg = file.data.url;
|
|
this.form.coverMediaId = file.data.mediaId
|
|
}else{
|
|
this.$message.error('图片超出规定像素,上传失败!')
|
|
}
|
|
|
|
},
|
|
handlePictureCardPreview2(file) {
|
|
if(file.code==='200'){
|
|
this.form.shareImg = file.data.url;
|
|
this.form.shareMediaId = file.data.mediaId
|
|
}else{
|
|
this.$message.error('图片超出规定像素,上传失败!')
|
|
}
|
|
},
|
|
handlePictureCardPreview3(file) {
|
|
if(file.code==='200'){
|
|
this.form.feedsImg = file.data.url;
|
|
this.form.feedsMediaId = file.data.mediaId
|
|
}else{
|
|
this.$message.error('图片超出规定像素,上传失败!')
|
|
}
|
|
},
|
|
handlePictureCardPreview4(file) {
|
|
if(file.code==='200'){
|
|
this.form.anchorHeadImg = file.data.url;
|
|
}else{
|
|
this.$message.error('图片超出规定像素,上传失败!')
|
|
}
|
|
},
|
|
add() {
|
|
this.addLiveShow = true;
|
|
this.LiveShowState = 1;
|
|
this.form = {
|
|
anchorHeadImg: '',
|
|
anchorNickname: '',
|
|
anchorWechat: '',
|
|
coverImg: '',
|
|
coverMediaId: '',
|
|
closeAppointment: 0,
|
|
closeComment: 0,
|
|
closeGoodsShelf: 0,
|
|
closeLike: 0,
|
|
closePlayback: 0,
|
|
closeService: 0,
|
|
closeShare: 0,
|
|
feedsImg: '',
|
|
feedsMediaId: '',
|
|
endTime: '',
|
|
id: 0,
|
|
liveType: 0,
|
|
remark: '',
|
|
screenType: 0,
|
|
shareImg: '',
|
|
shareMediaId: '',
|
|
shopId: 0,
|
|
startTime: '',
|
|
state: 0,
|
|
title: '',
|
|
};
|
|
},
|
|
edit(row) {
|
|
this.addLiveShow = true;
|
|
this.LiveShowState = 2;
|
|
const data = Object.assign({}, row)
|
|
this.form = data;
|
|
},
|
|
// 添加直播间
|
|
submitCU() {
|
|
this.$refs.form.validate((valid) => {
|
|
if (valid) {
|
|
if (this.LiveShowState === 1) {
|
|
if(this.isAllow){
|
|
this.isAllow = false
|
|
addLiveSave(this.form).then((res) => {
|
|
if (res.code === '') {
|
|
this.$message({
|
|
message: '创建成功',
|
|
type: 'success',
|
|
});
|
|
this.addLiveShow = false;
|
|
this.getList();
|
|
}
|
|
});
|
|
setTimeout(()=>{
|
|
this.isAllow = true
|
|
},1000)
|
|
}
|
|
} else {
|
|
updateLive(this.form).then((res) => {
|
|
if (res.code === '') {
|
|
this.$message({
|
|
message: '修改成功',
|
|
type: 'success',
|
|
});
|
|
this.addLiveShow = false;
|
|
this.getList();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
// 导入商品
|
|
addPro(row) {
|
|
this.proPassFrom.liveId = row.id;
|
|
this.proPassFrom.shopId = row.shopId;
|
|
this.proListPassQuery.search = '';
|
|
this.proListPassQuery.liveId = row.id;
|
|
this.proListPassQuery.shopId = row.shopId;
|
|
this.addProShow = true;
|
|
this.getProPassList();
|
|
},
|
|
async getProPassList() {
|
|
this.proListPassQuery.state = 1;
|
|
const res = await liveProGetAll(this.proListPassQuery);
|
|
this.proListPassTotal = res.data.total;
|
|
this.proListPassData = res.data.list;
|
|
},
|
|
handleSizeChange3(e) {
|
|
this.proListPassQuery.pageSize = e;
|
|
this.getProPassList();
|
|
},
|
|
handleCurrentChange3(e) {
|
|
this.proListPassQuery.page = e;
|
|
this.getProPassList();
|
|
},
|
|
// 选中的
|
|
handleSelectionChange(val) {
|
|
this.proPassFrom.liveProductIdList = val.map((el) => {
|
|
return el.id;
|
|
});
|
|
},
|
|
// 导入操作
|
|
addproSubmit() {
|
|
if (this.proPassFrom.liveProductIdList.length === 0) {
|
|
this.$message.warning('请选择导入的商品');
|
|
} else {
|
|
importProduct(this.proPassFrom).then((res) => {
|
|
if (res.code === '') {
|
|
this.$message({
|
|
message: '导入成功',
|
|
type: 'success',
|
|
});
|
|
this.addProShow = false;
|
|
this.getList();
|
|
}
|
|
});
|
|
}
|
|
},
|
|
// 重新审核
|
|
reExamine(row) {
|
|
reExamine({ id: row.id }).then((res) => {
|
|
if (res.code === '') {
|
|
this.$message.success('已重新提交');
|
|
this.getList();
|
|
}
|
|
});
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scpoed>
|
|
img {
|
|
width: 100px;
|
|
height: 100px;
|
|
}
|
|
.liveRoomPage {
|
|
padding: 32px 20px;
|
|
nav {
|
|
.search {
|
|
line-height: 40px;
|
|
margin: 10px 0;
|
|
display: flex;
|
|
.title {
|
|
min-width: 120px;
|
|
text-align: right;
|
|
}
|
|
.inputKeyWord {
|
|
max-width: 400px;
|
|
min-width: 200px;
|
|
}
|
|
}
|
|
}
|
|
section {
|
|
padding: 12px 8px;
|
|
background-color: #fff;
|
|
.pagination {
|
|
margin-top: 30px;
|
|
}
|
|
}
|
|
}
|
|
.avatar-uploader .el-upload {
|
|
border: 1px dashed #d9d9d9;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
.avatar-uploader1{
|
|
border: 1px dashed #d9d9d9;
|
|
width: 108px;
|
|
height: 192px;
|
|
.avatar-uploader-icon {
|
|
font-size: 28px;
|
|
color: #8c939d;
|
|
width: 108px;
|
|
height: 192px;
|
|
line-height: 192px;
|
|
text-align: center;
|
|
}
|
|
.avatar {
|
|
width: 108px;
|
|
height: 192px;
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
.avatar-uploader2{
|
|
border: 1px dashed #d9d9d9;
|
|
width: 180px;
|
|
height: 148px;
|
|
.avatar-uploader-icon {
|
|
font-size: 28px;
|
|
color: #8c939d;
|
|
width: 180px;
|
|
height: 148px;
|
|
line-height: 148px;
|
|
text-align: center;
|
|
}
|
|
.avatar {
|
|
width: 180px;
|
|
height: 148px;
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
.avatar-uploader3{
|
|
border: 1px dashed #d9d9d9;
|
|
width: 140px;
|
|
height: 140px;
|
|
.avatar-uploader-icon {
|
|
font-size: 28px;
|
|
color: #8c939d;
|
|
width: 140px;
|
|
height: 140px;
|
|
line-height: 140px;
|
|
text-align: center;
|
|
}
|
|
.avatar {
|
|
width: 140px;
|
|
height: 140px;
|
|
display: block;
|
|
}
|
|
}
|
|
</style>
|