yys 3 dní pred
rodič
commit
646a8f7a12

+ 5 - 0
src/components/RightToolbar/index.vue

@@ -75,6 +75,11 @@ export default {
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+.top-right-btn {
+  float: none;
+  margin-left: auto;
+  flex-shrink: 0;
+}
 ::v-deep .el-transfer__button {
 ::v-deep .el-transfer__button {
   border-radius: 50%;
   border-radius: 50%;
   padding: 12px;
   padding: 12px;

+ 11 - 5
src/views/live/live/index.vue

@@ -1,9 +1,6 @@
 <template>
 <template>
-  <div class="app-container">
-    <el-row :gutter="10" class="mb8">
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+  <div class="app-container live-list-page">
+    <el-form :model="queryParams" ref="queryForm" class="live-filter-form filter-container" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="直播名称" prop="liveName">
       <el-form-item label="直播名称" prop="liveName">
         <el-input
         <el-input
           v-model="queryParams.liveName"
           v-model="queryParams.liveName"
@@ -19,6 +16,7 @@
           placeholder="请选择直播状态"
           placeholder="请选择直播状态"
           clearable
           clearable
           size="small"
           size="small"
+          popper-append-to-body
         >
         >
           <el-option label="待直播" value="1"></el-option>
           <el-option label="待直播" value="1"></el-option>
           <el-option label="直播中" value="2"></el-option>
           <el-option label="直播中" value="2"></el-option>
@@ -40,6 +38,7 @@
           placeholder="请选择直播类型"
           placeholder="请选择直播类型"
           clearable
           clearable
           size="small"
           size="small"
+          popper-append-to-body
         >
         >
           <el-option label="直播" value="1"></el-option>
           <el-option label="直播" value="1"></el-option>
           <el-option label="录播" value="2"></el-option>
           <el-option label="录播" value="2"></el-option>
@@ -53,6 +52,7 @@
           placeholder="选择起始时间"
           placeholder="选择起始时间"
           value-format="yyyy-MM-dd HH:mm:ss"
           value-format="yyyy-MM-dd HH:mm:ss"
           size="small"
           size="small"
+          popper-append-to-body
         ></el-date-picker>
         ></el-date-picker>
       </el-form-item>
       </el-form-item>
       <!-- 开始时间-范围结束 -->
       <!-- 开始时间-范围结束 -->
@@ -63,6 +63,7 @@
           placeholder="选择结束时间"
           placeholder="选择结束时间"
           value-format="yyyy-MM-dd HH:mm:ss"
           value-format="yyyy-MM-dd HH:mm:ss"
           size="small"
           size="small"
+          popper-append-to-body
           :disabled="!queryParams.startTimeS"
           :disabled="!queryParams.startTimeS"
         ></el-date-picker>
         ></el-date-picker>
       </el-form-item>
       </el-form-item>
@@ -72,6 +73,7 @@
           placeholder="请选择上下架状态"
           placeholder="请选择上下架状态"
           clearable
           clearable
           size="small"
           size="small"
+          popper-append-to-body
         >
         >
           <el-option label="上架" value="1"></el-option>
           <el-option label="上架" value="1"></el-option>
           <el-option label="下架" value="2"></el-option>
           <el-option label="下架" value="2"></el-option>
@@ -84,6 +86,7 @@
           placeholder="请选择审核状态"
           placeholder="请选择审核状态"
           clearable
           clearable
           size="small"
           size="small"
+          popper-append-to-body
         >
         >
           <el-option label="审核未通过" value="0"></el-option>
           <el-option label="审核未通过" value="0"></el-option>
           <el-option label="审核通过" value="1"></el-option>
           <el-option label="审核通过" value="1"></el-option>
@@ -95,6 +98,9 @@
         <el-button icon="el-icon-download" size="mini" v-hasPermi="['live:live:export']" @click="handleExport">导出</el-button>
         <el-button icon="el-icon-download" size="mini" v-hasPermi="['live:live:export']" @click="handleExport">导出</el-button>
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
+    <el-row :gutter="10" class="mb8">
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
     <div class="selection-toolbar">
     <div class="selection-toolbar">
       <el-checkbox :indeterminate="isIndeterminate" v-model="allChecked" @change="toggleSelectAll">
       <el-checkbox :indeterminate="isIndeterminate" v-model="allChecked" @change="toggleSelectAll">
         {{ multipleSelection.length > 0 ? `已选 ${multipleSelection.length} 条` : '选中本页' }}
         {{ multipleSelection.length > 0 ? `已选 ${multipleSelection.length} 条` : '选中本页' }}

+ 36 - 23
src/views/live/liveAfteraSales/index.vue

@@ -1,6 +1,6 @@
 <template>
 <template>
-  <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+  <div class="app-container live-list-page">
+    <el-form :model="queryParams" ref="queryForm" class="live-filter-form filter-container" :inline="true" v-show="showSearch" label-width="68px">
 
 
       <el-form-item label="所属部门" prop="deptId">
       <el-form-item label="所属部门" prop="deptId">
         <treeselect style="width:220px" v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择所属部门" />
         <treeselect style="width:220px" v-model="queryParams.deptId" :options="deptOptions" :show-count="true" placeholder="请选择所属部门" />
@@ -37,7 +37,7 @@
 
 
 
 
       <el-form-item label="退款类型" prop="serviceType">
       <el-form-item label="退款类型" prop="serviceType">
-        <el-select  v-model="queryParams.serviceType" placeholder="请选择退款类型" clearable size="small" >
+        <el-select  v-model="queryParams.serviceType" placeholder="请选择退款类型" clearable size="small" popper-append-to-body>
           <el-option
           <el-option
             v-for="item in serviceTypeOptions"
             v-for="item in serviceTypeOptions"
             :key="item.dictValue"
             :key="item.dictValue"
@@ -49,7 +49,7 @@
 
 
 
 
       <el-form-item label="状态" prop="status">
       <el-form-item label="状态" prop="status">
-        <el-select  v-model="queryParams.status" placeholder="请选择状态" clearable size="small" >
+        <el-select  v-model="queryParams.status" placeholder="请选择状态" clearable size="small" popper-append-to-body>
           <el-option
           <el-option
             v-for="item in statusOptions"
             v-for="item in statusOptions"
             :key="item.dictValue"
             :key="item.dictValue"
@@ -59,7 +59,7 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="售后状态" prop="salesStatus">
       <el-form-item label="售后状态" prop="salesStatus">
-        <el-select   v-model="queryParams.salesStatus" placeholder="请选择状态" clearable size="small" >
+        <el-select   v-model="queryParams.salesStatus" placeholder="请选择状态" clearable size="small" popper-append-to-body>
           <el-option
           <el-option
             v-for="item in salesStatusOptions"
             v-for="item in salesStatusOptions"
             :key="item.dictValue"
             :key="item.dictValue"
@@ -69,7 +69,7 @@
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="订单状态" prop="orderStatus">
       <el-form-item label="订单状态" prop="orderStatus">
-        <el-select   v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small" >
+        <el-select   v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small" popper-append-to-body>
           <el-option
           <el-option
             v-for="item in orderStatusOptions"
             v-for="item in orderStatusOptions"
             :key="item.dictValue"
             :key="item.dictValue"
@@ -80,7 +80,7 @@
       </el-form-item>
       </el-form-item>
 
 
       <el-form-item label="物流状态" prop="deliveryStatus">
       <el-form-item label="物流状态" prop="deliveryStatus">
-        <el-select   v-model="queryParams.deliveryStatus" placeholder="请选择物流状态" clearable size="small" >
+        <el-select   v-model="queryParams.deliveryStatus" placeholder="请选择物流状态" clearable size="small" popper-append-to-body>
           <el-option
           <el-option
             v-for="item in deliveryStatusOptions"
             v-for="item in deliveryStatusOptions"
             :key="item.dictValue"
             :key="item.dictValue"
@@ -279,25 +279,38 @@ export default {
   },
   },
   created() {
   created() {
     this.getTreeselect();
     this.getTreeselect();
-    this.getDicts("store_after_sales_sales_status").then((response) => {
-      this.salesStatusOptions = response.data;
-    });
-    this.getDicts("store_after_sales_status").then((response) => {
-      this.statusOptions = response.data;
-    });
-    this.getDicts("store_after_sales_service_type").then((response) => {
-      this.serviceTypeOptions = response.data;
-    });
-    this.getDicts("store_order_delivery_status").then((response) => {
-      this.deliveryStatusOptions = response.data;
-    });
-    this.getDicts("store_order_status").then((response) => {
-      this.orderStatusOptions = response.data;
-    });
-
+    this.loadFilterDictOptions();
     this.getList();
     this.getList();
   },
   },
   methods: {
   methods: {
+    loadFilterDictOptions() {
+      const loadDict = (dictType) => {
+        return this.getDicts(dictType)
+          .then((response) => response.data || [])
+          .catch(() => []);
+      };
+      loadDict("store_after_sales_sales_status").then((data) => {
+        this.salesStatusOptions = data;
+      });
+      loadDict("store_after_sales_status").then((data) => {
+        this.statusOptions = data;
+      });
+      loadDict("store_after_sales_service_type").then((data) => {
+        this.serviceTypeOptions = data;
+      });
+      loadDict("store_order_delivery_status").then((data) => {
+        this.deliveryStatusOptions = data;
+      });
+      loadDict("sys_live_order_status").then((data) => {
+        if (data.length) {
+          this.orderStatusOptions = data;
+          return;
+        }
+        return loadDict("store_order_status").then((fallback) => {
+          this.orderStatusOptions = fallback;
+        });
+      });
+    },
     handleShow(row){
     handleShow(row){
       this.title="售后订单"
       this.title="售后订单"
       this.open=true;
       this.open=true;

+ 5 - 5
src/views/live/liveData/index.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div class="el-container-md">
+  <div class="app-container live-list-page">
     <!-- 数据统计指标展示区域 -->
     <!-- 数据统计指标展示区域 -->
     <el-card class="statistics-card" shadow="never">
     <el-card class="statistics-card" shadow="never">
       <el-row :gutter="20">
       <el-row :gutter="20">
@@ -116,7 +116,7 @@
     </el-card>
     </el-card>
 
 
     <!-- 筛选条件区域 -->
     <!-- 筛选条件区域 -->
-    <el-form :model="queryParams" class="live-data-css" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+    <el-form :model="queryParams" class="live-filter-form filter-container live-data-css" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
       <el-form-item label="直播名称" prop="liveName">
       <el-form-item label="直播名称" prop="liveName">
         <el-input
         <el-input
           v-model="queryParams.liveName"
           v-model="queryParams.liveName"
@@ -127,19 +127,19 @@
         />
         />
       </el-form-item>
       </el-form-item>
       <el-form-item label="观看类型" prop="watchType">
       <el-form-item label="观看类型" prop="watchType">
-        <el-select v-model="queryParams.watchType" placeholder="请选择观看类型" clearable size="small">
+        <el-select v-model="queryParams.watchType" placeholder="请选择观看类型" clearable size="small" popper-append-to-body style="width: 160px">
           <el-option label="直播" value="live"></el-option>
           <el-option label="直播" value="live"></el-option>
           <el-option label="回放" value="replay"></el-option>
           <el-option label="回放" value="replay"></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="完课状态" prop="completeStatus">
       <el-form-item label="完课状态" prop="completeStatus">
-        <el-select v-model="queryParams.completeStatus" placeholder="请选择完课状态" clearable size="small">
+        <el-select v-model="queryParams.completeStatus" placeholder="请选择完课状态" clearable size="small" popper-append-to-body style="width: 160px">
           <el-option label="已完课" value="1"></el-option>
           <el-option label="已完课" value="1"></el-option>
           <el-option label="未完课" value="0"></el-option>
           <el-option label="未完课" value="0"></el-option>
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
       <el-form-item label="付费状态" prop="payStatus">
       <el-form-item label="付费状态" prop="payStatus">
-        <el-select v-model="queryParams.payStatus" placeholder="请选择付费状态" clearable size="small">
+        <el-select v-model="queryParams.payStatus" placeholder="请选择付费状态" clearable size="small" popper-append-to-body style="width: 160px">
           <el-option label="已付费" value="1"></el-option>
           <el-option label="已付费" value="1"></el-option>
           <el-option label="未付费" value="0"></el-option>
           <el-option label="未付费" value="0"></el-option>
         </el-select>
         </el-select>

+ 2 - 1
src/views/qw/sopLogs/sopLogsList.vue

@@ -191,6 +191,7 @@
                 <span v-if="item.contentType == 21">发看课短信</span>
                 <span v-if="item.contentType == 21">发看课短信</span>
                 <span v-if="item.contentType == 23">APP看课跳转短链</span>
                 <span v-if="item.contentType == 23">APP看课跳转短链</span>
                 <span v-if="item.contentType == 24">APP直播跳转短链</span>
                 <span v-if="item.contentType == 24">APP直播跳转短链</span>
+                <span v-if="item.contentType == 25">APP直播卡片</span>
               </div>
               </div>
               <div v-if="item.sendStatus">
               <div v-if="item.sendStatus">
                 <span>发送状态:</span>
                 <span>发送状态:</span>
@@ -223,7 +224,7 @@
                 </div>
                 </div>
               </div>
               </div>
             </div>
             </div>
-            <div v-if="item.contentType == 4 || item.contentType == 10 || item.contentType == 18 || item.contentType == 17 || item.contentType == 23 || item.contentType == 24" class="message-style">
+            <div v-if="item.contentType == 4 || item.contentType == 10 || item.contentType == 18 || item.contentType == 17 || item.contentType == 23 || item.contentType == 24 || item.contentType == 25" class="message-style">
                 <div style="display: flex; justify-content: space-between; width: 100%">
                 <div style="display: flex; justify-content: space-between; width: 100%">
                   <span style="font-size: 13px; flex: 1">{{ item.miniprogramTitle }}</span>
                   <span style="font-size: 13px; flex: 1">{{ item.miniprogramTitle }}</span>
                   <el-image
                   <el-image

+ 1 - 1
src/views/qw/sopTemp/updateSopTemp.vue

@@ -435,7 +435,7 @@
                                               </el-form-item>
                                               </el-form-item>
                                             </el-card>
                                             </el-card>
                                           </div>
                                           </div>
-                                          <div v-if="setList.contentType == 12 || setList.contentType == 18 || setList.contentType == 19 || setList.contentType == 24">
+                                          <div v-if="setList.contentType == 12 || setList.contentType == 18 || setList.contentType == 19 || setList.contentType == 24 || setList.contentType == 25">
                                             <el-card class="box-card miniprogram-card">
                                             <el-card class="box-card miniprogram-card">
                                               <div slot="header" class="card-header-mini">
                                               <div slot="header" class="card-header-mini">
                                                 <i class="el-icon-video-camera"></i>
                                                 <i class="el-icon-video-camera"></i>

+ 13 - 12
src/views/qw/sopUserLogsInfo/sendMsgOpenTool.vue

@@ -101,7 +101,7 @@
                     </el-card>
                     </el-card>
                   </div> -->
                   </div> -->
                   <el-form-item label="内容" style="margin-bottom: 2%" >
                   <el-form-item label="内容" style="margin-bottom: 2%" >
-                    <div v-if="item.contentType == 12 || item.contentType == 18 || item.contentType == 19 || item.contentType == 24">
+                    <div v-if="item.contentType == 12 || item.contentType == 18 || item.contentType == 19 || item.contentType == 24 || item.contentType == 25">
                       <el-card class="box-card">
                       <el-card class="box-card">
                         <el-form-item label="直播间" >
                         <el-form-item label="直播间" >
                           <el-select  v-model="item.liveId"
                           <el-select  v-model="item.liveId"
@@ -1021,26 +1021,27 @@ export default {
 
 
           if (this.msgForm.draftStrategy==1) {
           if (this.msgForm.draftStrategy==1) {
 
 
-            if (!!hasLiveSetting && (this.msgForm.courseId != null && this.msgForm.courseId != '')) {
-              return this.$message.error("直播间不能选取课程");
-            }
-            if (!!hasLiveSetting && (this.msgForm.videoId != null && this.msgForm.videoId != '')) {
-              return this.$message.error("直播间不能选取课节");
-            }
-
             this.msgForm.setting = JSON.stringify(this.setting)
             this.msgForm.setting = JSON.stringify(this.setting)
 
 
             let jsonSetting = JSON.parse(this.msgForm.setting);
             let jsonSetting = JSON.parse(this.msgForm.setting);
             let hasLiveSetting = false;
             let hasLiveSetting = false;
             console.log(jsonSetting)
             console.log(jsonSetting)
             for (let index = 0; index < jsonSetting.length; index++) {
             for (let index = 0; index < jsonSetting.length; index++) {
-              if (!!jsonSetting[index] && (jsonSetting[index].contentType == "12" || jsonSetting[index].contentType == "18" || jsonSetting[index].contentType == "19" || jsonSetting[index].contentType == "20")) {
+              if (!!jsonSetting[index] && (jsonSetting[index].contentType == "12" || jsonSetting[index].contentType == "18" || jsonSetting[index].contentType == "19" || jsonSetting[index].contentType == "20" || jsonSetting[index].contentType == "24" || jsonSetting[index].contentType == "25")) {
                 if (!!hasLiveSetting) {
                 if (!!hasLiveSetting) {
                   return this.$message.error("发送直播间只能一次只能发送一条");
                   return this.$message.error("发送直播间只能一次只能发送一条");
                 }
                 }
                 hasLiveSetting = true;
                 hasLiveSetting = true;
               }
               }
             }
             }
+
+            if (!!hasLiveSetting && (this.msgForm.courseId != null && this.msgForm.courseId != '')) {
+              return this.$message.error("直播间不能选取课程");
+            }
+            if (!!hasLiveSetting && (this.msgForm.videoId != null && this.msgForm.videoId != '')) {
+              return this.$message.error("直播间不能选取课节");
+            }
+
             if (this.setting.length <= 0) {
             if (this.setting.length <= 0) {
               return this.$message.error("请添加规则")
               return this.$message.error("请添加规则")
             }
             }
@@ -1076,10 +1077,10 @@ export default {
                 return this.$message.error("链接地址不能为空")
                 return this.$message.error("链接地址不能为空")
               }
               }
 
 
-              if ((this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17 || this.setting[i].contentType == 23 || this.setting[i].contentType == 24) && (this.setting[i].miniprogramTitle == null || this.setting[i].miniprogramTitle == "")) {
+              if ((this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17 || this.setting[i].contentType == 23 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25) && (this.setting[i].miniprogramTitle == null || this.setting[i].miniprogramTitle == "")) {
                 return this.$message.error("小程序消息标题不能为空")
                 return this.$message.error("小程序消息标题不能为空")
               }
               }
-              if ((this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17 || this.setting[i].contentType == 23 || this.setting[i].contentType == 24) && (this.setting[i].miniprogramPicUrl == null || this.setting[i].miniprogramPicUrl == "")) {
+              if ((this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17 || this.setting[i].contentType == 23 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25) && (this.setting[i].miniprogramPicUrl == null || this.setting[i].miniprogramPicUrl == "")) {
                 return this.$message.error("小程序封面地址不能为空")
                 return this.$message.error("小程序封面地址不能为空")
               }
               }
 
 
@@ -1100,7 +1101,7 @@ export default {
               if (this.setting[i].contentType == 14 && (this.setting[i].luckyBagId == null || this.setting[i].luckyBagId === "")) {
               if (this.setting[i].contentType == 14 && (this.setting[i].luckyBagId == null || this.setting[i].luckyBagId === "")) {
                 return this.$message.error("福袋不能为空")
                 return this.$message.error("福袋不能为空")
               }
               }
-              if ((this.setting[i].contentType == 12 || this.setting[i].contentType == 24) && (this.setting[i].liveId == null || this.setting[i].liveId == "")) {
+              if ((this.setting[i].contentType == 12 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25) && (this.setting[i].liveId == null || this.setting[i].liveId == "")) {
                 return this.$message.error("直播间不能为空");
                 return this.$message.error("直播间不能为空");
               }
               }
               if (this.setting[i].contentType == 20 && (this.setting[i].liveId == null || this.setting[i].liveId == "")) {
               if (this.setting[i].contentType == 20 && (this.setting[i].liveId == null || this.setting[i].liveId == "")) {

+ 49 - 10
src/views/qw/sopUserLogsInfo/sendMsgSopOpenTool.vue

@@ -46,6 +46,20 @@
             />
             />
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
+        <el-form-item label="选择直播间" v-if="msgForm.draftStrategy==1">
+          <el-select v-model="msgForm.liveId"
+                     filterable
+                     placeholder="请选择直播间" size="mini"
+                     style="margin-right: 10px;"
+                     @change="liveChangemsgForm(msgForm.liveId)" clearable>
+            <el-option
+              v-for="dict in liveList"
+              :key="dict.liveId"
+              :label="dict.liveName"
+              :value="dict.liveId"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="规则" prop="setting" v-if="msgForm.draftStrategy==1"  >
         <el-form-item label="规则" prop="setting" v-if="msgForm.draftStrategy==1"  >
           <div v-for="(item, index) in setting" :key="index" style="background-color: #fdfdfd; border: 1px solid #e6e6e6; margin-bottom: 20px;">
           <div v-for="(item, index) in setting" :key="index" style="background-color: #fdfdfd; border: 1px solid #e6e6e6; margin-bottom: 20px;">
             <el-row>
             <el-row>
@@ -204,13 +218,13 @@
                       </el-card>
                       </el-card>
                     </div>
                     </div>
 
 
-                    <div v-if="item.contentType == 12 || item.contentType == 18 || item.contentType == 19 || item.contentType == 24">
+                    <div v-if="item.contentType == 12 || item.contentType == 18 || item.contentType == 19 || item.contentType == 24 || item.contentType == 25">
                       <el-card class="box-card">
                       <el-card class="box-card">
                         <el-form-item label="直播间" >
                         <el-form-item label="直播间" >
                           <el-select  v-model="item.liveId"
                           <el-select  v-model="item.liveId"
                                       filterable
                                       filterable
                                       placeholder="请选择直播间" size="mini"
                                       placeholder="请选择直播间" size="mini"
-                                      @change="liveChange(item)" >
+                                      @change="liveChange(item)" :disabled="liveDisabled()">
                             <el-option
                             <el-option
                               v-for="dict in liveList"
                               v-for="dict in liveList"
                               :key="dict.liveId"
                               :key="dict.liveId"
@@ -429,6 +443,7 @@ export default {
         startTime: null,
         startTime: null,
         sendTime: null,
         sendTime: null,
         draftStrategy:1,
         draftStrategy:1,
+        liveId: null,
       },
       },
       // 表单校验
       // 表单校验
       rules: {},
       rules: {},
@@ -522,7 +537,7 @@ export default {
             }
             }
 
 
             if ( this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17
             if ( this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17
-              || this.setting[i].contentType == 23){//新增APP 看课 跳转短链回填封面
+              || this.setting[i].contentType == 23 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25){
               this.$set(this.setting[i], 'miniprogramPicUrl', selectedCourse.dictImgUrl);
               this.$set(this.setting[i], 'miniprogramPicUrl', selectedCourse.dictImgUrl);
             }
             }
           }
           }
@@ -553,7 +568,7 @@ export default {
             }
             }
 
 
             if (this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17
             if (this.setting[i].contentType == 4 || this.setting[i].contentType == 10 || this.setting[i].contentType == 17
-              || this.setting[i].contentType == 23){//新增APP 看课 跳转短链回填标题
+              || this.setting[i].contentType == 23 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25){
               this.$set(this.setting[i], 'miniprogramTitle', selectedVideo.dictLabel);
               this.$set(this.setting[i], 'miniprogramTitle', selectedVideo.dictLabel);
 
 
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
@@ -834,9 +849,21 @@ export default {
         setting:null,
         setting:null,
         sendTime:null,
         sendTime:null,
         draftStrategy:1,
         draftStrategy:1,
+        liveId: null,
       };
       };
       this.resetForm("msgForm");
       this.resetForm("msgForm");
     },
     },
+    liveChangemsgForm(liveId) {
+      if (liveId) {
+        for (let i = 0; i < this.setting.length; i++) {
+          this.$set(this.setting[i], 'liveId', liveId);
+          this.liveChange(this.setting[i]);
+        }
+      }
+    },
+    liveDisabled() {
+      return !!this.msgForm && !!this.msgForm.liveId;
+    },
     // 多选框选中数据
     // 多选框选中数据
     handleSelectionChange(selection) {
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
       this.ids = selection.map(item => item.id)
@@ -856,7 +883,10 @@ export default {
             let hasLiveSetting = false;
             let hasLiveSetting = false;
             let count = 0;
             let count = 0;
             for (let index = 0; index < jsonSetting.length; index++) {
             for (let index = 0; index < jsonSetting.length; index++) {
-              if (jsonSetting[index] && [12, 18, 19, 24].includes(Number(jsonSetting[index].contentType))) {
+              if (jsonSetting[index] && [12, 18, 19, 24, 25].includes(Number(jsonSetting[index].contentType))) {
+                if (hasLiveSetting) {
+                  return this.$message.error("发送直播间只能一次只能发送一条");
+                }
                 hasLiveSetting = true;
                 hasLiveSetting = true;
                 count++;
                 count++;
               }
               }
@@ -875,11 +905,11 @@ export default {
             if (this.setting.length <= 0) {
             if (this.setting.length <= 0) {
               return this.$message.error("请添加规则")
               return this.$message.error("请添加规则")
             }
             }
-            if (!hasLiveSetting && !this.msgForm.courseId){
+            if (!hasLiveSetting && !this.msgForm.courseId && this.msgForm.liveId === null) {
               return this.$message.error("课程不能为空")
               return this.$message.error("课程不能为空")
             }
             }
 
 
-            if (!hasLiveSetting && !this.msgForm.videoId){
+            if (!hasLiveSetting && !this.msgForm.videoId && this.msgForm.liveId === null) {
               return this.$message.error("课节不能为空")
               return this.$message.error("课节不能为空")
             }
             }
 
 
@@ -907,10 +937,10 @@ export default {
                 return this.$message.error("链接地址不能为空")
                 return this.$message.error("链接地址不能为空")
               }
               }
 
 
-              if ([4, 10, 17, 23, 24].includes(Number(this.setting[i].contentType)) && (this.setting[i].miniprogramTitle == null || this.setting[i].miniprogramTitle == "")) {
+              if ([4, 10, 17, 23, 24, 25].includes(Number(this.setting[i].contentType)) && (this.setting[i].miniprogramTitle == null || this.setting[i].miniprogramTitle == "")) {
                 return this.$message.error("小程序消息标题不能为空")
                 return this.$message.error("小程序消息标题不能为空")
               }
               }
-              if ([4, 10, 17, 23, 24].includes(Number(this.setting[i].contentType)) && (this.setting[i].miniprogramPicUrl == null || this.setting[i].miniprogramPicUrl == "")) {
+              if ([4, 10, 17, 23, 24, 25].includes(Number(this.setting[i].contentType)) && (this.setting[i].miniprogramPicUrl == null || this.setting[i].miniprogramPicUrl == "")) {
                 return this.$message.error("小程序封面地址不能为空")
                 return this.$message.error("小程序封面地址不能为空")
               }
               }
 
 
@@ -931,10 +961,19 @@ export default {
               if (this.setting[i].contentType == 14 && (this.setting[i].luckyBagId == null || this.setting[i].luckyBagId === "")) {
               if (this.setting[i].contentType == 14 && (this.setting[i].luckyBagId == null || this.setting[i].luckyBagId === "")) {
                 return this.$message.error("福袋不能为空")
                 return this.$message.error("福袋不能为空")
               }
               }
-              if ((this.setting[i].contentType == 12 || this.setting[i].contentType == 24) && (this.setting[i].liveId == null || this.setting[i].liveId == "")) {
+              if ((this.setting[i].contentType == 12 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25) && (this.setting[i].liveId == null || this.setting[i].liveId == "")) {
                 return this.$message.error("直播间不能为空");
                 return this.$message.error("直播间不能为空");
               }
               }
             }
             }
+
+            if (hasLiveSetting) {
+              for (let i = 0; i < this.setting.length; i++) {
+                if ([12, 18, 19, 24, 25].includes(Number(this.setting[i].contentType)) && this.setting[i].liveId) {
+                  this.msgForm.liveId = this.setting[i].liveId;
+                  break;
+                }
+              }
+            }
           }
           }
 
 
 
 

+ 9 - 5
src/views/qw/sopUserLogsInfo/sopUserLogsInfoDetails.vue

@@ -407,7 +407,7 @@
                         placeholder="输入要转为语音的内容" style="width: 90%;margin-top: 10px;"
                         placeholder="输入要转为语音的内容" style="width: 90%;margin-top: 10px;"
                         @input="handleInputVideoText(item.value,item)"/>
                         @input="handleInputVideoText(item.value,item)"/>
                     </div>
                     </div>
-                    <div v-if="item.contentType == 12 || item.contentType == 24 || item.contentType == 18 || item.contentType == 19">
+                    <div v-if="item.contentType == 12 || item.contentType == 24 || item.contentType == 25 || item.contentType == 18 || item.contentType == 19">
                       <!--                                           <div >-->
                       <!--                                           <div >-->
                       <el-card class="box-card">
                       <el-card class="box-card">
                         <el-form-item label="直播间" >
                         <el-form-item label="直播间" >
@@ -1509,7 +1509,7 @@ export default {
           let hasLiveSetting = false;
           let hasLiveSetting = false;
           let jsonSetting = JSON.parse(this.msgForm.setting);
           let jsonSetting = JSON.parse(this.msgForm.setting);
           for(let index=0;index < jsonSetting.length;index++){
           for(let index=0;index < jsonSetting.length;index++){
-           if(!!jsonSetting[index] && (jsonSetting[index].contentType == "12" || jsonSetting[index].contentType == "20") ) {
+           if(!!jsonSetting[index] && (jsonSetting[index].contentType == "12" || jsonSetting[index].contentType == "20" || jsonSetting[index].contentType == "24" || jsonSetting[index].contentType == "25") ) {
             if(!!hasLiveSetting){
             if(!!hasLiveSetting){
                return this.$message.error("发送直播间只能一次只能发送一条");
                return this.$message.error("发送直播间只能一次只能发送一条");
             }
             }
@@ -1558,10 +1558,10 @@ export default {
               return this.$message.error("链接地址不能为空")
               return this.$message.error("链接地址不能为空")
             }
             }
 
 
-            if ((this.setting[i].contentType == 4  || this.setting[i].contentType == 17|| this.setting[i].contentType == 23 || this.setting[i].contentType == 24)&& (this.setting[i].miniprogramTitle == null || this.setting[i].miniprogramTitle == "")) {
+            if ((this.setting[i].contentType == 4  || this.setting[i].contentType == 17|| this.setting[i].contentType == 23 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25)&& (this.setting[i].miniprogramTitle == null || this.setting[i].miniprogramTitle == "")) {
               return this.$message.error("小程序/浏览器看课 消息标题不能为空")
               return this.$message.error("小程序/浏览器看课 消息标题不能为空")
             }
             }
-            if ((this.setting[i].contentType == 4  || this.setting[i].contentType == 17|| this.setting[i].contentType == 23 || this.setting[i].contentType == 24) && (this.setting[i].miniprogramPicUrl == null || this.setting[i].miniprogramPicUrl == "")) {
+            if ((this.setting[i].contentType == 4  || this.setting[i].contentType == 17|| this.setting[i].contentType == 23 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25) && (this.setting[i].miniprogramPicUrl == null || this.setting[i].miniprogramPicUrl == "")) {
               return this.$message.error("小程序/浏览器看课 封面地址不能为空")
               return this.$message.error("小程序/浏览器看课 封面地址不能为空")
             }
             }
             if (this.setting[i].contentType == 5 && (this.setting[i].fileUrl == null || this.setting[i].fileUrl == "")) {
             if (this.setting[i].contentType == 5 && (this.setting[i].fileUrl == null || this.setting[i].fileUrl == "")) {
@@ -1572,7 +1572,11 @@ export default {
             }
             }
             if (this.setting[i].contentType == 7 && (this.setting[i].value == null || this.setting[i].value == "")) {
             if (this.setting[i].contentType == 7 && (this.setting[i].value == null || this.setting[i].value == "")) {
               return this.$message.error("语音不能为空")
               return this.$message.error("语音不能为空")
-            }// 短信模板验证
+            }
+            if ((this.setting[i].contentType == 12 || this.setting[i].contentType == 24 || this.setting[i].contentType == 25) && (this.setting[i].liveId == null || this.setting[i].liveId == "")) {
+              return this.$message.error("直播间不能为空")
+            }
+            // 短信模板验证
             if (this.setting[i].contentType == 21 && (this.setting[i].smsTemplateId == null || this.setting[i].smsTemplateId === "")) {
             if (this.setting[i].contentType == 21 && (this.setting[i].smsTemplateId == null || this.setting[i].smsTemplateId === "")) {
               return this.$message.error("短信模板不能为空")
               return this.$message.error("短信模板不能为空")
             }else {
             }else {