浏览代码

Merge branch 'live-video-im' into 11/24SAAS

lex 2 年之前
父节点
当前提交
bc227d9e10

+ 1 - 0
package.json

@@ -95,6 +95,7 @@
     "less": "^3.10.3",
     "less-loader": "^5.0.0",
     "mockjs": "1.0.1-beta3",
+    "patch-package": "^6.5.1",
     "runjs": "^4.3.2",
     "sass-loader": "^7.1.0",
     "script-ext-html-webpack-plugin": "2.1.3",

+ 12 - 0
patches/@core-player+playcore-hls+0.1.1.patch

@@ -0,0 +1,12 @@
+diff --git a/node_modules/@core-player/playcore-hls/src/constants.js b/node_modules/@core-player/playcore-hls/src/constants.js
+index 1606f11..6643f5e 100644
+--- a/node_modules/@core-player/playcore-hls/src/constants.js
++++ b/node_modules/@core-player/playcore-hls/src/constants.js
+@@ -1,4 +1,6 @@
+-export const HLS_SDK = 'https://cdn.jsdelivr.net/npm/hls.js@latest'
++// export const HLS_SDK = 'https://cdn.jsdelivr.net/npm/hls.js@latest'
++export const HLS_SDK = 'https://web.sdk.qcloud.com/player/tcplayer/release/v4.2.1/libs/hls.min.0.13.2m.js'
++
+ 
+ export const LOAD_SDK_TIMEOUT = 60 * 1000
+ 

+ 1 - 0
src/views/liveClassManager/liveClassDetail.vue

@@ -246,6 +246,7 @@ export default {
   mounted() {
     this.getDetail();
     this.getList();
+    console.log(HLSCore, "HLSCore");
   },
   methods: {
     onCancel() {

+ 72 - 73
src/views/liveClassManager/newLiveClass.vue

@@ -12,6 +12,31 @@
         label-position="left"
       >
         <el-alert
+          title="直播设备配置"
+          type="info"
+          :closable="false"
+          style="margin-bottom: 20px"
+        ></el-alert>
+        <el-row class="row">
+          <el-form-item
+            class="mline"
+            label="直播设备"
+            prop="os"
+            label-width="130px"
+            :rules="[{ required: true, message: '请选择推广类型' }]"
+          >
+            <el-radio-group v-model="form.os" @input="changeOs">
+              <!-- value="rongCloud"></el-option>
+              <el-option label="腾讯云" value="tencentCloud" -->
+              <el-radio v-if="serviceProvider === 'rongCloud'" label="pc">web</el-radio>
+              <el-radio v-if="serviceProvider === 'tencentCloud'" label="client"
+                >客户端</el-radio
+              >
+              <el-radio label="mobile">手机</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-row>
+        <el-alert
           title="直播课信息"
           type="info"
           :closable="false"
@@ -83,9 +108,10 @@
             <el-select
               placeholder="请选择主讲人身份"
               v-model="form.clientType"
+              :disabled="form.os == 'mobile'"
               clearable
               @change="
-                value => {
+                (value) => {
                   form.speakerId = '';
                 }
               "
@@ -238,33 +264,7 @@
             </el-checkbox-group>
           </el-form-item>
         </el-row>
-        <el-alert
-          title="直播设备配置"
-          type="info"
-          :closable="false"
-          style="margin-bottom: 20px"
-        ></el-alert>
-        <el-row class="row">
-          <el-form-item
-            class="mline"
-            label="直播设备"
-            prop="os"
-            label-width="130px"
-            :rules="[{ required: true, message: '请选择推广类型' }]"
-          >
-            <el-radio-group v-model="form.os">
-              <!-- value="rongCloud"></el-option>
-              <el-option label="腾讯云" value="tencentCloud" -->
-              <el-radio v-if="serviceProvider === 'rongCloud'" label="pc"
-                >web</el-radio
-              >
-              <el-radio v-if="serviceProvider === 'tencentCloud'" label="client"
-                >客户端</el-radio
-              >
-              <el-radio label="mobile">手机</el-radio>
-            </el-radio-group>
-          </el-form-item>
-        </el-row>
+
         <el-alert
           title="观看权限配置"
           type="info"
@@ -289,8 +289,8 @@
           <el-form-item
             v-if="
               form.popularizeType == 'SCHOOL' ||
-                form.popularizeType == 'ORGAN' ||
-                form.popularizeType == 'TEAM'
+              form.popularizeType == 'ORGAN' ||
+              form.popularizeType == 'TEAM'
             "
             label="分部"
             prop="organIds"
@@ -461,7 +461,7 @@ import {
   createLiveBroadcast,
   resetLiveBroadcastRoomList,
   getRoomInfo,
-  sysTenantConfigAll
+  sysTenantConfigAll,
 } from "./api";
 import { queryByOrganId } from "@/api/systemManage";
 import { getTeamList } from "@/api/teamServer";
@@ -488,9 +488,9 @@ export default {
           whether_chat: 0,
           whether_video: 0,
           whether_mic: 0,
-          whether_view_shop_cart: 0
+          whether_view_shop_cart: 0,
         },
-        checkList: []
+        checkList: [],
       },
       serviceProvider: "tencentCloud",
       remoteLoading: false,
@@ -503,9 +503,9 @@ export default {
         firstDayOfWeek: 1,
         disabledDate(time) {
           return time.getTime() + 86400000 <= new Date().getTime();
-        }
+        },
       },
-      educationList: []
+      educationList: [],
     };
   },
   async mounted() {
@@ -513,15 +513,14 @@ export default {
 
     try {
       const findName = await sysTenantConfigAll({
-        group: "LIVE_CLIENT"
+        group: "LIVE_CLIENT",
       });
       if (findName.data && findName.data.length > 0) {
-        findName.data.forEach(item => {
+        findName.data.forEach((item) => {
           if (item.paramName == "live_client") {
             this.serviceProvider = item.paranValue;
 
-            this.form.os =
-              this.serviceProvider == "tencentCloud" ? "client" : "pc";
+            this.form.os = this.serviceProvider == "tencentCloud" ? "client" : "pc";
           }
         });
       }
@@ -574,6 +573,12 @@ export default {
     console.log(this.form, "form");
   },
   methods: {
+    changeOs(e) {
+      if (e == "mobile") {
+        this.form.clientType = "TEACHER";
+        this.form.speakerId = "";
+      }
+    },
     async getDetail() {
       try {
         const res = await getRoomInfo({ roomUid: this.$route.query.roomUid });
@@ -585,23 +590,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) {
@@ -628,14 +629,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);
@@ -662,25 +663,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");
@@ -707,25 +708,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;
 
-        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.educationList.unshift(item);
               });
               this.educationList = this.deweight(this.educationList, "phone");
@@ -737,9 +738,9 @@ export default {
     },
     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) {
@@ -758,7 +759,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) {
           // 修改
@@ -797,7 +798,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;
             }
@@ -809,7 +810,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;
             }
@@ -818,8 +819,8 @@ export default {
           console.log(e);
         }
       }
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>
@@ -906,15 +907,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;
         }
       }