Tang 3 năm trước cách đây
mục cha
commit
93b5036e78

+ 60 - 23
src/views/resource/videoManagement/chapter/addSection.vue

@@ -32,7 +32,7 @@
               :rules="rules"
             >
               <div class="left_box">
-                <el-form-item label="标题前缀" prop="prefixName">
+                <el-form-item label="标题前缀">
                   <el-input v-model="item.prefixName"></el-input>
                   <p class="p_style">注:便于检索、归类,以及区分一样的标题</p>
                 </el-form-item>
@@ -50,10 +50,10 @@
                     @change="changesType(index, $event)"
                   >
                     <el-option
-                      v-for="(item, index) in sectionTypeOptions"
-                      :key="index"
-                      :label="item.label"
-                      :value="item.value"
+                      v-for="(items, indexs) in sectionTypeOptions"
+                      :key="indexs"
+                      :label="items.label"
+                      :value="items.value"
                     >
                     </el-option>
                   </el-select>
@@ -63,7 +63,12 @@
                   :label="item.sectionType === 1 ? 'URL地址' : '频道号'"
                   prop="url"
                 >
-                  <el-input v-model="item.url"></el-input>
+                  <el-input
+                    v-model="item.url"
+                    @blur="
+                      item.sectionType === 1 ? getUrlTime(index, $event) : ''
+                    "
+                  ></el-input>
                 </el-form-item>
                 <div v-if="item.sectionType === 1">
                   <el-form-item label="节时长" prop="durationTime">
@@ -72,6 +77,7 @@
                       range-separator=":"
                       v-model="item.durationTime"
                       placeholder="请填入节时长"
+                      :disabled="item.disabled"
                     >
                     </el-time-picker>
                   </el-form-item>
@@ -104,17 +110,27 @@
                     {{ compTimeOUT(item.liveStartTime, item.liveEndTime) }}
                   </el-form-item>
                 </div>
-                <el-form-item label="讲师" prop="teacherId">
+                <el-form-item
+                  label="讲师"
+                  prop="teacherId"
+                  :rules="[
+                    {
+                      required: item.sectionType === 2 ? true : false,
+                      message: '请选择讲师',
+                      trigger: 'change',
+                    },
+                  ]"
+                >
                   <el-select
                     clearable
                     v-model="item.teacherId"
                     placeholder="请选择讲师"
                   >
                     <el-option
-                      v-for="(item, index) in teacherList"
-                      :key="index"
-                      :label="item.teacherName"
-                      :value="item.teacherId"
+                      v-for="(items, indexs) in teacherList"
+                      :key="indexs"
+                      :label="items.teacherName"
+                      :value="items.teacherId"
                     >
                     </el-option>
                   </el-select>
@@ -166,9 +182,6 @@ export default {
         liveEndTime: [
           { required: true, message: "请选择直播结束时间", trigger: "change" },
         ],
-        teacherId: [
-          { required: true, message: "请选择讲师", trigger: "change" },
-        ],
       },
       sectionTypeOptions: [
         {
@@ -206,6 +219,31 @@ export default {
     },
   },
   methods: {
+    /**
+     * 查找节时长
+     */
+    getUrlTime(index, value) {
+      var self = this;
+      let val = value.target.value;
+      const valueUrl = val.replace(/\s/g, "");
+      if (valueUrl && valueUrl.length > 30) {
+        this.$api
+          .inquirepolyvvideo(valueUrl)
+          .then((res) => {
+            if (res.data.duration) {
+              this.$set(this.list[index], "durationTime", res.data.duration);
+              this.$set(this.list[index], "disabled", true);
+              this.$message.success("已自动录入节时长");
+            } else {
+              this.$set(this.list[index], "disabled", false);
+              this.$message.error("查找不到该节时长,请手动输入节时长");
+            }
+          })
+          .catch((err) => {
+            this.$set(this.list[index], "disabled", false);
+          });
+      }
+    },
     /**
      * 直播开始逻辑处理
      */
@@ -242,7 +280,7 @@ export default {
      * 添加节
      */
     addChapterList() {
-      this.list.push({});
+      this.list.push({ disabled: false });
     },
     /**
      * 打开页面触发函数
@@ -295,27 +333,26 @@ export default {
       ary.forEach((item) => {
         if (item.sectionType === 1) {
           item.recordingUrl = item.url;
+          item.durationTime = this.$methodsTools.secondFormDate(
+            item.durationTime
+          );
           delete item.url;
         }
         if (item.sectionType === 2) {
           item.liveUrl = item.url;
+          delete item.url;
           item.liveStartTime = this.$methodsTools.time10to13(
             item.liveStartTime,
             1
           );
-          item.liveEndTime = this.$methodsTools.time10to13(
-            item.liveEndTime,
-            1
-          );
-          delete item.url;
+          item.liveEndTime = this.$methodsTools.time10to13(item.liveEndTime, 1);
+          item.durationTime = item.liveEndTime - item.liveStartTime;
         }
         item.businessList = this.businList;
         item.status = 1;
         item.publishStatus = 1;
         item.coverUrl = "oss/images/avatar/20211013/1634097664410_1397766697";
-        item.durationTime = this.$methodsTools.secondFormDate(
-          item.durationTime
-        );
+        delete item.disabled;
       });
       this.$api.drCourseSectionaddMore(ary.reverse()).then((res) => {
         this.dialogVisible = false;

+ 7 - 3
src/views/resource/videoManagement/festival/add/index.vue

@@ -134,7 +134,7 @@
           >
           <!-- <span v-if="newSujectApis.length === 0">未选项目类型</span> -->
         </el-form-item>
-        <el-form-item label="标题前缀" prop="prefixName">
+        <el-form-item label="标题前缀">
           <el-input v-model="listData.prefixName"></el-input>
           <div style="color: #999">注:便于检索、归类,以及区分一样的标题</div>
         </el-form-item>
@@ -303,7 +303,10 @@
           >
           </el-time-picker>
         </el-form-item>
-        <el-form-item label="讲师" prop="teacherId">
+        <el-form-item
+          label="讲师"
+          :prop="listData.sectionType === 2 ? 'teacherId' : ''"
+        >
           <el-select
             v-model="listData.teacherId"
             placeholder="请选择讲师"
@@ -631,7 +634,7 @@ export default {
     getApiTime(val) {
       var self = this;
       const valueUrl = val.replace(/\s/g, "");
-      if (valueUrl && valueUrl.length > 30)
+      if (valueUrl && valueUrl.length > 30) {
         this.$api
           .inquirepolyvvideo(valueUrl)
           .then((res) => {
@@ -645,6 +648,7 @@ export default {
           .catch((err) => {
             self.disabloutime = false;
           });
+      }
     },
     loadPlayerScript(callback) {
       if (!window.polyvPlayer) {

+ 7 - 3
src/views/resource/videoManagement/festival/edit/index.vue

@@ -107,7 +107,7 @@
           >
           <!-- <span v-if="newSujectApis.length === 0">未选项目类型</span> -->
         </el-form-item>
-        <el-form-item label="标题前缀" prop="prefixName">
+        <el-form-item label="标题前缀">
           <el-input v-model="listData.prefixName"></el-input>
           <div style="color: #999">注:便于检索、归类,以及区分一样的标题</div>
         </el-form-item>
@@ -278,7 +278,10 @@
           >
           </el-time-picker>
         </el-form-item>
-        <el-form-item label="讲师" prop="teacherId">
+        <el-form-item
+          label="讲师"
+          :prop="listData.sectionType === 2 ? 'teacherId' : ''"
+        >
           <el-select
             v-model="listData.teacherId"
             placeholder="请选择讲师"
@@ -617,7 +620,7 @@ export default {
       var self = this;
       this.clearTimes(val);
       const valueUrl = val.replace(/\s/g, "");
-      if (valueUrl && valueUrl.length > 30)
+      if (valueUrl && valueUrl.length > 30) {
         this.$api
           .inquirepolyvvideo(valueUrl)
           .then((res) => {
@@ -631,6 +634,7 @@ export default {
           .catch((err) => {
             self.disabloutime = false;
           });
+      }
     },
     loadPlayerScript(callback) {
       if (!window.polyvPlayer) {