提交 25107180 编写于 作者: alex.zhang's avatar alex.zhang

fix conflict

<template> <template>
<div class="yqrange-index-wrapper"> <div class="yqrange-index-wrapper">
<bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond" :curmbThird="curmbThird"></bread-crumb> <bread-crumb :curmbFirst="curmbFirst" :curmbSecond="curmbSecond" curmbThird="curmbThird"></bread-crumb>
<div class="yqrange-index-content screenSet" id="screenSet"> <div class="yqrange-index-content screenSet" id="screenSet">
<el-row class="step-content"> <el-row class="step-content">
<el-col :span="12"> <el-col :span="12">
<div style="color:#666666;font-size:14px;">{{curmbThird}}</div> <div style="color:#666666;font-size:14px;">{{curmbThird}}</div>
<!--<el-steps :active="active" simple class>--> <!--<el-steps :active="active" simple class>-->
<!--<span class="step-num" :class="{ 'on-step': stepData[0] }">1</span>--> <!--<span class="step-num" :class="{ 'on-step': stepData[0] }">1</span>-->
<!--<el-step title="基础信息"></el-step>--> <!--<el-step title="基础信息"></el-step>-->
<!--<span class="step-num" :class="{ 'on-step': stepData[1] }">2</span>--> <!--<span class="step-num" :class="{ 'on-step': stepData[1] }">2</span>-->
<!--<el-step title="选择范围">2</el-step>--> <!--<el-step title="选择范围">2</el-step>-->
<!--</el-steps>--> <!--</el-steps>-->
</el-col> </el-col>
<el-col :span="6" :offset="5"> <el-col :span="6" :offset="5">
...@@ -17,22 +17,21 @@ ...@@ -17,22 +17,21 @@
</el-col> </el-col>
</el-row> </el-row>
<div class="first-step"> <div class="first-step">
<!--<p class="p-title">基础信息</p>--> <!--<p class="p-title">基础信息</p>-->
<el-form <el-form ref="formData"
ref="formData" :model="formData"
:model="formData" :rules="rules"
:rules="rules" label-width="150px"
label-width="150px" label-suffix=":"
label-suffix=":" class="basic-form">
class="basic-form"
>
<el-form-item label="直播标题" prop="name"> <el-form-item label="直播标题" prop="name">
<el-col :span="13"> <el-col :span="13">
<el-input <el-input
size="small" size="small"
v-model="formData.name" v-model="formData.name"
placeholder="请输入直播标题" placeholder="请输入直播标题"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
<span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/20</span> <span class="word-num">{{(formData.name).replace(/\s+/g,"").length}}/20</span>
</el-col> </el-col>
...@@ -53,32 +52,25 @@ ...@@ -53,32 +52,25 @@
<el-form-item label="直播开始时间" prop="openTime"> <el-form-item label="直播开始时间" prop="openTime">
<el-col :span="6"> <el-col :span="6">
<el-date-picker <el-date-picker
v-model="formData.openTime" v-model="formData.openTime"
size="small" size="small"
type="datetime" type="datetime"
placeholder="请选择直播开始时间" placeholder="请选择直播开始时间"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="pickerOptions0" :picker-options="pickerOptions0"
style="width: 100%;" style="width: 100%;"
></el-date-picker> ></el-date-picker>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="直播简介:" class="required-label"> <el-form-item label="直播简介:" class="required-label">
<el-col :span="12"> <el-col :span="12">
<div style="color:#666666;font-size:10px;">直播图片可选择仅文字版,仅图片版或文字版+图片版</div> <div style="color:#666666;font-size:10px;">直播图片可选择仅文字版,仅图片版或文字版+图片版</div>
<el-input <el-input type="textarea" v-model="formData.textContent" placeholder="请输入直播简介" maxlength="30" rows="3" style="width:80%;"></el-input>
type="textarea" <span class="word-num">{{(formData.textContent).replace(/\s+/g,"").length}}/300</span>
v-model="formData.textContent" <div style="color:#666666;font-size:12px;">文字版</div>
placeholder="请输入直播简介" </el-col>
maxlength="30" <el-col :span="12">
rows="3"
style="width:80%;"
></el-input>
<span class="word-num">{{(formData.textContent).replace(/\s+/g,"").length}}/300</span>
<div style="color:#666666;font-size:12px;">文字版</div>
</el-col>
<el-col :span="12">
<el-upload <el-upload
v-model="formData.imageContent" v-model="formData.imageContent"
class="bg-uploader" class="bg-uploader"
...@@ -111,30 +103,34 @@ ...@@ -111,30 +103,34 @@
<p>支持.jpg,.png格式</p> <p>支持.jpg,.png格式</p>
</div> </div>
</el-upload> </el-upload>
<div style="color:#666666;font-size:12px;">图片版</div> <div style="color:#666666;font-size:12px;">图片版</div>
</el-col> </el-col>
</el-form-item> </el-form-item>
<div class="basic-item-icon"> <div class="basic-item-icon">
<el-form-item label="直播封面" class="required-label"> <el-form-item label="直播封面" class="required-label">
<el-upload <el-upload
v-model="formData.cover" v-model="formData.cover"
class="bg-uploader" class="bg-uploader"
action="#" action="#"
:show-file-list="false" :show-file-list="false"
:before-upload="beforeUploadPic2" :before-upload="beforeUploadPic2"
> >
<img <img
v-if="formData.cover" v-if="formData.cover"
:src="formData.cover" :src="formData.cover"
@mouseover.stop="imgMouseOver2=true" @mouseover.stop="imgMouseOver2=true"
class="bg-img" class="bg-img"
/>
<img
v-if="!formData.cover"
class="bg-img"
src="../../assets/image/small.png"
/> />
<img v-if="!formData.cover" class="bg-img" src="../../assets/image/small.png" />
<div <div
class="img-delete" class="img-delete"
v-show="imgMouseOver2" v-show="imgMouseOver2"
@click.stop="deleteImg(2)" @click.stop="deleteImg(2)"
@mouseout.stop="imgMouseOver2=false" @mouseout.stop="imgMouseOver2=false"
> >
<i class="el-icon-delete"></i> <i class="el-icon-delete"></i>
</div> </div>
...@@ -150,24 +146,28 @@ ...@@ -150,24 +146,28 @@
<div class="basic-item-icon"> <div class="basic-item-icon">
<el-form-item label="直播预告图" class="required-label"> <el-form-item label="直播预告图" class="required-label">
<el-upload <el-upload
v-model="formData.preImage" v-model="formData.preImage"
class="bg-uploader" class="bg-uploader"
action="#" action="#"
:show-file-list="false" :show-file-list="false"
:before-upload="beforeUploadPic3" :before-upload="beforeUploadPic3"
> >
<img <img
v-if="formData.preImage" v-if="formData.preImage"
:src="formData.preImage" :src="formData.preImage"
@mouseover.stop="imgMouseOver3=true" @mouseover.stop="imgMouseOver3=true"
class="bg-img" class="bg-img"
/>
<img
v-if="!formData.preImage"
class="bg-img"
src="../../assets/image/small.png"
/> />
<img v-if="!formData.preImage" class="bg-img" src="../../assets/image/small.png" />
<div <div
class="img-delete" class="img-delete"
v-show="imgMouseOver3" v-show="imgMouseOver3"
@click.stop="deleteImg(3)" @click.stop="deleteImg(3)"
@mouseout.stop="imgMouseOver3=false" @mouseout.stop="imgMouseOver3=false"
> >
<i class="el-icon-delete"></i> <i class="el-icon-delete"></i>
</div> </div>
...@@ -184,66 +184,64 @@ ...@@ -184,66 +184,64 @@
<div style="color:#666666;font-size:10px;">讲师(必填)</div> <div style="color:#666666;font-size:10px;">讲师(必填)</div>
<el-col :span="10"> <el-col :span="10">
<el-form-item label="姓名" prop="lecturesUserName" label-width="60px;"> <el-form-item label="姓名" prop="lecturesUserName" label-width="60px;">
<el-input
size="small"
v-model="formData.lecturesUserName"
placeholder="请输入姓名"
style="width:70%;"
></el-input>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="手机" prop="lecturesPhone">
<el-input maxlength="11"
size="small"
v-model="formData.lecturesPhone"
placeholder="请输入手机号"
style="width:70%;"
></el-input>
</el-form-item>
</el-col>
<el-col :span="15">
<div style="color:#666666;font-size:10px;">嘉宾(选填)</div>
</el-col>
<div v-for="(item, index) in formData.guests" :key="index">
<el-col :span="10">
<el-form-item label="姓名" label-width="60px;">
<el-input <el-input
size="small" size="small"
v-model="formData.lecturesUserName" v-model="item.username"
placeholder="请输入姓名" placeholder="请输入姓名"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="13"> <el-col :span="13">
<el-form-item label="手机" prop="lecturesPhone"> <el-form-item label="手机">
<el-input <el-input maxlength="11"
maxlength="11"
size="small" size="small"
v-model="formData.lecturesPhone" v-model="item.phone"
placeholder="请输入手机号" placeholder="请输入手机号"
style="width:70%;" style="width:70%;"
></el-input> ></el-input>
 <img
@click="addGuest(index)"
class="edit-img"
src="../../assets/image/plus.png"
v-if="isPreview!=1"
/>
<img
@click="delGuest(index)"
v-if="index >= 1 && isPreview!=1"
class="edit-img"
src="../../assets/image/trash.png"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="15">
<div style="color:#666666;font-size:10px;">嘉宾(选填)</div>
</el-col>
<div v-for="(item, index) in formData.guests" :key="index">
<el-col :span="10">
<el-form-item label="姓名" label-width="60px;">
<el-input
size="small"
v-model="item.username"
placeholder="请输入姓名"
style="width:70%;"
></el-input>
</el-form-item>
</el-col>
<el-col :span="13">
<el-form-item label="手机">
<el-input
maxlength="11"
size="small"
v-model="item.phone"
placeholder="请输入手机号"
style="width:70%;"
></el-input>
<img
@click="addGuest(index)"
class="edit-img"
src="../../assets/image/plus.png"
v-if="isPreview!=1"
/>
<img
@click="delGuest(index)"
v-if="index >= 1 && isPreview!=1"
class="edit-img"
src="../../assets/image/trash.png"
/>
</el-form-item>
</el-col>
</div> </div>
<!--<el-col :span="15">--> <!--<el-col :span="15">-->
<!--<p class="err-text" v-if="guestErrFlag"><img src="../../assets/image/err-icon.svg" alt="">{{guestErrText}}</p>--> <!--<p class="err-text" v-if="guestErrFlag"><img src="../../assets/image/err-icon.svg" alt="">{{guestErrText}}</p>-->
<!--</el-col>--> <!--</el-col>-->
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -252,669 +250,632 @@ ...@@ -252,669 +250,632 @@
</div> </div>
</template> </template>
<script> <script>
import BreadCrumb from "@/components/breadcrumb.vue"; import BreadCrumb from "@/components/breadcrumb.vue";
import { openLoading, closeLoading } from "../../utils/utils"; import { openLoading, closeLoading } from "../../utils/utils";
import { doUpload, getFilePath } from "../../utils/qiniu-util"; import { doUpload, getFilePath } from "../../utils/qiniu-util";
import { checkMobile } from "../../utils/patients/checkValid"; import { checkMobile } from '../../utils/patients/checkValid';
import { getRtcInfo } from "../../utils/yqrange/yqrangeApi"; import { getRtcInfo } from "../../utils/yqrange/yqrangeApi";
// import { checkPhone } from "../login.vue"; // import { checkPhone } from "../login.vue";
let vm = null; let vm = null;
export default { export default {
components: { components: {
BreadCrumb BreadCrumb
}, },
data() { data(){
let checkProjectStr = (rule, value, callback) => { let checkProjectStr = (rule, value, callback) => {
if (value.indexOf("\\") != -1) { if (value.indexOf("\\") != -1) {
//存在 //存在
callback(new Error("请勿输入字符“ \\ ")); callback(new Error("请勿输入字符“ \\ "));
} else if (value.indexOf(".") != -1) { } else if (value.indexOf(".") != -1) {
callback(new Error("请勿输入字符“ . ")); callback(new Error("请勿输入字符“ . "));
} else { } else {
callback(); callback();
} }
}; };
return { return{
curmbFirst: "云鹊小圈", curmbFirst: '云鹊小圈',
curmbSecond: "直播管理", curmbSecond: '直播管理',
curmbThird: "新建直播", curmbThird: '新建直播',
//页面展示位置 //页面展示位置
isCollectShow: false, isCollectShow: false,
formData: { formData: {
circleId: "1", // 圈子ID circleId: "1",// 圈子ID
name: "", // 直播名称 name: '',// 直播名称
scope: "1", // 直播范围 1-非公开 2-公开 scope: "1",// 直播范围 1-非公开 2-公开
infoCollect: "0", // 是否采集用户信息 0-否 1-是 infoCollect: "0",// 是否采集用户信息 0-否 1-是
openTime: "", // 直播开始时间 openTime: '',// 直播开始时间
rtcIntroduces: [ rtcIntroduces:[{
{
seqNo: "", seqNo: "",
content: "", content: '',
type: "1" // 文字 type: "1" // 文字
}, },
{ {
seqNo: "", seqNo: "",
content: "", content: '',
type: "2" // 图片 type: "2" // 图片
} }
], // 直播简介 ],// 直播简介
cover: "", // 直播封面url 直播第一帧图片 cover: '', // 直播封面url 直播第一帧图片
preImage: "", // 直播预告图url preImage: '', // 直播预告图url
textContent: "", // 直播简介文字版 textContent: '', // 直播简介文字版
imageContent: "", // 直播简介图片版 imageContent: '',// 直播简介图片版
// imgUrl2: '', // imgUrl2: '',
// imgUrl2More: {}, // imgUrl2More: {},
// imgUrl3: '', // imgUrl3: '',
// imgUrl3More: {}, // imgUrl3More: {},
intro: "", intro:'',
hostName: "", hostName: '',
guestName: "", guestName: '',
hostMobile: "", hostMobile: '',
guestMobile: "", guestMobile: '',
mobile1: "", mobile1: '',
lecturesUserName: "", lecturesUserName: '',
lecturesPhone: "", lecturesPhone: '',
lecturers: [ lecturers: [{
{ username: '',
username: "", phone: ''
phone: "" }],// 讲师
} guests: [{
], // 讲师 phone: '',
guests: [ username: ''
{ }] // 嘉宾
phone: "", },
username: "" // imgUrl1: '',
imgUrl1More: {},
guestErrFlag: false,
guestErrText: '嘉宾最多5位!',
isPreview: 0,
imgMouseOver1: false,
uploadImgMessage1: false,//未上传图片,校验提示语
imgMouseOver2: false,
uploadImgMessage2: false,
imgMouseOver3: false,
uploadImgMessage3:false,
pickerOptions0: {
disabledDate: time => {
// 在科学计数法中,为了使公式简便,可以用带“E”的格式表示。例如1.03乘10的8次方,可简写为“1.03e8”的形式
// 一天是24*60*60*1000 = 86400000 = 8.64e7
// console.log('this.maxDate',this.maxDate)
return time.getTime() < Date.now() - 8.64e7
} }
] // 嘉宾 },
}, rules: {
// imgUrl1: '', name: [
imgUrl1More: {}, { required: true, message: "请输入直播标题", trigger: "blur" },
guestErrFlag: false, {
guestErrText: "嘉宾最多5位!", min: 2,
isPreview: 0, max: 24,
imgMouseOver1: false, message: "输入长度为2-24的内容,可包含中英文、数字及特殊符号",
uploadImgMessage1: false, //未上传图片,校验提示语 trigger: "blur"
imgMouseOver2: false, },
uploadImgMessage2: false, { validator: checkProjectStr, trigger: "blur" }
imgMouseOver3: false, ],
uploadImgMessage3: false, scope:[
pickerOptions0: { {required: true}
disabledDate: time => { ],
// 在科学计数法中,为了使公式简便,可以用带“E”的格式表示。例如1.03乘10的8次方,可简写为“1.03e8”的形式 infoCollect: [
// 一天是24*60*60*1000 = 86400000 = 8.64e7 {required: true, message: "请选择是否收集用户信息", trigger: "blur"}
// console.log('this.maxDate',this.maxDate) ],
return time.getTime() < Date.now() - 8.64e7; openTime: [
{required: true, message: "请选择直播开始时间", trigger: "blur"}
],
// // 直播简介
// introduce: [
// {required: true, message: "请选择文字版或图片版", trigger: "blur"}
// ],
lecturesUserName: [
{required: true, message: "请输入姓名", trigger: "blur"},
],
// guestName: [
// {required: true, message: "请输入姓名", trigger: "blur"},
// ],
lecturesPhone: [
{required: true, message: "请输入手机号", trigger: ['change','blur']},
{validator: checkMobile, trigger: ['change','blur']}
],
// introduce: [
// { required: true, message: "请输入", trigger: "blur" },
// {
// min: 2,
// max: 24,
// message: "输入长度为2-24的内容,可包含中英文、数字及特殊符号",
// trigger: "blur"
// },
// { validator: checkProjectStr, trigger: "blur" }
// ],
} }
}, }
rules: { },
name: [ created() {
{ required: true, message: "请输入直播标题", trigger: "blur" }, // 区分内部用户和外部用户
{ let idType = localStorage.getItem('storageIdType');
min: 2, // vm = this;
max: 24, // vm.entryId = vm.getUrlSearch(window.location.href, "entryId");
message: "输入长度为2-24的内容,可包含中英文、数字及特殊符号", // vm.peopleLevel = vm.getUrlSearch(window.location.href, "level");
trigger: "blur" // vm.init();
},
{ validator: checkProjectStr, trigger: "blur" }
],
scope: [{ required: true }],
infoCollect: [
{ required: true, message: "请选择是否收集用户信息", trigger: "blur" }
],
openTime: [
{ required: true, message: "请选择直播开始时间", trigger: "blur" }
],
// // 直播简介
// introduce: [
// {required: true, message: "请选择文字版或图片版", trigger: "blur"}
// ],
lecturesUserName: [
{ required: true, message: "请输入姓名", trigger: "blur" }
],
// guestName: [
// {required: true, message: "请输入姓名", trigger: "blur"},
// ],
lecturesPhone: [
{
required: true,
message: "请输入手机号",
trigger: ["change", "blur"]
},
{ validator: checkMobile, trigger: ["change", "blur"] }
]
// introduce: [
// { required: true, message: "请输入", trigger: "blur" },
// {
// min: 2,
// max: 24,
// message: "输入长度为2-24的内容,可包含中英文、数字及特殊符号",
// trigger: "blur"
// },
// { validator: checkProjectStr, trigger: "blur" }
// ],
},
circleId: null,
};
},
created() {
// 区分内部用户和外部用户
let idType = localStorage.getItem("storageIdType");
// vm = this;
// vm.entryId = vm.getUrlSearch(window.location.href, "entryId");
// vm.peopleLevel = vm.getUrlSearch(window.location.href, "level");
// vm.init();
this.circleId = this.$route.query.circleId;
},
mounted() {
const rtcId = this.$route.query.rtcId;
// if(rtcId){
// this.curmbThird = "编辑直播";
// }
if (rtcId) {
this.curmbThird = "编辑直播";
this.initRtcInfo(rtcId);
}
},
methods: { },
checkPhone(val) { mounted() {
if (!/^1[3456789]\d{9}$/.test(val)) { const rtcId = this.$route.query.rtcId;
return false; // if(rtcId){
} else { // this.curmbThird = "编辑直播";
return true; // }
if(rtcId){
this.curmbThird = "编辑直播";
this.initRtcInfo(rtcId);
} }
}, },
// 初始化直播
initRtcInfo(rtcId) { methods: {
getRtcInfo({ checkPhone(val) {
rtcId if(!(/^1[3456789]\d{9}$/.test(val))) {
}) return false;
.then(data => { } else {
if (data.code == "000000") { return true;
}
},
// 初始化直播
initRtcInfo(rtcId){
getRtcInfo({
rtcId
}).then((data) => {
if(data.code == "000000") {
this.formData = data.data; this.formData = data.data;
this.initFormData(); this.initFormData();
console.log(this.formData); console.log(this.formData);
} }
}) }).catch((error) => {
.catch(error => {
this.$message({ this.$message({
message: error, message: error,
type: "error" type: 'error'
}); });
}); })
}, },
//上传直播简介 //上传直播简介
beforeUploadPic1(file) { beforeUploadPic1(file) {
let fileLimit = { let fileLimit = {
width: 750, width: 750,
height: "", height: "",
size: 0.5, size: 0.5,
sizeText: "500K", sizeText: "500K",
key: "imageContent", key: "imageContent",
more: "imgUrl1More", more: "imgUrl1More",
show: "uploadImgMessage1" show: "uploadImgMessage1"
}; };
this.beforeUpload(file, fileLimit); this.beforeUpload(file, fileLimit);
}, },
// 上传直播封面 // 上传直播封面
beforeUploadPic2(file) { beforeUploadPic2(file) {
let fileLimit = { let fileLimit = {
width: 160, width: 160,
height: 120, height: 120,
size: 2, size: 2,
sizeText: "2Mb", sizeText: "2Mb",
key: "cover", key: "cover",
more: "imgUrl2More", more: "imgUrl2More",
show: "uploadImgMessage2" show: "uploadImgMessage2"
}; };
this.beforeUpload(file, fileLimit); this.beforeUpload(file, fileLimit);
}, },
// 上传直播预告图 // 上传直播预告图
beforeUploadPic3(file) { beforeUploadPic3(file) {
let fileLimit = { let fileLimit = {
width: 750, width: 750,
height: 420, height: 420,
size: 2, size: 2,
sizeText: "2Mb", sizeText: "2Mb",
key: "preImage", key: "preImage",
more: "imgUrl3More", more: "imgUrl3More",
show: "uploadImgMessage3" show: "uploadImgMessage3"
}; };
this.beforeUpload(file, fileLimit); this.beforeUpload(file, fileLimit);
}, },
//上传图片 //上传图片
beforeUpload(file, fileLimit) { beforeUpload(file, fileLimit) {
let vm = this; let vm = this;
const isJPG = file.type === "image/jpeg"; const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png"; const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < fileLimit.size; const isLt2M = file.size / 1024 / 1024 < fileLimit.size;
if (!isJPG && !isPNG) { if (!isJPG && !isPNG) {
vm.$message.error("图片格式不符合规范,请根据规范上传图片"); vm.$message.error("图片格式不符合规范,请根据规范上传图片");
// return; // return;
} }
if (!isLt2M) { if (!isLt2M) {
vm.$message.error("图片大小不符合规范,请根据规范上传图片 "); vm.$message.error("图片大小不符合规范,请根据规范上传图片 ");
// return; // return;
} }
let _img = new FileReader(); let _img = new FileReader();
_img.readAsDataURL(file); _img.readAsDataURL(file);
_img.onload = function(theFile) { _img.onload = function(theFile) {
let image = new Image(); let image = new Image();
image.src = theFile.target.result; image.src = theFile.target.result;
image.onload = function() { image.onload = function() {
let _this = this; let _this = this;
if ( if(fileLimit.key == "imageContent" & _this.width != fileLimit.width){
(fileLimit.key == "imageContent") & vm.$message.error("图片尺寸不符合规范,请根据规范上传图片");
(_this.width != fileLimit.width) }
) { else if (fileLimit.key != "imageContent" & (_this.width != fileLimit.width || _this.height != fileLimit.height)) {
vm.$message.error("图片尺寸不符合规范,请根据规范上传图片"); vm.$message.error("图片尺寸不符合规范,请根据规范上传图片");
} else if ( } else {
(fileLimit.key != "imageContent") & openLoading(vm);
(_this.width != fileLimit.width || _this.height != fileLimit.height) doUpload(vm, file, getFilePath(file, null), "preview4", "progress1", 1).then(function(path) {
) { closeLoading(vm);
vm.$message.error("图片尺寸不符合规范,请根据规范上传图片"); console.log('上传成功后路径',path);
} else { if (fileLimit.show == "uploadImgMessage1") {
openLoading(vm); vm.uploadImgMessage1 = false;
doUpload( } else if (fileLimit.show == "uploadImgMessage2") {
vm, vm.uploadImgMessage2 = false;
file, }
getFilePath(file, null), else if (fileLimit.show == "uploadImgMessage3") {
"preview4", vm.uploadImgMessage3 = false;
"progress1", }
1 vm.formData[fileLimit.key] = path.fullPath;
).then(function(path) { vm.formData[fileLimit.more] = {
closeLoading(vm); attachmentName: path.name,
console.log("上传成功后路径", path); attachmentExt: path.ext,
if (fileLimit.show == "uploadImgMessage1") { attachmentSize: path.size
vm.uploadImgMessage1 = false; };
} else if (fileLimit.show == "uploadImgMessage2") { vm.$message.success("上传成功");
vm.uploadImgMessage2 = false; });
} else if (fileLimit.show == "uploadImgMessage3") { }
vm.uploadImgMessage3 = false; };
}
vm.formData[fileLimit.key] = path.fullPath;
vm.formData[fileLimit.more] = {
attachmentName: path.name,
attachmentExt: path.ext,
attachmentSize: path.size
};
vm.$message.success("上传成功");
});
}
}; };
}; return isJPG && isLt2M;
return isJPG && isLt2M; },
}, // 是否公开
// 是否公开 changeScope(value){
changeScope(value) { if(value == 2){
if (value == 2) { this.isCollectShow = true;
this.isCollectShow = true; }
} else { else {
this.isCollectShow = false; this.isCollectShow = false;
} }
}, },
// 校验直播简介文字版或图片版 // 校验直播简介文字版或图片版
checkIntroduce() { checkIntroduce(){
// console.log(this.formData.rtcIntroduces[0].content); // console.log(this.formData.rtcIntroduces[0].content);
console.log(this.formData.rtcIntroduces[1].content); console.log(this.formData.rtcIntroduces[1].content);
let flag = true; let flag = true;
if ( if(this.formData.textContent == ""
(this.formData.textContent == "") & & this.formData.imageContent == ""){
(this.formData.imageContent == "") flag = false;
) { this.$message.error("直播简介中可选择仅文字版,仅图片版或文字版+图片版");
flag = false; }
this.$message.error( return flag;
"直播简介中可选择仅文字版,仅图片版或文字版+图片版" },
); //删除图片
} deleteImg(type) {
return flag; if (type == 1) {
}, this.imageContent = "";
//删除图片 this.imgMouseOver1 = false;
deleteImg(type) { }
if (type == 1) { else if (type == 2) {
this.imageContent = ""; this.formData.cover = "";
this.imgMouseOver1 = false; this.imgMouseOver2 = false;
} else if (type == 2) { }
this.formData.cover = ""; else if (type == 3) {
this.imgMouseOver2 = false; this.formData.preImage = "";
} else if (type == 3) { this.imgMouseOver3 = false;
this.formData.preImage = ""; }
this.imgMouseOver3 = false; },
} // 校验直播封面
}, checkCover(){
// 校验直播封面 let flag = true;
checkCover() { if(this.formData.cover == ""){
let flag = true; flag = false;
if (this.formData.cover == "") { this.$message.error("请上传直播封面!");
flag = false; }
this.$message.error("请上传直播封面!");
}
return flag; return flag;
}, },
// 校验直播预告图 // 校验直播预告图
checkPreImage() { checkPreImage(){
let flag = true; let flag = true;
if (this.formData.preImage == "") { if(this.formData.preImage == ""){
flag = false; flag = false;
this.$message.error("请上传直播预告图!"); this.$message.error("请上传直播预告图!");
} }
return flag; return flag;
}, },
// 校验嘉宾姓名和手机号 // 校验嘉宾姓名和手机号
checkGuests() { checkGuests(){
let flag = true; let flag = true;
if ((this.formData.guests != null) & (this.formData.guests.length >= 1)) { if(this.formData.guests != null & this.formData.guests.length >= 1){
for (let i = 0; i < this.formData.guests.length; i++) { for(let i=0;i<this.formData.guests.length;i++) {
if ( if(this.formData.guests[i].username != "" & this.formData.guests[i].phone == ""){
(this.formData.guests[i].username != "") & this.$message.error("请输入嘉宾'" + this.formData.guests[i].username + "'的手机号");
(this.formData.guests[i].phone == "")
) {
this.$message.error(
"请输入嘉宾'" + this.formData.guests[i].username + "'的手机号"
);
flag = false;
break;
} else if (
(this.formData.guests[i].username != "") &
(this.formData.guests[i].phone != "")
) {
if (!this.checkPhone(this.formData.guests[i].phone)) {
this.$message.error(
"请输入嘉宾'" +
this.formData.guests[i].username +
"'的正确手机号"
);
flag = false;
break;
}
// 检查讲师和嘉宾手机号是否相同
if (
!this.checkUniquePhone(
this.formData.lecturesPhone,
this.formData.guests[i].phone
)
) {
this.$message.error("请输入不同的手机号");
flag = false; flag = false;
break; break;
} }
// 检查嘉宾手机号是否相同 else if(this.formData.guests[i].username != "" & this.formData.guests[i].phone != ""){
if (this.formData.guests.length > 1) {
for (let j = i + 1; j < this.formData.guests.length; j++) { if(!this.checkPhone(this.formData.guests[i].phone)){
if ( this.$message.error("请输入嘉宾'" + this.formData.guests[i].username + "'的正确手机号");
!this.checkUniquePhone( flag = false;
this.formData.guests[i].phone, break;
this.formData.guests[j].phone }
) // 检查讲师和嘉宾手机号是否相同
) { if(!this.checkUniquePhone(this.formData.lecturesPhone, this.formData.guests[i].phone)){
this.$message.error("请输入不同的手机号"); this.$message.error("请输入不同的手机号");
flag = false; flag = false;
break; break;
}
// 检查嘉宾手机号是否相同
if(this.formData.guests.length > 1){
for(let j= i + 1;j<this.formData.guests.length;j++) {
if(!this.checkUniquePhone(this.formData.guests[i].phone, this.formData.guests[j].phone)){
this.$message.error("请输入不同的手机号");
flag = false;
break;
}
} }
} }
} }
} else if ( else if(this.formData.guests[i].username == "" & this.formData.guests[i].phone != ""){
(this.formData.guests[i].username == "") & this.$message.error("请输入手机号为'" + this.formData.guests[i].phone + "'嘉宾的姓名");
(this.formData.guests[i].phone != "") flag = false;
) { break;
this.$message.error( }
"请输入手机号为'" + this.formData.guests[i].phone + "'嘉宾的姓名"
);
flag = false;
break;
} }
} }
}
return flag; return flag;
}, },
checkUniquePhone(phone1, phone2) { checkUniquePhone(phone1, phone2){
let flag = true; let flag = true;
if ((phone1 != "") & (phone2 != "") & (phone1 == phone2)) { if(phone1 != "" & phone2 != "" & phone1 == phone2){
flag = false; flag = false;
} }
return flag; return flag;
}, },
// 增加嘉宾 // 增加嘉宾
addGuest(index) { addGuest(index) {
if (!this.checkGuests()) {
return;
}
if ((this.formData.guests != null) & (this.formData.guests.length >= 5)) {
this.$message.error("嘉宾最多5位!");
// this.guestErrFlag = true;
// setTimeout(function () {
// this.guestErrFlag = false;
// }, 3000)
} else {
this.formData.guests.push({ username: "", phone: "" });
// this.formData.guests.splice(index + 1, 0, "");
}
},
// 删除嘉宾 if(!this.checkGuests()){
delGuest(index) { return;
this.formData.guests.splice(index, 1);
},
// 封装数据
initFormData() {
this.formData.scope = String(this.formData.scope);
if (this.formData.scope == "2") {
this.isCollectShow = true;
}
this.formData.infoCollect = String(this.formData.infoCollect);
if (this.formData.rtcIntroduces != null) {
for (let i = 0; i < this.formData.rtcIntroduces.length; i++) {
if (this.formData.rtcIntroduces[i].type == "1") {
this.formData.textContent = this.formData.rtcIntroduces[i].content;
} else if (this.formData.rtcIntroduces[i].type == "2") {
this.formData.imageContent = this.formData.rtcIntroduces[i].content;
}
} }
} if(this.formData.guests != null & this.formData.guests.length >= 5){
// 设置讲师 this.$message.error("嘉宾最多5位!");
if (this.formData.lecturers != null) { // this.guestErrFlag = true;
this.formData.lecturesUserName = this.formData.lecturers[0].username; // setTimeout(function () {
this.formData.lecturesPhone = this.formData.lecturers[0].phone; // this.guestErrFlag = false;
} // }, 3000)
}, }
// 封装数据 else {
setFormData() { this.formData.guests.push({username: "", phone: ""});
if (!this.formData.circleId) { // this.formData.guests.splice(index + 1, 0, "");
this.formData.circleId = 1; // 测试用 }
} },
if (this.formData.textContent) {
this.formData.rtcIntroduces[0].type = 1;
this.formData.rtcIntroduces[0].content = this.formData.textContent;
}
// 直播简介图片版
if (this.formData.imageContent) {
this.formData.rtcIntroduces[1].type = 2;
this.formData.rtcIntroduces[1].content = this.formData.imageContent;
}
// 设置讲师
// if(this.formData.lecturers == undefined){
// this.formData.lecturers
// }
// if(this.formData.lecturers != undefined & this.formData.lecturers.length == 0){
//
// this.formData.lecturers.push({username: this.formData.lecturesUserName, phone: this.formData.lecturesPhone});
// }
this.formData.lecturers[0].username = this.formData.lecturesUserName; // 删除嘉宾
this.formData.lecturers[0].phone = this.formData.lecturesPhone; delGuest(index) {
}, this.formData.guests.splice(index, 1);
},
// 封装数据
initFormData(){
this.formData.scope = String(this.formData.scope);
if(this.formData.scope == "2"){
this.isCollectShow = true;
}
this.formData.infoCollect = String(this.formData.infoCollect);
if(this.formData.rtcIntroduces != null){
for(let i=0;i<this.formData.rtcIntroduces.length;i++) {
if(this.formData.rtcIntroduces[i].type == "1"){
this.formData.textContent = this.formData.rtcIntroduces[i].content;
}
else if(this.formData.rtcIntroduces[i].type == "2"){
this.formData.imageContent = this.formData.rtcIntroduces[i].content;
}
}
}
// 设置讲师
if(this.formData.lecturers != null){
this.formData.lecturesUserName = this.formData.lecturers[0].username;
this.formData.lecturesPhone = this.formData.lecturers[0].phone;
}
complete(formName) { },
console.log(this.formData); // 封装数据
this.$refs[formName].validate(valid => { setFormData(){
if (valid) { if(!this.formData.circleId){
this.submit(); this.formData.circleId = 1;// 测试用
} else {
console.log("error submit!!");
return false;
} }
}); if(this.formData.textContent){
}, this.formData.rtcIntroduces[0].type = 1;
this.formData.rtcIntroduces[0].content = this.formData.textContent;
}
// 直播简介图片版
if(this.formData.imageContent){
this.formData.rtcIntroduces[1].type = 2;
this.formData.rtcIntroduces[1].content = this.formData.imageContent;
}
// 设置讲师
// if(this.formData.lecturers == undefined){
// this.formData.lecturers
// }
// if(this.formData.lecturers != undefined & this.formData.lecturers.length == 0){
//
// this.formData.lecturers.push({username: this.formData.lecturesUserName, phone: this.formData.lecturesPhone});
// }
//完成
submit() {
this.setFormData();
// 校验直播简介文字版或图片版
if (!this.checkIntroduce()) {
return;
}
// 校验直播封面、预告图
if (!this.checkCover() || !this.checkPreImage()) {
return;
}
// 校验嘉宾姓名和手机号
if (!this.checkGuests()) {
return;
}
let req = this.formData; this.formData.lecturers[0].username = this.formData.lecturesUserName;
openLoading(this); this.formData.lecturers[0].phone = this.formData.lecturesPhone;
this.POST("rtc/liveAdmin", req).then(res => { },
closeLoading(this);
if (res.code == "000000") { complete(formName) {
this.$message.success("操作成功"); console.log(this.formData);
this.$router.push({ this.$refs[formName].validate((valid) => {
// path: '/live-manage', if (valid) {
path: "/live-manage?id=" + this.circleId this.submit();
}); } else {
} else { console.log('error submit!!');
this.$message.error("操作失败,请重试"); return false;
}
});
},
//完成
submit() {
this.setFormData();
// 校验直播简介文字版或图片版
if(!this.checkIntroduce()){
return;
} }
}); // 校验直播封面、预告图
} if(!this.checkCover() || !this.checkPreImage()){
return;
}
// 校验嘉宾姓名和手机号
if(!this.checkGuests()){
return;
}
let req = this.formData;
openLoading(this);
this.POST('rtc/liveAdmin', req).then((res) => {
closeLoading(this);
if( res.code == '000000') {
this.$message.success("操作成功");
this.$router.push({
path: '/live-manage',
})
}
else {
this.$message.error("操作失败,请重试");
}
})
},
},
} }
};
</script> </script>
<style lang="scss"> <style lang="scss">
.yqrange-index-wrapper { .yqrange-index-wrapper{
.yqrange-index-content { .yqrange-index-content{
background: #fff; background: #fff;
padding: 10px; padding: 10px;
.step-content { .step-content{
overflow: hidden; overflow: hidden;
height: 60px; height: 60px;
padding: 15px 0 50px 0; padding: 15px 0 50px 0;
border-bottom: 1px solid #efefef; border-bottom: 1px solid #efefef;
.is-text { .is-text {
display: none; display: none;
}
.el-steps--simple {
background: #fff;
padding: 10px 8%;
}
.step-num {
display: block;
margin-top: 1.5px;
font-size: 12px;
border: 1px solid #999 !important;
border-radius: 50%;
width: 25px;
height: 18px;
line-height: 15px;
text-align: center;
color: #999;
}
.el-step__title.is-wait {
color: #999;
}
.el-step__title.is-process {
color: #449284;
}
.is-finish {
color: #999 !important;
}
.on-step {
color: #449284;
border: 1px solid #449284 !important;
}
}
.first-step {
margin-top: 20px;
.p-title {
padding-left: 10px;
margin-bottom: 15px;
}
.basic-item-icon {
position: relative;
.require {
position: absolute;
left: 67px;
top: 11px;
color: #f56c6c;
} }
.upload-message { .el-steps--simple {
position: absolute; background: #fff;
left: 160px; padding: 10px 8%;
top: 105px; }
.step-num {
display: block;
margin-top: 1.5px;
font-size: 12px; font-size: 12px;
color: #f56c6c; border: 1px solid #999 !important;
border-radius: 50%;
width: 25px;
height: 18px;
line-height: 15px;
text-align: center;
color: #999;
} }
.img-delete { .el-step__title.is-wait {
position: absolute; color: #999;
left: 0px; }
top: 0px; .el-step__title.is-process {
width: 84px; color: #449284;
height: 100px; }
background: #000; .is-finish {
opacity: 0.7; color: #999 !important;
z-index: 999; }
i { .on-step {
color: #fff; color: #449284;
margin-top: 39px; border: 1px solid #449284 !important;
margin-left: 0px;
}
} }
} }
.word-num { .first-step{
font-size: 12px; margin-top: 20px;
color: #999; .p-title{
padding-top: 5px; padding-left: 10px;
} margin-bottom: 15px;
.line { }
margin-left: 10px; .basic-item-icon {
width: 20px; position: relative;
} .require {
.bg-uploader { position: absolute;
.bg-img { left: 67px;
float: left; top: 11px;
width: 84px; color: #f56c6c;
height: 100px; }
} .upload-message {
.limit-text { position: absolute;
float: left; left: 160px;
margin-left: 10px; top: 105px;
margin-top: -10px;
p {
font-size: 12px; font-size: 12px;
color: #999; color: #f56c6c;
}
.img-delete {
position: absolute;
left: 0px;
top: 0px;
width: 84px;
height: 100px;
background: #000;
opacity: 0.7;
z-index: 999;
i {
color: #fff;
margin-top: 39px;
margin-left: 0px;
}
} }
} }
} .word-num {
.el-upload__tip { font-size: 12px;
position: absolute; color: #999;
top: -6px; padding-top: 5px;
left: 130px; }
.line {
margin-left: 10px;
width: 20px;
}
.bg-uploader {
.bg-img {
float: left;
width: 84px;
height: 100px;
}
.limit-text {
float: left;
margin-left: 10px;
margin-top: -10px;
p {
font-size: 12px;
color: #999;
}
}
}
.el-upload__tip {
position: absolute;
top: -6px;
left: 130px;
}
} }
} }
} }
} .required-label .el-form-item__label::before {
.required-label .el-form-item__label::before { content: '*';
content: "*"; color: #F56C6C;
color: #f56c6c; margin-right: 4px;
margin-right: 4px; }
} </style>
</style>
...@@ -163,15 +163,15 @@ export default { ...@@ -163,15 +163,15 @@ export default {
} }
], ],
tableData: [ tableData: [
{ // {
liveName: "浙江医学大会第二场", // liveName: "浙江医学大会第二场",
liveScope: 1, //直播范围 1-非公开 2-公开 // liveScope: 1, //直播范围 1-非公开 2-公开
liveStatus: 1, //直播状态 1-未开始 2-直播中 3-暂停中 4-已结束 5-回放中目前只能用到1,2,4 // liveStatus: 1, //直播状态 1-未开始 2-直播中 3-暂停中 4-已结束 5-回放中目前只能用到1,2,4
createTime: "", // createTime: "",
startTime: "", // startTime: "",
endTime: "", // endTime: "",
rtcId: 0 // rtcId: 0
} // }
], ],
dialogStatisticsData: [ dialogStatisticsData: [
{ {
...@@ -210,7 +210,10 @@ export default { ...@@ -210,7 +210,10 @@ export default {
//新建直播 //新建直播
createLive() { createLive() {
this.$router.push({ this.$router.push({
path: "/create-live?circleId=" + this.circleId, path: "/create-live",
query: {
circleId: this.circleId
}
}); });
}, },
//弹出直播链接弹窗 //弹出直播链接弹窗
...@@ -305,7 +308,7 @@ export default { ...@@ -305,7 +308,7 @@ export default {
query: { query: {
// rtcId: "16" // rtcId: "16"
rtcId: row.id, rtcId: row.id,
} }
}); });
}, },
......
...@@ -49,12 +49,14 @@ ...@@ -49,12 +49,14 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" min-width="370" align="center"> <el-table-column label="操作" min-width="370" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button @click="publishRange(scope.row)" v-if="scope.row.status == 2" type="text" size="small">上线</el-button> <div v-if="scope.row.status != 50">
<el-button @click="unPublishRange(scope.row)" v-if="scope.row.status == 1" type="text" size="small">下线</el-button> <el-button @click="publishRange(scope.row)" v-if="scope.row.status != 30" type="text" size="small">上线</el-button>
<el-button @click="liveManage(scope.row)" type="text" size="small">直播管理</el-button> <el-button @click="unPublishRange(scope.row)" v-if="scope.row.status == 30" type="text" size="small">下线</el-button>
<el-button @click="roleManage(scope.row)" type="text" size="small">成员管理</el-button> <el-button @click="liveManage(scope.row)" type="text" size="small">直播管理</el-button>
<el-button @click="editRange(scope.row)" type="text" size="small">编辑</el-button> <el-button @click="roleManage(scope.row)" type="text" size="small">成员管理</el-button>
<el-button @click="deleteRange(scope.row)" type="text" size="small" v-if="showAllFlag">解散圈子</el-button> <el-button @click="editRange(scope.row)" type="text" size="small">编辑</el-button>
<el-button @click="deleteRange(scope.row)" type="text" size="small" v-if="showAllFlag">解散圈子</el-button>
</div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -211,7 +213,7 @@ export default { ...@@ -211,7 +213,7 @@ export default {
customClass: 'range-make-box', customClass: 'range-make-box',
}).then(() => { }).then(() => {
// confirm // confirm
this.updateStatus(row.id, "3"); this.updateStatus(row.id, "30");
this.$message.success("上线成功"); this.$message.success("上线成功");
}).catch(() => { }).catch(() => {
// cancel // cancel
...@@ -226,7 +228,7 @@ export default { ...@@ -226,7 +228,7 @@ export default {
type: 'warning', type: 'warning',
customClass: 'range-make-box', customClass: 'range-make-box',
}).then(() => { }).then(() => {
this.updateStatus(row.id, "1"); this.updateStatus(row.id, "40");
// confirm // confirm
}).catch(() => { }).catch(() => {
// cancel // cancel
...@@ -239,17 +241,17 @@ export default { ...@@ -239,17 +241,17 @@ export default {
updateRangeStatus(params).then((res) => { updateRangeStatus(params).then((res) => {
closeLoading(this); closeLoading(this);
if(res.code == "000000") { if(res.code == "000000") {
if(status == "1"){ if(status == "40"){
this.$message.success("下线成功"); this.$message.success("下线成功");
} }
else if(status == "2") { else if(status == "30") {
this.$message.success("上线成功"); this.$message.success("上线成功");
} }
} else { } else {
if(status == "1"){ if(status == "40"){
this.$message.success("下线失败,请重试"); this.$message.success("下线失败,请重试");
} }
else if(status == "2") { else if(status == "30") {
this.$message.success("上线失败,请重试"); this.$message.success("上线失败,请重试");
} }
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册