Browse Source

打卡文章SOP和一键群发

wjj 3 tuần trước cách đây
mục cha
commit
53dc2ae842

+ 10 - 0
src/api/qw/signArticle.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+
+// 查询授权手机号红包配置列表
+export function secondNameOptionList() {
+  return request({
+    url: '/qw/signArticle/secondNameOptions',
+    method: 'get',
+  })
+}

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

@@ -180,6 +180,7 @@
                 <span v-if="item.contentType == 10">自定义小程序</span>
                 <span v-if="item.contentType == 10">自定义小程序</span>
                 <span v-if="item.contentType == 4"><el-button size="mini" type="primary" @click="generateShortLink(item)" style="margin-left: 330px;">生成短链</el-button></span>
                 <span v-if="item.contentType == 4"><el-button size="mini" type="primary" @click="generateShortLink(item)" style="margin-left: 330px;">生成短链</el-button></span>
                 <span v-if="item.contentType == 14">授权红包</span>
                 <span v-if="item.contentType == 14">授权红包</span>
+                <span v-if="item.contentType == 15">打卡文章</span>
                 <span v-if="item.contentType == 21">发看课短信</span>
                 <span v-if="item.contentType == 21">发看课短信</span>
               </div>
               </div>
               <div v-if="item.sendStatus">
               <div v-if="item.sendStatus">
@@ -213,7 +214,7 @@
                 </div>
                 </div>
               </div>
               </div>
             </div>
             </div>
-            <div v-if="item.contentType == 4 || item.contentType == 10 || item.contentType == 14" class="message-style">
+            <div v-if="item.contentType == 4 || item.contentType == 10 || item.contentType == 14 || item.contentType == 15" 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

+ 33 - 0
src/views/qw/sopTemp/updateSopTemp.vue

@@ -535,6 +535,23 @@
                                              </el-card>
                                              </el-card>
                                            </div>
                                            </div>
 
 
+                                          <div v-if="setList.contentType == 15">
+                                             <el-card class="box-card">
+                                               <el-form-item label="文章名称" >
+                                                 <el-select :disabled="formType == 3"    v-model="setList.signArticleId"
+                                                             placeholder="请选择文章" size="mini"
+                                                             @change="getSignArticleImgUrl(setList)" >
+                                                   <el-option
+                                                     v-for="dict in signArticleList"
+                                                     :key="dict.id"
+                                                     :label="dict.secondName"
+                                                     :value="dict.id"
+                                                   />
+                                                 </el-select>
+                                               </el-form-item>
+                                             </el-card>
+                                          </div> 
+
                                           <div v-if="setList.contentType == 21">
                                           <div v-if="setList.contentType == 21">
                                             <el-card class="box-card">
                                             <el-card class="box-card">
                                               <el-form-item label="短信模板" >
                                               <el-form-item label="短信模板" >
@@ -765,6 +782,7 @@ import {
 } from "@/api/qw/sop";
 } from "@/api/qw/sop";
 import { getSmsTempList } from "@/api/company/companySmsTemp";
 import { getSmsTempList } from "@/api/company/companySmsTemp";
 import { listPacket } from "@/api/qw/packet";
 import { listPacket } from "@/api/qw/packet";
+import { secondNameOptionList } from "@/api/qw/signArticle";
 
 
 export default {
 export default {
   name: "updateSopTemp",
   name: "updateSopTemp",
@@ -778,6 +796,7 @@ export default {
         pageSize: 100,
         pageSize: 100,
       },
       },
       packetList:[],
       packetList:[],
+      signArticleList:[],
 
 
 
 
       addTag: [{
       addTag: [{
@@ -877,6 +896,9 @@ export default {
     };
     };
   },
   },
   created() {
   created() {
+    secondNameOptionList().then(res=>{
+      this.signArticleList = res.data;
+    });
     this.getRedPacketList();
     this.getRedPacketList();
     getRoles().then(res => {
     getRoles().then(res => {
       this.roles = res.data;
       this.roles = res.data;
@@ -919,6 +941,17 @@ export default {
     this.handleUpdate(id);
     this.handleUpdate(id);
   },
   },
   methods: {
   methods: {
+
+    getSignArticleImgUrl(content){
+      const selectedSignArticle = this.signArticleList.find(item => item.id === content.signArticleId);
+      if (selectedSignArticle) {
+        content.signArticleImgUrl = selectedSignArticle.imageUrl; // 自动填充标题
+      } else {
+        // 若未找到对应直播间,清空标题和封面(可选)
+        content.signArticleImgUrl = null;
+      }
+    },
+
     getRedPacketStatus(content){
     getRedPacketStatus(content){
       const selectedRedPacket = this.packetList.find(item => item.id === content.redPacketId);
       const selectedRedPacket = this.packetList.find(item => item.id === content.redPacketId);
       if (selectedRedPacket) {
       if (selectedRedPacket) {

+ 30 - 0
src/views/qw/sopUserLogsInfo/sendMsgOpenTool.vue

@@ -172,6 +172,22 @@
                         </el-form-item>
                         </el-form-item>
                       </el-card>
                       </el-card>
                     </div>
                     </div>
+                    <div v-if="item.contentType == 15">
+                                             <el-card class="box-card">
+                                               <el-form-item label="文章名称" >
+                                                 <el-select :disabled="formType == 3"    v-model="item.signArticleId"
+                                                             placeholder="请选择文章" size="mini"
+                                                             @change="getSignArticleImgUrl(item)" >
+                                                   <el-option
+                                                     v-for="dict in signArticleList"
+                                                     :key="dict.id"
+                                                     :label="dict.secondName"
+                                                     :value="dict.id"
+                                                   />
+                                                 </el-select>
+                                               </el-form-item>
+                                             </el-card>
+                    </div> 
                     <div v-if="item.contentType == 21">
                     <div v-if="item.contentType == 21">
                       <el-card class="box-card">
                       <el-card class="box-card">
                         <el-form-item label="短信模板">
                         <el-form-item label="短信模板">
@@ -252,6 +268,7 @@ import { courseList, videoList } from "@/api/qw/sop";
 import userVideo from "@/views/qw/userVideo/userVideo";
 import userVideo from "@/views/qw/userVideo/userVideo";
 import { getSmsTempList } from "@/api/company/companySmsTemp";
 import { getSmsTempList } from "@/api/company/companySmsTemp";
 import { listPacket } from "@/api/qw/packet";
 import { listPacket } from "@/api/qw/packet";
+import { secondNameOptionList } from "@/api/qw/signArticle";
 
 
 export default {
 export default {
   name: "sendMsgOpenTool",
   name: "sendMsgOpenTool",
@@ -264,6 +281,7 @@ export default {
         pageSize: 100,
         pageSize: 100,
       },
       },
       packetList:[],
       packetList:[],
+      signArticleList:[],
       videoNumOptions: {
       videoNumOptions: {
         title: '选择视频号',
         title: '选择视频号',
         open: false,
         open: false,
@@ -360,6 +378,9 @@ export default {
   },
   },
 
 
   created() {
   created() {
+    secondNameOptionList().then(res=>{
+      this.signArticleList = res.data;
+    });
     this.getRedPacketList();
     this.getRedPacketList();
     this.getDicts("sys_qwSopAi_contentType").then(response => {
     this.getDicts("sys_qwSopAi_contentType").then(response => {
       this.sysQwSopAiContentType = response.data;
       this.sysQwSopAiContentType = response.data;
@@ -374,6 +395,15 @@ export default {
     this.loadSmsTemplates();
     this.loadSmsTemplates();
   },
   },
   methods: {
   methods: {
+    getSignArticleImgUrl(content){
+      const selectedSignArticle = this.signArticleList.find(item => item.id === content.signArticleId);
+      if (selectedSignArticle) {
+        content.signArticleImgUrl = selectedSignArticle.imageUrl; // 自动填充标题
+      } else {
+        // 若未找到对应直播间,清空标题和封面(可选)
+        content.signArticleImgUrl = null;
+      }
+    },
     getRedPacketStatus(content){
     getRedPacketStatus(content){
       const selectedRedPacket = this.packetList.find(item => item.id === content.redPacketId);
       const selectedRedPacket = this.packetList.find(item => item.id === content.redPacketId);
       if (selectedRedPacket) {
       if (selectedRedPacket) {

+ 31 - 0
src/views/qw/sopUserLogsInfo/sopUserLogsInfoDetails.vue

@@ -439,6 +439,23 @@
                         </el-form-item>
                         </el-form-item>
                       </el-card>
                       </el-card>
                     </div>
                     </div>
+                    <div v-if="item.contentType == 15">
+                      <el-card class="box-card">
+                        <el-form-item label="文章名称" >
+                          <el-select :disabled="formType == 3"    v-model="item.signArticleId"
+                                                             placeholder="请选择文章" size="mini"
+                                                             @change="getSignArticleImgUrl(item)" >
+                                                   <el-option
+                                                     v-for="dict in signArticleList"
+                                                     :key="dict.id"
+                                                     :label="dict.secondName"
+                                                     :value="dict.id"
+                                                   />
+                          </el-select>
+                        </el-form-item>
+                      </el-card>
+                    </div> 
+
                     <div v-if="item.contentType == 21">
                     <div v-if="item.contentType == 21">
                       <el-card class="box-card">
                       <el-card class="box-card">
                         <el-form-item label="短信模板" >
                         <el-form-item label="短信模板" >
@@ -591,6 +608,7 @@ import userVideo from "@/views/qw/userVideo/userVideo.vue";
 import PaginationMore from "../../../components/PaginationMore/index.vue";
 import PaginationMore from "../../../components/PaginationMore/index.vue";
 import { getSmsTempList } from "@/api/company/companySmsTemp";
 import { getSmsTempList } from "@/api/company/companySmsTemp";
 import { listPacket } from "@/api/qw/packet";
 import { listPacket } from "@/api/qw/packet";
+import { secondNameOptionList } from "@/api/qw/signArticle";
 
 
 export default {
 export default {
   name: "sopUserLogsInfoDetails",
   name: "sopUserLogsInfoDetails",
@@ -603,6 +621,7 @@ export default {
         pageSize: 100,
         pageSize: 100,
       },
       },
       packetList:[],
       packetList:[],
+      signArticleList:[],
       statusOptions:[],
       statusOptions:[],
       //上传语音的遮罩层
       //上传语音的遮罩层
       voiceLoading :false,
       voiceLoading :false,
@@ -717,6 +736,9 @@ export default {
   },
   },
 
 
   created() {
   created() {
+    secondNameOptionList().then(res=>{
+      this.signArticleList = res.data;
+    });
     this.getRedPacketList();
     this.getRedPacketList();
     this.getDicts("sys_qw_allow_select").then((response) => {
     this.getDicts("sys_qw_allow_select").then((response) => {
       this.statusOptions = response.data;
       this.statusOptions = response.data;
@@ -742,6 +764,15 @@ export default {
 
 
   },
   },
   methods: {
   methods: {
+    getSignArticleImgUrl(content){
+      const selectedSignArticle = this.signArticleList.find(item => item.id === content.signArticleId);
+      if (selectedSignArticle) {
+        content.signArticleImgUrl = selectedSignArticle.imageUrl; // 自动填充标题
+      } else {
+        // 若未找到对应直播间,清空标题和封面(可选)
+        content.signArticleImgUrl = null;
+      }
+    },
     getRedPacketStatus(content){
     getRedPacketStatus(content){
       const selectedRedPacket = this.packetList.find(item => item.id === content.redPacketId);
       const selectedRedPacket = this.packetList.find(item => item.id === content.redPacketId);
       if (selectedRedPacket) {
       if (selectedRedPacket) {