Kaynağa Gözat

sop模板的优化

三七 12 saat önce
ebeveyn
işleme
a953d89e4c

+ 9 - 0
src/api/course/courseWatchLog.js

@@ -138,6 +138,15 @@ export function getCustomerListLikeName(params) {
     params: params
   })
 }
+
+// 根据名称模糊查询客服成员列表(app_customer_role_member)
+export function getCustomerMemberListLikeName(params) {
+  return request({
+    url: '/course/appCourseWatchLog/getCustomerMemberListLikeName',
+    method: 'get',
+    params: params
+  })
+}
 // 查询短链课程看课记录列表app看课
 export function listAppCourseWatchLog(query) {
   return request({

+ 4 - 2
src/views/course/courseWatchLog/indexApp.vue

@@ -29,6 +29,8 @@
             :key="item.value"
             :label="item.label"
             :value="item.value">
+            <span>{{ item.isDelete === 1 ? String(item.label).replace(/-已删除$/, '') : item.label }}</span>
+            <span v-if="item.isDelete === 1" style="float: right; color: #F56C6C; font-size: 12px;">已删除</span>
           </el-option>
         </el-select>
       </el-form-item>
@@ -285,7 +287,7 @@
 </template>
 
 <script>
-import { listAppCourseWatchLog, exportAppCourseWatchLog, getCustomerListLikeName, batchUpdateFriendRemark } from "@/api/course/courseWatchLog";
+import { listAppCourseWatchLog, exportAppCourseWatchLog, getCustomerMemberListLikeName, batchUpdateFriendRemark } from "@/api/course/courseWatchLog";
 import { courseList,videoList } from '../../../api/course/courseRedPacketLog'
 import {getTask} from "@/api/common";
 import { listTagGroupForUserBindTag } from "@/api/app/tag/tagGroup";
@@ -799,7 +801,7 @@ export default {
      * 获取员工列表
      */
     getCompanyUserListLikeName() {
-      getCustomerListLikeName(this.companyUserOptionsParams).then(response => {
+      getCustomerMemberListLikeName(this.companyUserOptionsParams).then(response => {
         this.companyUserOptions = [...this.companyUserOptions, ...response.data.list]
         this.companyUserOptionsParams.hasNextPage = response.data.hasNextPage
         this.companyUserOptionsLoading = false;

+ 56 - 5
src/views/live/liveWatchUser/index.vue

@@ -54,14 +54,27 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="销售ID" prop="companyUserId">
-        <el-input
+      <el-form-item label="销售名称" prop="companyUserId">
+        <el-select
           v-model="queryParams.companyUserId"
-          placeholder="请输入销售用户ID"
           clearable
+          filterable
+          remote
+          placeholder="请输入销售名称"
+          :remote-method="loadCompanyUserOptions"
+          v-select-load-more="loadMoreCompanyUserOptions"
+          :loading="companyUserOptionsLoading"
+          @visible-change="handleCompanyUserDropdownVisible"
           size="small"
-          @keyup.enter.native="handleQuery"
-        />
+          style="width: 220px"
+        >
+          <el-option
+            v-for="item in companyUserOptions"
+            :key="item.dictValue"
+            :label="item.dictLabel"
+            :value="item.dictValue">
+          </el-option>
+        </el-select>
       </el-form-item>
       <el-form-item label="观看时间" prop="dateRange">
         <el-date-picker
@@ -364,6 +377,7 @@
 
 <script>
 import { liveWatchUserList } from '@/api/live/liveWatchUser'
+import { getCompanyUserListLikeName } from '@/api/company/companyUser'
 import { listLiveRedPacketLog } from '@/api/live/liveRedPacketLog'
 import { getCourseCouponUserListVO } from '@/api/course/courseCouponUser'
 import { listTagGroupForUserBindTag } from '@/api/app/tag/tagGroup'
@@ -384,6 +398,14 @@ export default {
       liveOptions: [],
       liveRewardTypeList: [],
       dateRange: [],
+      companyUserOptionsLoading: false,
+      companyUserOptions: [],
+      companyUserOptionsParams: {
+        name: undefined,
+        hasNextPage: false,
+        pageNum: 1,
+        pageSize: 10
+      },
       queryParams: {
         pageNum: 1,
         pageSize: 10,
@@ -463,6 +485,34 @@ export default {
         this.liveGroupTypeList = []
       })
     },
+    loadCompanyUserOptions(query) {
+      this.companyUserOptions = []
+      this.companyUserOptionsParams.pageNum = 1
+      this.companyUserOptionsParams.name = query
+      this.companyUserOptionsLoading = true
+      this.getCompanyUserListLikeName()
+    },
+    getCompanyUserListLikeName() {
+      getCompanyUserListLikeName(this.companyUserOptionsParams).then(response => {
+        const page = (response && response.data) || {}
+        this.companyUserOptions = [...this.companyUserOptions, ...(page.list || [])]
+        this.companyUserOptionsParams.hasNextPage = !!page.hasNextPage
+      }).finally(() => {
+        this.companyUserOptionsLoading = false
+      })
+    },
+    loadMoreCompanyUserOptions() {
+      if (!this.companyUserOptionsParams.hasNextPage) {
+        return
+      }
+      this.companyUserOptionsParams.pageNum += 1
+      this.getCompanyUserListLikeName()
+    },
+    handleCompanyUserDropdownVisible(visible) {
+      if (visible && this.companyUserOptions.length === 0) {
+        this.loadCompanyUserOptions('')
+      }
+    },
     loadLiveOptions(liveGroupType) {
       const params = {}
       if (liveGroupType != null && liveGroupType !== '') {
@@ -767,6 +817,7 @@ export default {
       this.queryParams.pageSize = 10
       this.queryParams.liveGroupType = null
       this.queryParams.liveId = null
+      this.companyUserOptions = []
       this.loadLiveOptions()
       this.handleQuery()
     },

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

@@ -201,7 +201,7 @@
                 <span v-if="item.contentType == 23">APP看课跳转短链</span>
                 <span v-if="item.contentType == 20">APP直播</span>
                 <span v-if="item.contentType == 24">APP直播跳转短链</span>
-                <span v-if="item.contentType == 28">飞书自动看课</span>
+                <span v-if="item.contentType == 28 || item.contentType == 29">飞书自动看课</span>
               </div>
               <div v-if="item.sendStatus">
                 <span>发送状态:</span>
@@ -218,7 +218,7 @@
                 fit="contain"
                 @click.prevent="openImageViewer(item.imgUrl)" />
             </div>
-            <div v-if="item.contentType == 3 || item.contentType == 9 || item.contentType == 28" class="message-style">
+            <div v-if="item.contentType == 3 || item.contentType == 9 || item.contentType == 28 || item.contentType == 29" class="message-style">
               <div
                 style="background-color: white; padding: 10px; width: 100%"
                 @click="openLink(item.linkUrl)">

+ 67 - 1
src/views/qw/sopTemp/deptIndex.vue

@@ -303,7 +303,7 @@
         >
           <div class="form-section__title">
             发送能力
-            <span class="form-section__hint">默认小程序看课;开启后会叠加对应能力</span>
+            <span class="form-section__hint">按需选择看课通道,可多选叠加</span>
           </div>
           <div class="capability-grid">
             <div class="capability-item">
@@ -313,6 +313,13 @@
               </div>
               <el-switch v-model="form.openOfficial" active-value="1" inactive-value="0" />
             </div>
+            <div class="capability-item">
+              <div class="capability-item__meta">
+                <span class="capability-item__name">小程序看课</span>
+                <span class="capability-item__desc">生成小程序卡片内容</span>
+              </div>
+              <el-switch v-model="form.openMiniprogram" active-value="1" inactive-value="0" />
+            </div>
             <div class="capability-item" v-if="showAppCourseToggle">
               <div class="capability-item__meta">
                 <span class="capability-item__name">APP 看课</span>
@@ -342,6 +349,39 @@
               <el-switch v-model="form.openIsAtAll" active-value="1" inactive-value="0" />
             </div>
           </div>
+          <el-row :gutter="28" v-if="form.openFeishu == '1'" class="sip-task-row">
+            <el-col :span="12">
+              <el-form-item label="飞书类型" required>
+                <el-select
+                  v-model="form.feishuContentType"
+                  placeholder="请选择飞书类型"
+                  clearable
+                  class="w-full"
+                >
+                  <el-option label="飞书1" value="28" />
+                  <el-option label="飞书2" value="29" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="消息类型" required>
+                <el-select
+                  v-model="form.courseType"
+                  placeholder="请选择消息类型"
+                  clearable
+                  class="w-full"
+                >
+                  <el-option
+                    v-for="dict in sysFsSopWatchStatus"
+                    :key="dict.dictValue"
+                    :label="dict.dictLabel"
+                    :value="Number(dict.dictValue)"
+                  />
+                </el-select>
+                <div class="form-section__hint" style="margin-top: 4px;">首条规则固定为普通消息,第2条及以后使用该类型</div>
+              </el-form-item>
+            </el-col>
+          </el-row>
           <el-row :gutter="28" v-if="projectFrom === 'sxjz' && form.openSipCall == '1'" class="sip-task-row">
             <el-col :span="12">
               <el-form-item label="外呼任务" required>
@@ -579,6 +619,7 @@ export default {
       openOfficialOptions: [],
       // 控制“是否开启app看课”是否显示
       showAppCourseToggle: false,
+      sysFsSopWatchStatus: [],
       shareOptions: {
         title: '分享模板',
         open: false,
@@ -684,6 +725,10 @@ export default {
       this.sysQwSopType = response.data;
     });
 
+    this.getDicts("sys_fs_sop_watch_status").then(response => {
+      this.sysFsSopWatchStatus = response.data || [];
+    });
+
     courseList().then(response => {
       this.courseList = response.list;
     });
@@ -715,6 +760,12 @@ export default {
       } else {
         this.loadSipTemplates();
       }
+    },
+    'form.openFeishu'(newVal) {
+      if (newVal !== '1') {
+        this.$set(this.form, 'courseType', null);
+        this.$set(this.form, 'feishuContentType', null);
+      }
     }
   },
   methods: {
@@ -851,9 +902,12 @@ export default {
         sendType: this.sendType,
         sort: 0,
         openOfficial: "1",
+        openMiniprogram: "0",
         openAppCourse: "0", //默认 app 看课为关
         openSipCall: "0",
         openFeishu: "0",
+        feishuContentType: null,
+        courseType: null,
         aiCustomerRoleId: null,
         openIsAtAll: "0",
         time: "",
@@ -1019,6 +1073,18 @@ export default {
             }
           }
           if (this.form.sendType === 11 && !this.form.id) {
+            if (this.form.openMiniprogram !== '1' && this.form.openAppCourse !== '1' && this.form.openFeishu !== '1') {
+              this.$message.error("请至少开启【小程序看课】【APP看课】【飞书看课】中的一项!");
+              return;
+            }
+            if (this.form.openFeishu === '1' && !this.form.feishuContentType) {
+              this.$message.error("请选择飞书类型");
+              return;
+            }
+            if (this.form.openFeishu === '1' && (this.form.courseType === null || this.form.courseType === undefined || this.form.courseType === '')) {
+              this.$message.error("请选择消息类型");
+              return;
+            }
             if (this.projectFrom === 'sxjz' && this.form.openSipCall === '1' && !this.form.aiCustomerRoleId) {
               this.$message.error("请选择SIP外呼任务!");
               return;

+ 67 - 1
src/views/qw/sopTemp/index.vue

@@ -312,7 +312,7 @@
         >
           <div class="form-section__title">
             发送能力
-            <span class="form-section__hint">默认小程序看课;开启后会叠加对应能力</span>
+            <span class="form-section__hint">按需选择看课通道,可多选叠加</span>
           </div>
           <div class="capability-grid">
             <div class="capability-item">
@@ -322,6 +322,13 @@
               </div>
               <el-switch v-model="form.openOfficial" active-value="1" inactive-value="0" />
             </div>
+            <div class="capability-item">
+              <div class="capability-item__meta">
+                <span class="capability-item__name">小程序看课</span>
+                <span class="capability-item__desc">生成小程序卡片内容</span>
+              </div>
+              <el-switch v-model="form.openMiniprogram" active-value="1" inactive-value="0" />
+            </div>
             <div class="capability-item" v-if="showAppCourseToggle">
               <div class="capability-item__meta">
                 <span class="capability-item__name">APP 看课</span>
@@ -351,6 +358,39 @@
               <el-switch v-model="form.openIsAtAll" active-value="1" inactive-value="0" />
             </div>
           </div>
+          <el-row :gutter="28" v-if="form.openFeishu == '1'" class="sip-task-row">
+            <el-col :span="12">
+              <el-form-item label="飞书类型" required>
+                <el-select
+                  v-model="form.feishuContentType"
+                  placeholder="请选择飞书类型"
+                  clearable
+                  class="w-full"
+                >
+                  <el-option label="飞书1" value="28" />
+                  <el-option label="飞书2" value="29" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="消息类型" required>
+                <el-select
+                  v-model="form.courseType"
+                  placeholder="请选择消息类型"
+                  clearable
+                  class="w-full"
+                >
+                  <el-option
+                    v-for="dict in sysFsSopWatchStatus"
+                    :key="dict.dictValue"
+                    :label="dict.dictLabel"
+                    :value="Number(dict.dictValue)"
+                  />
+                </el-select>
+                <div class="form-section__hint" style="margin-top: 4px;">首条规则固定为普通消息,第2条及以后使用该类型</div>
+              </el-form-item>
+            </el-col>
+          </el-row>
           <el-row :gutter="28" v-if="projectFrom === 'sxjz' && form.openSipCall == '1'" class="sip-task-row">
             <el-col :span="12">
               <el-form-item label="外呼任务" required>
@@ -613,6 +653,7 @@ export default {
       // 控制“是否开启app看课”是否显示
       showAppCourseToggle: false,
       openIsAtAllOptions: [],
+      sysFsSopWatchStatus: [],
       shareOptions: {
         title: '分享模板',
         open: false,
@@ -720,6 +761,10 @@ export default {
       this.sysQwSopType = response.data;
     });
 
+    this.getDicts("sys_fs_sop_watch_status").then(response => {
+      this.sysFsSopWatchStatus = response.data || [];
+    });
+
     courseList().then(response => {
       this.courseList = response.list;
     });
@@ -750,6 +795,12 @@ export default {
       } else {
         this.loadSipTemplates();
       }
+    },
+    'form.openFeishu'(newVal) {
+      if (newVal !== '1') {
+        this.$set(this.form, 'courseType', null);
+        this.$set(this.form, 'feishuContentType', null);
+      }
     }
   },
   methods: {
@@ -884,9 +935,12 @@ export default {
         sendType: this.sendType,
         sort: 0,
         openOfficial: "1",
+        openMiniprogram: "0",
         openAppCourse: "0", //默认 app 看课为关
         openSipCall: "0",
         openFeishu: "0",
+        feishuContentType: null,
+        courseType: null,
         aiCustomerRoleId: null,
         openIsAtAll: "0",
         time: "",
@@ -1068,6 +1122,18 @@ export default {
             }
           }
           if (this.form.sendType === 11 && !this.form.id) {
+            if (this.form.openMiniprogram !== '1' && this.form.openAppCourse !== '1' && this.form.openFeishu !== '1') {
+              this.$message.error("请至少开启【小程序看课】【APP看课】【飞书看课】中的一项!");
+              return;
+            }
+            if (this.form.openFeishu === '1' && !this.form.feishuContentType) {
+              this.$message.error("请选择飞书类型");
+              return;
+            }
+            if (this.form.openFeishu === '1' && (this.form.courseType === null || this.form.courseType === undefined || this.form.courseType === '')) {
+              this.$message.error("请选择消息类型");
+              return;
+            }
             if (this.projectFrom === 'sxjz' && this.form.openSipCall === '1' && !this.form.aiCustomerRoleId) {
               this.$message.error("请选择SIP外呼任务!");
               return;

+ 67 - 1
src/views/qw/sopTemp/myIndex.vue

@@ -286,7 +286,7 @@
         >
           <div class="form-section__title">
             发送能力
-            <span class="form-section__hint">默认小程序看课;开启后会叠加对应能力</span>
+            <span class="form-section__hint">按需选择看课通道,可多选叠加</span>
           </div>
           <div class="capability-grid">
             <div class="capability-item">
@@ -296,6 +296,13 @@
               </div>
               <el-switch v-model="form.openOfficial" active-value="1" inactive-value="0" />
             </div>
+            <div class="capability-item">
+              <div class="capability-item__meta">
+                <span class="capability-item__name">小程序看课</span>
+                <span class="capability-item__desc">生成小程序卡片内容</span>
+              </div>
+              <el-switch v-model="form.openMiniprogram" active-value="1" inactive-value="0" />
+            </div>
             <div class="capability-item" v-if="showAppCourseToggle">
               <div class="capability-item__meta">
                 <span class="capability-item__name">APP 看课</span>
@@ -325,6 +332,39 @@
               <el-switch v-model="form.openIsAtAll" active-value="1" inactive-value="0" />
             </div>
           </div>
+          <el-row :gutter="28" v-if="form.openFeishu == '1'" class="sip-task-row">
+            <el-col :span="12">
+              <el-form-item label="飞书类型" required>
+                <el-select
+                  v-model="form.feishuContentType"
+                  placeholder="请选择飞书类型"
+                  clearable
+                  class="w-full"
+                >
+                  <el-option label="飞书1" value="28" />
+                  <el-option label="飞书2" value="29" />
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="消息类型" required>
+                <el-select
+                  v-model="form.courseType"
+                  placeholder="请选择消息类型"
+                  clearable
+                  class="w-full"
+                >
+                  <el-option
+                    v-for="dict in sysFsSopWatchStatus"
+                    :key="dict.dictValue"
+                    :label="dict.dictLabel"
+                    :value="Number(dict.dictValue)"
+                  />
+                </el-select>
+                <div class="form-section__hint" style="margin-top: 4px;">首条规则固定为普通消息,第2条及以后使用该类型</div>
+              </el-form-item>
+            </el-col>
+          </el-row>
           <el-row :gutter="28" v-if="projectFrom === 'sxjz' && form.openSipCall == '1'" class="sip-task-row">
             <el-col :span="12">
               <el-form-item label="外呼任务" required>
@@ -562,6 +602,7 @@ export default {
       openOfficialOptions: [],
       // 控制“是否开启app看课”是否显示
       showAppCourseToggle: false,
+      sysFsSopWatchStatus: [],
       shareOptions: {
         title: '分享模板',
         open: false,
@@ -653,6 +694,10 @@ export default {
       this.sysQwSopType = response.data;
     });
 
+    this.getDicts("sys_fs_sop_watch_status").then(response => {
+      this.sysFsSopWatchStatus = response.data || [];
+    });
+
     courseList().then(response => {
       this.courseList = response.list;
     });
@@ -685,6 +730,12 @@ export default {
       } else {
         this.loadSipTemplates();
       }
+    },
+    'form.openFeishu'(newVal) {
+      if (newVal !== '1') {
+        this.$set(this.form, 'courseType', null);
+        this.$set(this.form, 'feishuContentType', null);
+      }
     }
   },
   methods: {
@@ -748,9 +799,12 @@ export default {
         sendType: this.sendType,
         sort: 0,
         openOfficial: "1",
+        openMiniprogram: "0",
         openAppCourse: "0", //默认 app 看课为关
         openSipCall: "0",
         openFeishu: "0",
+        feishuContentType: null,
+        courseType: null,
         aiCustomerRoleId: null,
         openIsAtAll: "0",
         time: "",
@@ -919,6 +973,18 @@ export default {
             }
           }
           if (this.form.sendType === 11 && !this.form.id) {
+            if (this.form.openMiniprogram !== '1' && this.form.openAppCourse !== '1' && this.form.openFeishu !== '1') {
+              this.$message.error("请至少开启【小程序看课】【APP看课】【飞书看课】中的一项!");
+              return;
+            }
+            if (this.form.openFeishu === '1' && !this.form.feishuContentType) {
+              this.$message.error("请选择飞书类型");
+              return;
+            }
+            if (this.form.openFeishu === '1' && (this.form.courseType === null || this.form.courseType === undefined || this.form.courseType === '')) {
+              this.$message.error("请选择消息类型");
+              return;
+            }
             if (this.projectFrom === 'sxjz' && this.form.openSipCall === '1' && !this.form.aiCustomerRoleId) {
               this.$message.error("请选择SIP外呼任务!");
               return;

+ 12 - 12
src/views/qw/sopTemp/updateSopTempSXJZ.vue

@@ -418,7 +418,7 @@
                                           </div>
 
                                           <div
-                                            v-if="(setList.contentType == 3 || item.contentType ==9 || setList.contentType == 28) || (setList.contentType == 9 && content.type==2 )">
+                                            v-if="(setList.contentType == 3 || item.contentType ==9 || setList.contentType == 28 || setList.contentType == 29) || (setList.contentType == 9 && content.type==2 )">
                                             <el-card class="box-card link-card">
                                               <div slot="header" class="card-header-mini">
                                                 <i class="el-icon-link"></i>
@@ -1832,7 +1832,7 @@ export default {
       ruleList: [],
       ids: [],
       // startTimeRange: [],
-      courseTypeList: ['1','2', '4','5','6', '7','8','9','10','14','15','16','11','28'],
+      courseTypeList: ['1','2', '4','5','6', '7','8','9','10','14','15','16','11','28','29'],
       sysFsSopWatchStatus: [],
       //消息内容类型 企微版
       sysQwSopContentType: [],
@@ -2481,15 +2481,15 @@ export default {
                 this.$message.error("图片不能为空")
                 return false;
               }
-              if ((data.content[j].setting[k].contentType == 3 || data.content[j].setting[k].contentType == 9 || data.content[j].setting[k].contentType == 10 || data.content[j].setting[k].contentType == 17|| data.content[j].setting[k].contentType == 23 || data.content[j].setting[k].contentType == 28) && (data.content[j].setting[k].linkTitle == null || data.content[j].setting[k].linkTitle == "")) {
+              if ((data.content[j].setting[k].contentType == 3 || data.content[j].setting[k].contentType == 9 || data.content[j].setting[k].contentType == 10 || data.content[j].setting[k].contentType == 17|| data.content[j].setting[k].contentType == 23 || data.content[j].setting[k].contentType == 28 || data.content[j].setting[k].contentType == 29) && (data.content[j].setting[k].linkTitle == null || data.content[j].setting[k].linkTitle == "")) {
                 this.$message.error("链接标题不能为空")
                 return false;
               }
-              if ((data.content[j].setting[k].contentType == 3 || data.content[j].setting[k].contentType == 9 || data.content[j].setting[k].contentType == 10|| data.content[j].setting[k].contentType == 17|| data.content[j].setting[k].contentType == 23 || data.content[j].setting[k].contentType == 28) && (data.content[j].setting[k].linkDescribe == null || data.content[j].setting[k].linkDescribe == "")) {
+              if ((data.content[j].setting[k].contentType == 3 || data.content[j].setting[k].contentType == 9 || data.content[j].setting[k].contentType == 10|| data.content[j].setting[k].contentType == 17|| data.content[j].setting[k].contentType == 23 || data.content[j].setting[k].contentType == 28 || data.content[j].setting[k].contentType == 29) && (data.content[j].setting[k].linkDescribe == null || data.content[j].setting[k].linkDescribe == "")) {
                 this.$message.error("链接描述不能为空")
                 return false;
               }
-              if ((data.content[j].setting[k].contentType == 3 || data.content[j].setting[k].contentType == 9 || data.content[j].setting[k].contentType == 10|| data.content[j].setting[k].contentType == 17|| data.content[j].setting[k].contentType == 23 || data.content[j].setting[k].contentType == 28) && (data.content[j].setting[k].linkImageUrl == null || data.content[j].setting[k].linkImageUrl == "")) {
+              if ((data.content[j].setting[k].contentType == 3 || data.content[j].setting[k].contentType == 9 || data.content[j].setting[k].contentType == 10|| data.content[j].setting[k].contentType == 17|| data.content[j].setting[k].contentType == 23 || data.content[j].setting[k].contentType == 28 || data.content[j].setting[k].contentType == 29) && (data.content[j].setting[k].linkImageUrl == null || data.content[j].setting[k].linkImageUrl == "")) {
                 this.$message.error("链接图片不能为空")
                 return false;
               }
@@ -2573,15 +2573,15 @@ export default {
                 this.$message.error("图片不能为空")
                 return false;
               }
-              if ((set.contentType == 3 || set.contentType == 9 || set.contentType == 28) && (set.linkTitle == null || set.linkTitle == "")) {
+              if ((set.contentType == 3 || set.contentType == 9 || set.contentType == 28 || set.contentType == 29) && (set.linkTitle == null || set.linkTitle == "")) {
                 this.$message.error("链接标题不能为空")
                 return false;
               }
-              if ((set.contentType == 3 || set.contentType == 9 || set.contentType == 28) && (set.linkDescribe == null || set.linkDescribe == "")) {
+              if ((set.contentType == 3 || set.contentType == 9 || set.contentType == 28 || set.contentType == 29) && (set.linkDescribe == null || set.linkDescribe == "")) {
                 this.$message.error("链接描述不能为空")
                 return false;
               }
-              if ((set.contentType == 3 || set.contentType == 9 || set.contentType == 28) && (set.linkImageUrl == null || set.linkImageUrl == "")) {
+              if ((set.contentType == 3 || set.contentType == 9 || set.contentType == 28 || set.contentType == 29) && (set.linkImageUrl == null || set.linkImageUrl == "")) {
                 this.$message.error("链接图片不能为空")
                 return false;
               }
@@ -2821,7 +2821,7 @@ export default {
         if (selectedCourse && content.type == 2 && content.courseId != null) {
           //响应式直接给链接的标题/封面上值
 
-          if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28) {
+          if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28 || content.setting[i].contentType == 29) {
             this.$set(content.setting[i], 'linkTitle', selectedCourse.dictLabel);
             this.$set(content.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
           }
@@ -2984,7 +2984,7 @@ export default {
         for (let i = 0; i < content.setting.length; i++) {
           //响应式直接给链接的标题/封面上值
           if (selectedCourse && content.type == 2 && content.courseId != null) {
-            if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28) {
+            if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28 || content.setting[i].contentType == 29) {
               this.$set(content.setting[i], 'linkTitle', selectedCourse.dictLabel);
               this.$set(content.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
             }
@@ -3005,7 +3005,7 @@ export default {
           //响应式直接给链接的描述上值
           if (selectedVideo && content.type == 2 && content.videoId != null) {
 
-            if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28) {
+            if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28 || content.setting[i].contentType == 29) {
               this.$set(content.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
@@ -3049,7 +3049,7 @@ export default {
         //如果是链接的才上
         if (selectedVideo && content.type == 2 && content.videoId != null) {
 
-          if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28) {
+          if (content.setting[i].contentType == 3 || content.setting[i].contentType == 9 || content.setting[i].contentType == 28 || content.setting[i].contentType == 29) {
             this.$set(content.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
             if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {

+ 9 - 9
src/views/qw/sopUserLogsInfo/sendMsgOpenTool.vue

@@ -187,7 +187,7 @@
 
                     <ImageUpload v-if="item.contentType == 2 " v-model="item.imgUrl" type="image" :num="1"  :width="150" :height="150" />
 
-                    <div v-if="item.contentType == 3 || item.contentType ==9|| item.contentType ==28 ">
+                    <div v-if="item.contentType == 3 || item.contentType ==9|| item.contentType ==28 || item.contentType ==29 ">
                       <el-card class="box-card">
                         <el-form-item label="链接标题:"  label-width="100px">
                           <el-input v-model="item.linkTitle" placeholder="请输入链接标题" style="width: 90%;"/>
@@ -832,7 +832,7 @@ export default {
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的标题/封面上值
           if (selectedCourse && this.msgForm.courseId != null) {
-            if ( this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 ){
+            if ( this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ){
               this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
               this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
             }
@@ -859,7 +859,7 @@ export default {
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的描述上值
           if (selectedVideo && this.msgForm.videoId != null) {
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 ){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ){
               this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
@@ -1090,7 +1090,7 @@ export default {
           //响应式直接给链接的标题/封面上值
           if (selectedCourse  && this.msgForm.courseId != null) {
 
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29){
               this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
               this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
             }
@@ -1109,7 +1109,7 @@ export default {
           //响应式直接给链接的描述上值
           if (selectedVideo  && this.msgForm.videoId != null) {
 
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29){
               this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
@@ -1254,16 +1254,16 @@ export default {
                     if (this.setting[i].contentType == 2 && (this.setting[i].imgUrl == null || this.setting[i].imgUrl == "")) {
                         return this.$message.error("图片不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && (this.setting[i].linkTitle == null || this.setting[i].linkTitle == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && (this.setting[i].linkTitle == null || this.setting[i].linkTitle == "")) {
                         return this.$message.error("链接标题不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && (this.setting[i].linkDescribe == null || this.setting[i].linkDescribe == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && (this.setting[i].linkDescribe == null || this.setting[i].linkDescribe == "")) {
                         return this.$message.error("链接描述不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && (this.setting[i].linkImageUrl == null || this.setting[i].linkImageUrl == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && (this.setting[i].linkImageUrl == null || this.setting[i].linkImageUrl == "")) {
                         return this.$message.error("链接图片不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && this.setting[i].type == 1 && (this.setting[i].linkUrl == null || this.setting[i].linkUrl == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && this.setting[i].type == 1 && (this.setting[i].linkUrl == null || this.setting[i].linkUrl == "")) {
                         return this.$message.error("链接地址不能为空")
                     }
 

+ 9 - 9
src/views/qw/sopUserLogsInfo/sendMsgSopOpenTool.vue

@@ -113,7 +113,7 @@
 
                     <ImageUpload v-if="item.contentType == 2 " v-model="item.imgUrl" type="image" :num="1"  :width="150" :height="150" />
 
-                    <div v-if="item.contentType == 3 || item.contentType ==9|| item.contentType ==28 ">
+                    <div v-if="item.contentType == 3 || item.contentType ==9|| item.contentType ==28 || item.contentType ==29 ">
                       <el-card class="box-card">
                         <el-form-item label="链接标题:"  label-width="100px">
                           <el-input v-model="item.linkTitle" placeholder="请输入链接标题" style="width: 90%;"/>
@@ -702,7 +702,7 @@ export default {
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的标题/封面上值
           if (selectedCourse && this.msgForm.courseId != null) {
-            if ( this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 ){
+            if ( this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ){
               this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
               this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
             }
@@ -730,7 +730,7 @@ export default {
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的描述上值
           if (selectedVideo && this.msgForm.videoId != null) {
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 ){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ){
               this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
@@ -962,7 +962,7 @@ export default {
           //响应式直接给链接的标题/封面上值
           if (selectedCourse  && this.msgForm.courseId != null) {
 
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29){
               this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
               this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
 
@@ -987,7 +987,7 @@ export default {
           //响应式直接给链接的描述上值
           if (selectedVideo  && this.msgForm.videoId != null) {
 
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29){
               this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
@@ -1088,16 +1088,16 @@ export default {
                     if (this.setting[i].contentType == 2 && (this.setting[i].imgUrl == null || this.setting[i].imgUrl == "")) {
                         return this.$message.error("图片不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && (this.setting[i].linkTitle == null || this.setting[i].linkTitle == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && (this.setting[i].linkTitle == null || this.setting[i].linkTitle == "")) {
                         return this.$message.error("链接标题不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && (this.setting[i].linkDescribe == null || this.setting[i].linkDescribe == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && (this.setting[i].linkDescribe == null || this.setting[i].linkDescribe == "")) {
                         return this.$message.error("链接描述不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && (this.setting[i].linkImageUrl == null || this.setting[i].linkImageUrl == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && (this.setting[i].linkImageUrl == null || this.setting[i].linkImageUrl == "")) {
                         return this.$message.error("链接图片不能为空")
                     }
-                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28) && this.setting[i].type == 1 && (this.setting[i].linkUrl == null || this.setting[i].linkUrl == "")) {
+                    if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29) && this.setting[i].type == 1 && (this.setting[i].linkUrl == null || this.setting[i].linkUrl == "")) {
                         return this.$message.error("链接地址不能为空")
                     }
 

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

@@ -342,7 +342,7 @@
 
                     <ImageUpload v-if="item.contentType == 2 " v-model="item.imgUrl" type="image" :num="1"  :width="150" :height="150" />
 
-                    <div v-if="item.contentType == 3 || item.contentType ==9 || item.contentType ==28 ">
+                    <div v-if="item.contentType == 3 || item.contentType ==9 || item.contentType ==28 || item.contentType ==29 ">
                       <el-card class="box-card">
                         <el-form-item label="链接标题:"  label-width="100px">
                           <el-input v-model="item.linkTitle" placeholder="请输入链接标题" style="width: 90%;"/>
@@ -1138,7 +1138,7 @@ export default {
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的标题/封面上值
           if (selectedCourse && this.msgForm.courseId != null) {
-            if ( this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 ){
+            if ( this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ){
               this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
               this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
             }
@@ -1165,7 +1165,7 @@ export default {
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的描述上值
           if (selectedVideo && this.msgForm.videoId != null) {
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 ){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ){
               this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
               if (this.projectFrom == 'sxjz' && selectedVideo.dictImgUrl) {
@@ -1389,7 +1389,7 @@ export default {
           //响应式直接给链接的标题/封面上值
           if (selectedCourse  && this.msgForm.courseId != null) {
 
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29){
               this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
               this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
             }
@@ -1410,7 +1410,7 @@ export default {
           //响应式直接给链接的描述上值
           if (selectedVideo  && this.msgForm.videoId != null) {
 
-            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28){
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9|| this.setting[i].contentType == 28 || this.setting[i].contentType == 29){
               this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
 
               if (this.msgForm.videoId != null) {
@@ -1644,16 +1644,16 @@ export default {
             if (this.setting[i].contentType == 2 && (this.setting[i].imgUrl == null || this.setting[i].imgUrl == "")) {
               return this.$message.error("图片不能为空")
             }
-            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 ) && (this.setting[i].linkTitle == null || this.setting[i].linkTitle == "")) {
+            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ) && (this.setting[i].linkTitle == null || this.setting[i].linkTitle == "")) {
               return this.$message.error("链接标题不能为空")
             }
-            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 ) && (this.setting[i].linkDescribe == null || this.setting[i].linkDescribe == "")) {
+            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ) && (this.setting[i].linkDescribe == null || this.setting[i].linkDescribe == "")) {
               return this.$message.error("链接描述不能为空")
             }
-            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 ) && (this.setting[i].linkImageUrl == null || this.setting[i].linkImageUrl == "")) {
+            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 || this.setting[i].contentType == 29 ) && (this.setting[i].linkImageUrl == null || this.setting[i].linkImageUrl == "")) {
               return this.$message.error("链接图片不能为空")
             }
-            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28)&& this.setting[i].type == 1 && (this.setting[i].linkUrl == null || this.setting[i].linkUrl == "")) {
+            if ((this.setting[i].contentType == 3 || this.setting[i].contentType == 9 || this.setting[i].contentType == 28 || this.setting[i].contentType == 29)&& this.setting[i].type == 1 && (this.setting[i].linkUrl == null || this.setting[i].linkUrl == "")) {
               return this.$message.error("链接地址不能为空")
             }