吴树波 преди 6 дни
родител
ревизия
bb66d3a415
променени са 3 файла, в които са добавени 94 реда и са изтрити 17 реда
  1. 8 8
      src/views/qw/sop/addSop.vue
  2. 43 9
      src/views/qw/sop/sop.vue
  3. 43 0
      src/views/qw/sopTemp/updateSopTemp.vue

+ 8 - 8
src/views/qw/sop/addSop.vue

@@ -29,10 +29,10 @@
               :label="1"
             >标签
             </el-radio>
-<!--            <el-radio-->
-<!--              :label="2"-->
-<!--            >群聊-->
-<!--            </el-radio>-->
+            <el-radio
+              :label="2"
+            >群聊
+            </el-radio>
           </el-radio-group>
           <Tip :title="'标签:根据企微客户的标签筛选客户进入SOP'" />
         </el-form-item>
@@ -76,7 +76,7 @@
           </el-select>
           <Tip title="选择的企业微信员工下面的群聊" />
         </el-form-item>
-        <el-form-item label="客户评级" prop="isRating" style="margin-top: 2%">
+        <el-form-item label="客户评级" prop="isRating" style="margin-top: 2%" v-if="form.filterMode == 1">
           <el-switch
             v-model="form.isRating"
             active-color="#13ce66"
@@ -235,7 +235,7 @@
 
           </el-form-item>
         </div>
-        <el-form-item label="是否固定营期" prop="isFixed" v-if="form.type != 3">
+        <el-form-item label="是否固定营期" prop="isFixed" v-if="form.type != 3 && form.filterMode == 1">
           <el-radio-group v-model="form.isFixed">
             <el-radio
               :label="1"
@@ -265,7 +265,7 @@
           </el-row>
           <Tip title="任务生成的代发送消息,如果超过此设置的时间还未发送,自动作废" />
         </el-form-item>
-        <el-form-item v-if="(form.sendType==2 || form.sendType==4 || form.sendType==11) && form.type != 3 && form.isFixed == 0" label="自动添加SOP"
+        <el-form-item v-if="(form.sendType==2 || form.sendType==4 || form.sendType==11) && form.type != 3 && form.isFixed == 0 && form.filterMode == 1" label="自动添加SOP"
                       prop="autoSopTime.autoSopType">
           <el-radio-group v-model="form.autoSopTime.autoSopType">
             <el-radio
@@ -332,7 +332,7 @@
 <!--        </el-form-item>-->
 
 
-        <el-form-item label="是否只发送注册用户" prop="isRegister" v-if="form.type != 3">
+        <el-form-item label="是否只发送注册用户" prop="isRegister" v-if="form.type != 3 && form.filterMode == 1">
           <el-radio-group v-model="form.isRegister">
             <el-radio
               :label="1"

+ 43 - 9
src/views/qw/sop/sop.vue

@@ -760,7 +760,20 @@
                       </el-card>
                     </div>
                     <div v-if="item.contentType == 4">
-
+                      <el-card class="box-card">
+                        <el-form-item label="标题" prop="miniprogramTitle">
+                          <el-input v-model="item.miniprogramTitle" placeholder="请输入小程序消息标题,最长为64字"  />
+                        </el-form-item>
+                        <el-form-item label="封面" prop="miniprogramPicUrl">
+                          <ImageUpload v-model="item.miniprogramPicUrl"  type="image" :num="10" :width="150" :height="150" />
+                        </el-form-item>
+                        <el-form-item label="appid" prop="miniprogramAppid" v-show="false" >
+                          <el-input v-model="item.miniprogramAppid" disabled />
+                        </el-form-item>
+                        <el-form-item label="page路径" prop="miniprogramPage" v-show="false" label-width="100px" style="margin-left: -30px" >
+                          <el-input v-model="item.miniprogramPage" placeholder="小程序消息打开后的路径"  disabled />
+                        </el-form-item>
+                      </el-card>
                     </div>
                     <div v-if="item.contentType == 5 ">
 
@@ -1401,18 +1414,28 @@ export default {
             this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
             this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
           }
+          if (selectedCourse && this.setting[i].contentType == 4 && this.msgForm.courseId != null) {
+            this.$set(this.setting[i], 'miniprogramPicUrl', selectedCourse.dictImgUrl);
+          }
 
         }
 
       }
-      if (this.msgForm.videoId != null ) {
+      if (this.msgForm.videoId != null) {
         // 查找选中的课节对应的 label
         const selectedVideo = this.videoList.find(course => parseInt(course.dictValue) === this.msgForm.videoId);
 
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的描述上值
-          if (selectedVideo && this.setting[i].contentType == 3  && this.msgForm.videoId != null) {
-            this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
+          if (selectedVideo && this.msgForm.videoId != null) {
+            console.log(2, this.setting[i].contentType)
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9) {
+              this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
+            }
+            if (this.setting[i].contentType == 4) {
+              this.$set(this.setting[i], 'miniprogramTitle', selectedVideo.dictLabel);
+            }
+
           }
         }
       }
@@ -1420,14 +1443,22 @@ export default {
 
     },
     videoIdChange() {
-      if (this.msgForm.videoId != null ) {
+      if (this.msgForm.videoId != null) {
         // 查找选中的课节对应的 label
         const selectedVideo = this.videoList.find(course => parseInt(course.dictValue) === this.msgForm.videoId);
 
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的描述上值
-          if (selectedVideo && this.setting[i].contentType == 3  && this.msgForm.videoId != null) {
-            this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
+          if (selectedVideo && this.msgForm.videoId != null) {
+            if (this.setting[i].contentType == 3 || this.setting[i].contentType == 9) {
+              this.$set(this.setting[i], 'linkDescribe', selectedVideo.dictLabel);
+            }
+
+            if (this.setting[i].contentType == 4) {
+              this.$set(this.setting[i], 'miniprogramTitle', selectedVideo.dictLabel);
+            }
+
+
           }
         }
       }
@@ -1851,7 +1882,7 @@ export default {
       });
     },
     courseChange() {
-      if (this.msgForm.courseId != null ) {
+      if (this.msgForm.courseId != null) {
         const selectedCourse = this.courseList.find(course => parseInt(course.dictValue) === this.msgForm.courseId);
         for (let i = 0; i < this.setting.length; i++) {
           //响应式直接给链接的标题/封面上值
@@ -1859,12 +1890,15 @@ export default {
             this.$set(this.setting[i], 'linkTitle', selectedCourse.dictLabel);
             this.$set(this.setting[i], 'linkImageUrl', selectedCourse.dictImgUrl);
           }
+          if (selectedCourse && this.setting[i].contentType == 4 && this.msgForm.courseId != null) {
+            this.$set(this.setting[i], 'miniprogramPicUrl', selectedCourse.dictImgUrl);
+          }
 
         }
 
       }
       videoList(this.msgForm.courseId).then(response => {
-        this.videoList=response.list;
+        this.videoList = response.list;
       });
     },
     cancelMsgForm(){

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

@@ -320,6 +320,14 @@
                                           >
                                             {{ setList.isSalesCallAdded ? '移除#销售称呼#' : '添加#销售称呼#' }}
                                           </el-link>
+                                          <el-link
+                                            v-if="setList.contentType == 1 && roles.includes('edit_sop_temp_content')"
+                                            type="primary"
+                                            @click="toggleUserNameCall(index, contentIndex, setIndex)"
+                                            style="margin-top: 10px; margin-left: 20px"
+                                          >
+                                            {{ setList.isUserNameCallAdded ? '移除#客户称呼#' : '添加#客户称呼#' }}
+                                          </el-link>
 
                                           <ImageUpload :disabled="formType == 3 || !roles.includes('edit_sop_temp_content')" v-if="setList.contentType == 2 "
                                                        v-model="setList.imgUrl"
@@ -1483,6 +1491,38 @@ export default {
         textarea.setSelectionRange(newCursorPos, newCursorPos);
       });
     },
+    toggleUserNameCall(itemIndex, contentIndex, setIndex) {
+      // 获取目标对象
+      const setItem = this.setting[itemIndex].content[contentIndex].setting[setIndex];
+      const salesCall = '#客户称呼#';
+      const refKey = `textarea-${itemIndex}-${contentIndex}-${setIndex}`;
+      const textarea = this.$refs[refKey][0]?.$refs?.textarea;
+
+      if (!textarea) return;
+
+      // 获取光标位置
+      const cursorPosition = textarea.selectionStart;
+
+      if (setItem.isUserNameCallAdded) {
+        // 移除所有标签
+        setItem.value = setItem.value.replace(new RegExp(salesCall, 'g'), '');
+      } else {
+        // 插入到光标位置
+        setItem.value =
+          setItem.value.slice(0, cursorPosition) +
+          salesCall +
+          setItem.value.slice(cursorPosition);
+      }
+
+      // 切换状态
+      setItem.isUserNameCallAdded = !setItem.isUserNameCallAdded;
+
+      // 保持光标位置
+      this.$nextTick(() => {
+        const newCursorPos = cursorPosition + (setItem.isUserNameCallAdded ? salesCall.length : 0);
+        textarea.setSelectionRange(newCursorPos, newCursorPos);
+      });
+    },
     handleKeydown(event, itemIndex, contentIndex, setIndex) {
 
       const setItem = this.setting[itemIndex].content[contentIndex].setting[setIndex];
@@ -1756,6 +1796,9 @@ export default {
                     if (setList && !Object.hasOwn(setList, 'isSalesCallAdded')) {
                       this.$set(setList, 'isSalesCallAdded', false);
                     }
+                    if (setList && !Object.hasOwn(setList, 'isUserNameCallAdded')) {
+                      this.$set(setList, 'isUserNameCallAdded', false);
+                    }
                   });
                 }
               });