|
@@ -32,33 +32,28 @@
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
|
- label="主讲人"
|
|
|
+ label="直播方案"
|
|
|
class="nomb"
|
|
|
- prop="speakerId"
|
|
|
- :rules="[{ required: true, message: '请输入主讲人' }]"
|
|
|
+ prop="serviceProvider"
|
|
|
+ :rules="[{ required: true, message: '请选择直播方案' }]"
|
|
|
>
|
|
|
<el-select
|
|
|
- v-model.trim="form.speakerId"
|
|
|
- collapse-tags
|
|
|
+ placeholder="请选择直播方案"
|
|
|
+ v-model="form.serviceProvider"
|
|
|
clearable
|
|
|
- placeholder="请输入主讲人"
|
|
|
- remote
|
|
|
- filterable
|
|
|
- :remote-method="remoteMethod"
|
|
|
- :loading="remoteLoading"
|
|
|
- @change="changeTeacher"
|
|
|
+ @change="
|
|
|
+ (value) => {
|
|
|
+ // console.log(value, 'value');
|
|
|
+ if (value === 'rongCloud') {
|
|
|
+ form.os = 'pc';
|
|
|
+ } else if (value === 'tencentCloud') {
|
|
|
+ form.os = 'client';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ "
|
|
|
>
|
|
|
- <el-option
|
|
|
- v-for="item in teacherList"
|
|
|
- :key="item.id"
|
|
|
- :label="item.realName"
|
|
|
- :value="item.id"
|
|
|
- >
|
|
|
- <span style="float: left">{{ item.realName }}</span>
|
|
|
- <span style="float: right; color: #8492a6; font-size: 13px">{{
|
|
|
- item.phone
|
|
|
- }}</span>
|
|
|
- </el-option>
|
|
|
+ <el-option label="融云" value="rongCloud"></el-option>
|
|
|
+ <el-option label="腾讯云" value="tencentCloud"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item
|
|
@@ -69,6 +64,7 @@
|
|
|
>
|
|
|
<el-date-picker
|
|
|
v-model="form.liveStartTime"
|
|
|
+ :picker-options="pickerOptions"
|
|
|
type="datetime"
|
|
|
format="yyyy-MM-dd HH:mm"
|
|
|
value-format="yyyy-MM-dd HH:mm"
|
|
@@ -80,30 +76,91 @@
|
|
|
</el-row>
|
|
|
<el-row class="row">
|
|
|
<el-form-item
|
|
|
- label="直播方案"
|
|
|
+ label="主讲人身份"
|
|
|
class="nomb"
|
|
|
- prop="serviceProvider"
|
|
|
+ prop="clientType"
|
|
|
:rules="[{ required: true, message: '请选择直播方案' }]"
|
|
|
>
|
|
|
<el-select
|
|
|
- placeholder="请选择直播方案"
|
|
|
- v-model="form.serviceProvider"
|
|
|
+ placeholder="请选择主讲人身份"
|
|
|
+ v-model="form.clientType"
|
|
|
clearable
|
|
|
@change="
|
|
|
- value => {
|
|
|
- // console.log(value, 'value');
|
|
|
- if (value === 'rongCloud') {
|
|
|
- form.os = 'pc';
|
|
|
- } else if (value === 'tencentCloud') {
|
|
|
- form.os = 'client';
|
|
|
- }
|
|
|
+ (value) => {
|
|
|
+ form.speakerId = '';
|
|
|
}
|
|
|
"
|
|
|
>
|
|
|
- <el-option label="融云" value="rongCloud"></el-option>
|
|
|
- <el-option label="腾讯云" value="tencentCloud"></el-option>
|
|
|
+ <el-option label="老师" value="TEACHER"></el-option>
|
|
|
+ <el-option label="员工" value="EDUCATION"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label="主讲人"
|
|
|
+ class="nomb"
|
|
|
+ prop="speakerId"
|
|
|
+ :rules="[{ required: true, message: '请输入主讲人' }]"
|
|
|
+ v-if="form.clientType == 'TEACHER'"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model.trim="form.speakerId"
|
|
|
+ collapse-tags
|
|
|
+ clearable
|
|
|
+ placeholder="请输入主讲人"
|
|
|
+ remote
|
|
|
+ filterable
|
|
|
+ :remote-method="remoteMethod"
|
|
|
+ :loading="remoteLoading"
|
|
|
+ @change="changeTeacher"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in teacherList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.realName"
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ <span style="float: left">{{ item.realName }}</span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px">{{
|
|
|
+ item.phone
|
|
|
+ }}</span>
|
|
|
+ </el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ v-else
|
|
|
+ label="主讲人"
|
|
|
+ class="nomb"
|
|
|
+ prop="speakerId"
|
|
|
+ :rules="[{ required: true, message: '请输入主讲人' }]"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model.trim="form.speakerId"
|
|
|
+ collapse-tags
|
|
|
+ clearable
|
|
|
+ placeholder="请输入主讲人"
|
|
|
+ remote
|
|
|
+ filterable
|
|
|
+ :remote-method="remoteMethodEduc"
|
|
|
+ :loading="remoteLoading"
|
|
|
+ @change="changeTeacher"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in educationList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.realName"
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ <span style="float: left">{{ item.realName }}</span>
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 13px">{{
|
|
|
+ item.phone
|
|
|
+ }}</span>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-row>
|
|
|
+ <el-row class="row">
|
|
|
<el-form-item
|
|
|
label="直播课内容"
|
|
|
prop="liveRemark"
|
|
@@ -202,9 +259,7 @@
|
|
|
<el-radio v-if="form.serviceProvider === 'rongCloud'" label="pc"
|
|
|
>web</el-radio
|
|
|
>
|
|
|
- <el-radio
|
|
|
- v-if="form.serviceProvider === 'tencentCloud'"
|
|
|
- label="client"
|
|
|
+ <el-radio v-if="form.serviceProvider === 'tencentCloud'" label="client"
|
|
|
>客户端</el-radio
|
|
|
>
|
|
|
<el-radio label="mobile">手机</el-radio>
|
|
@@ -235,8 +290,8 @@
|
|
|
<el-form-item
|
|
|
v-if="
|
|
|
form.popularizeType == 'SCHOOL' ||
|
|
|
- form.popularizeType == 'ORGAN' ||
|
|
|
- form.popularizeType == 'TEAM'
|
|
|
+ form.popularizeType == 'ORGAN' ||
|
|
|
+ form.popularizeType == 'TEAM'
|
|
|
"
|
|
|
label="分部"
|
|
|
prop="organIds"
|
|
@@ -403,11 +458,7 @@
|
|
|
import preview from "./modals/preview.vue";
|
|
|
import axios from "axios";
|
|
|
import { getToken, getTenantId } from "@/utils/auth";
|
|
|
-import {
|
|
|
- createLiveBroadcast,
|
|
|
- resetLiveBroadcastRoomList,
|
|
|
- getRoomInfo
|
|
|
-} from "./api";
|
|
|
+import { createLiveBroadcast, resetLiveBroadcastRoomList, getRoomInfo } from "./api";
|
|
|
import { queryByOrganId } from "@/api/systemManage";
|
|
|
import { getTeamList } from "@/api/teamServer";
|
|
|
export default {
|
|
@@ -426,23 +477,31 @@ export default {
|
|
|
liveRemark: "",
|
|
|
preTemplate: null,
|
|
|
popularizeType: "ALL",
|
|
|
+ clientType: "TEACHER",
|
|
|
os: "client",
|
|
|
roomConfig: {
|
|
|
whether_like: 0,
|
|
|
whether_chat: 0,
|
|
|
whether_video: 0,
|
|
|
whether_mic: 0,
|
|
|
- whether_view_shop_cart: 0
|
|
|
+ whether_view_shop_cart: 0,
|
|
|
},
|
|
|
checkList: [],
|
|
|
- serviceProvider: "tencentCloud"
|
|
|
+ serviceProvider: "tencentCloud",
|
|
|
},
|
|
|
remoteLoading: false,
|
|
|
teacherList: [],
|
|
|
checkList: [],
|
|
|
cooperationList: [],
|
|
|
teamList: [],
|
|
|
- isinit: true
|
|
|
+ isinit: true,
|
|
|
+ pickerOptions: {
|
|
|
+ firstDayOfWeek: 1,
|
|
|
+ disabledDate(time) {
|
|
|
+ return time.getTime() + 86400000 <= new Date().getTime();
|
|
|
+ },
|
|
|
+ },
|
|
|
+ educationList: [],
|
|
|
};
|
|
|
},
|
|
|
mounted() {
|
|
@@ -503,23 +562,19 @@ export default {
|
|
|
schoolIds: [],
|
|
|
teamIds: [],
|
|
|
catIds: [],
|
|
|
- studentIds: []
|
|
|
+ studentIds: [],
|
|
|
};
|
|
|
this.form.roomConfig = JSON.parse(res.data.roomConfig);
|
|
|
if (res.data.popularizeOrgIds) {
|
|
|
- this.form.organIds = res.data.popularizeOrgIds
|
|
|
- .split(",")
|
|
|
- .map(item => {
|
|
|
- return item * 1;
|
|
|
- });
|
|
|
+ this.form.organIds = res.data.popularizeOrgIds.split(",").map((item) => {
|
|
|
+ return item * 1;
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
if (res.data.popularizeSchoolIds) {
|
|
|
- this.form.schoolIds = res.data.popularizeSchoolIds
|
|
|
- .split(",")
|
|
|
- .map(item => {
|
|
|
- return item * 1;
|
|
|
- });
|
|
|
+ this.form.schoolIds = res.data.popularizeSchoolIds.split(",").map((item) => {
|
|
|
+ return item * 1;
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
if (res.data.popularizeTeamIds) {
|
|
@@ -542,14 +597,14 @@ export default {
|
|
|
this.$router.push("/liveClassManager");
|
|
|
},
|
|
|
changeTeacher(val) {
|
|
|
- this.teacherList.forEach(item => {
|
|
|
+ this.teacherList.forEach((item) => {
|
|
|
if (val == item.id) {
|
|
|
this.form.speakerName = item.realName;
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
preLook() {
|
|
|
- this.$refs.form.validate(flag => {
|
|
|
+ this.$refs.form.validate((flag) => {
|
|
|
if (flag) {
|
|
|
this.preLookVisible = true;
|
|
|
console.log("预览", this.form);
|
|
@@ -576,25 +631,25 @@ export default {
|
|
|
method: "get",
|
|
|
headers: {
|
|
|
Authorization: getToken(),
|
|
|
- tenantId: getTenantId()
|
|
|
+ tenantId: getTenantId(),
|
|
|
},
|
|
|
params: {
|
|
|
rows: 9999,
|
|
|
search: query,
|
|
|
lockFlag: 0,
|
|
|
- demissionFlag: false
|
|
|
+ demissionFlag: false,
|
|
|
},
|
|
|
- url
|
|
|
+ url,
|
|
|
};
|
|
|
this.remoteLoading = true;
|
|
|
// this.studentList = []
|
|
|
- axios(options).then(res => {
|
|
|
+ axios(options).then((res) => {
|
|
|
this.remoteLoading = false;
|
|
|
let result = res.data;
|
|
|
if (result.code == 200) {
|
|
|
// Array.prototype.splice.apply(this.studentList, result.data.rows);
|
|
|
if (result.data && result.data.rows.length > 0) {
|
|
|
- result.data.rows.forEach(item => {
|
|
|
+ result.data.rows.forEach((item) => {
|
|
|
this.teacherList.unshift(item);
|
|
|
});
|
|
|
this.teacherList = this.deweight(this.teacherList, "phone");
|
|
@@ -611,11 +666,49 @@ export default {
|
|
|
// });
|
|
|
}
|
|
|
},
|
|
|
+ remoteMethodEduc(query) {
|
|
|
+ this.educationList = [];
|
|
|
+ if (query !== "") {
|
|
|
+ this.remoteLoading = true;
|
|
|
+ // 发请求搜索
|
|
|
+ const url = "/api-web/employee/queryEmployByOrganId";
|
|
|
+ const options = {
|
|
|
+ method: "get",
|
|
|
+ headers: {
|
|
|
+ Authorization: getToken(),
|
|
|
+ tenantId: getTenantId(),
|
|
|
+ },
|
|
|
+ params: {
|
|
|
+ rows: 9999,
|
|
|
+ search: query,
|
|
|
+ lockFlag: 0,
|
|
|
+ demissionFlag: false,
|
|
|
+ },
|
|
|
+ url,
|
|
|
+ };
|
|
|
+ this.remoteLoading = true;
|
|
|
+
|
|
|
+ axios(options).then((res) => {
|
|
|
+ this.remoteLoading = false;
|
|
|
+ let result = res.data;
|
|
|
+ if (result.code == 200) {
|
|
|
+ // Array.prototype.splice.apply(this.studentList, result.data.rows);
|
|
|
+ if (result.data && result.data.rows.length > 0) {
|
|
|
+ result.data.rows.forEach((item) => {
|
|
|
+ this.educationList.unshift(item);
|
|
|
+ });
|
|
|
+ this.educationList = this.deweight(this.educationList, "phone");
|
|
|
+ }
|
|
|
+ // this.studentList = this.studentList.concat(result.data.rows);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
deweight(arr, key) {
|
|
|
let res = [];
|
|
|
- arr.forEach(item => {
|
|
|
+ arr.forEach((item) => {
|
|
|
let list = [];
|
|
|
- res.forEach(resitem => {
|
|
|
+ res.forEach((resitem) => {
|
|
|
list.push(resitem[key]);
|
|
|
});
|
|
|
if (list.indexOf(item[key]) === -1) {
|
|
@@ -634,7 +727,7 @@ export default {
|
|
|
this.form.popularizeOrgIds = this.form.organIds.join(",");
|
|
|
this.form.popularizeSchoolIds = this.form.schoolIds.join(",");
|
|
|
this.form.popularizeTeamIds = this.form.teamIds.join(",");
|
|
|
- this.$refs.form.validate(async flag => {
|
|
|
+ this.$refs.form.validate(async (flag) => {
|
|
|
if (!flag) return;
|
|
|
if (this.$route.query.id) {
|
|
|
// 修改
|
|
@@ -673,7 +766,7 @@ export default {
|
|
|
if (this.form.popularizeType == "SCHOOL" && val && val.length > 0) {
|
|
|
let organId = val.join(",");
|
|
|
try {
|
|
|
- await queryByOrganId({ organId }).then(res => {
|
|
|
+ await queryByOrganId({ organId }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.cooperationList = res.data;
|
|
|
}
|
|
@@ -685,7 +778,7 @@ export default {
|
|
|
if (this.form.popularizeType == "TEAM" && val && val.length > 0) {
|
|
|
let organId = val.join(",");
|
|
|
try {
|
|
|
- await getTeamList({ organId, page: 1, rows: 9999 }).then(res => {
|
|
|
+ await getTeamList({ organId, page: 1, rows: 9999 }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.teamList = res.data.rows;
|
|
|
}
|
|
@@ -694,8 +787,8 @@ export default {
|
|
|
console.log(e);
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
+ },
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
@@ -782,15 +875,13 @@ export default {
|
|
|
.dotWrap {
|
|
|
width: 21px;
|
|
|
height: 21px;
|
|
|
- background: url("../../assets/images/icon_checkbox_default.png")
|
|
|
- no-repeat center;
|
|
|
+ background: url("../../assets/images/icon_checkbox_default.png") no-repeat center;
|
|
|
background-size: contain;
|
|
|
margin-right: 8px;
|
|
|
position: relative;
|
|
|
overflow: hidden;
|
|
|
&.checked {
|
|
|
- background: url("../../assets/images/icon_checkbox.png") no-repeat
|
|
|
- center;
|
|
|
+ background: url("../../assets/images/icon_checkbox.png") no-repeat center;
|
|
|
background-size: contain;
|
|
|
}
|
|
|
}
|