三七 2 nedēļas atpakaļ
vecāks
revīzija
1bac14017d
2 mainītis faili ar 147 papildinājumiem un 52 dzēšanām
  1. 29 1
      src/views/qw/sopTemp/index.vue
  2. 118 51
      src/views/qw/sopTemp/updateSopTemp.vue

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

@@ -228,6 +228,18 @@
             />
           </el-select>
         </el-form-item>
+
+        <el-form-item label="归属部门" prop="createByDept">
+          <treeselect
+            style="width: 220px"
+            :clearable="false"
+            v-model="form.createByDept"
+            :options="deptOptions"
+            clearable
+            :show-count="true"
+            placeholder="请选择归属部门"
+          />
+        </el-form-item>
         <el-form-item label="课程" prop="courseId" v-if="form.sendType == 11 && !form.id">
           <el-select v-model="form.courseId"placeholder="请选择课程" style=" margin-right: 10px;" size="mini" filterable>
             <el-option
@@ -391,9 +403,12 @@ import {
 } from "@/api/qw/sopTemp";
 import { getCompanyList, listCompany } from '@/api/company/company'
 import {courseList, getRoles} from "@/api/qw/sop";
-
+import {treeselect} from "../../../api/company/companyDept";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 export default {
   name: "SopTemp",
+  components: {Treeselect},
   data() {
     return {
       // 遮罩层
@@ -407,6 +422,7 @@ export default {
       roles: [],
       //选中的公司
       companys: [],
+      deptOptions: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
@@ -486,6 +502,9 @@ export default {
         project:[{
           required: true, message: '所属项目不能为空', trigger: 'blur'
         }],
+        createByDept:[
+          { required: true, message: '归属部门不能为空', trigger: 'blur' }
+        ]
       },
       contentRules: {
         time: [{required: true, message: '时间不能为空', trigger: 'blur'}],
@@ -494,6 +513,9 @@ export default {
   },
   created() {
     this.getList();
+
+    this.getDeptTreeSelect();
+
     getRoles().then(res => {
       this.roles = res.data;
     })
@@ -536,6 +558,12 @@ export default {
       this.handleCompanyQuery();
     },
 
+    getDeptTreeSelect() {
+      treeselect().then((response) => {
+        this.deptOptions = response.data;
+      });
+    },
+
     /** 查询企业列表 */
     getCompanyList() {
       this.companysloading = true;

+ 118 - 51
src/views/qw/sopTemp/updateSopTemp.vue

@@ -109,7 +109,7 @@
                                     </el-time-picker>
                                   </el-form-item>
                                 </div>
-                                <el-form-item label="官方群发" v-if="contentIndex==0 && content.type==2">
+                                <el-form-item label="官方群发" v-if="contentIndex==0 && content.type==2  && form.sendType != 4">
                                   <el-switch
                                     v-model="content.isOfficial"
                                     active-color="#13ce66"
@@ -250,7 +250,7 @@
                                      v-if="content.type != 4 && content.type != 5">
                                   <el-row style="padding-bottom: 20px">
                                     <el-col :span="22">
-                                      <el-form v-if="form.sendType != 4" :model="setList" label-width="70px">
+                                      <el-form  :model="setList" label-width="70px">
                                         <el-form-item label="内容类别" style="margin: 2%">
                                           <div v-if="form.sendType == 1 ">
                                             <el-radio-group v-model="setList.contentType" :disabled="formType == 3 || !roles.includes('edit_sop_temp_content')">
@@ -276,6 +276,18 @@
                                               </el-radio>
                                             </el-radio-group>
                                           </div>
+                                          <div v-if=" form.sendType == 4">
+                                            <el-radio-group v-model="setList.contentType"
+                                                            :disabled="formType == 3"
+                                                            @change="handleContentTypeChange(content,index,contentIndex,setIndex)">
+                                              <el-radio
+                                                :key="item.dictValue"
+                                                :label="item.dictValue"
+                                                :disabled="((content.type!=2 || form.sendType == 4) && (item.dictValue === '8' || item.dictValue === '9') || (content.isOfficial==1 && ['5','6','7','8','9'].includes(item.dictValue)))"
+                                                v-for="item in sysQwSopAiContentType">{{ item.dictLabel }}
+                                              </el-radio>
+                                            </el-radio-group>
+                                          </div>
                                           <div v-if="form.sendType == 11">
                                             <el-radio-group v-model="setList.contentType"
                                                             :disabled="formType == 3 || (form.sendType == 11 && contentIndex != 0 && setIndex == 0)"
@@ -285,7 +297,7 @@
                                                 :label="item.dictValue"
                                                 :disabled="(content.type!=2 && item.dictValue === '9') || (content.isOfficial==1 && ['5','6','7','8','9'].includes(item.dictValue))"
                                                 v-for="item in sysQwSopAiContentType"
-                                                v-if="setIndex == 0 ? courseTypeList.includes(item.dictValue) : !courseTypeList.includes(item.dictValue)">{{ item.dictLabel }}
+                                                v-if="courseTypeList.includes(item.dictValue)">{{ item.dictLabel }}
                                               </el-radio>
                                             </el-radio-group>
                                           </div>
@@ -476,26 +488,26 @@
                                             </el-card>
                                           </div>
                                         </el-form-item>
-                                        <el-form-item label="添加短链"
-                                                      v-if="content.type == 2 && setList.contentType == 1  ">
-                                          <el-tooltip content="请先根据课程选定课程小节之后再添加" effect="dark"
-                                                      :disabled="!content.videoId">
-                                            <el-switch
-                                              @change="updateHtml"
-                                              v-model="setList.isBindUrl"
-                                              :disabled="!content.videoId && formType == 3 && !roles.includes('edit_sop_temp_content')"
-                                              active-color="#13ce66"
-                                              inactive-color="#DCDFE6"
-                                              active-value="1"
-                                              inactive-value="2">
-                                            </el-switch>
-                                          </el-tooltip>
-
-                                          <span v-if="setList.isBindUrl == '1'"
-                                                style="margin-left: 10px; color: #13ce66">添加URL</span>
-                                          <span v-if="setList.isBindUrl == '2'"
-                                                style="margin-left: 10px; color: #b1b4ba">不加URL</span>
-                                        </el-form-item>
+<!--                                        <el-form-item label="添加短链"-->
+<!--                                                      v-if="content.type == 2 && setList.contentType == 1  ">-->
+<!--                                          <el-tooltip content="请先根据课程选定课程小节之后再添加" effect="dark"-->
+<!--                                                      :disabled="!content.videoId">-->
+<!--                                            <el-switch-->
+<!--                                              @change="updateHtml"-->
+<!--                                              v-model="setList.isBindUrl"-->
+<!--                                              :disabled="!content.videoId && formType == 3 && !roles.includes('edit_sop_temp_content')"-->
+<!--                                              active-color="#13ce66"-->
+<!--                                              inactive-color="#DCDFE6"-->
+<!--                                              active-value="1"-->
+<!--                                              inactive-value="2">-->
+<!--                                            </el-switch>-->
+<!--                                          </el-tooltip>-->
+
+<!--                                          <span v-if="setList.isBindUrl == '1'"-->
+<!--                                                style="margin-left: 10px; color: #13ce66">添加URL</span>-->
+<!--                                          <span v-if="setList.isBindUrl == '2'"-->
+<!--                                                style="margin-left: 10px; color: #b1b4ba">不加URL</span>-->
+<!--                                        </el-form-item>-->
                                         <el-form-item label="课节过期时间"
                                                       v-if="content.type == 2 && (setList.isBindUrl == '1' || setList.contentType==4) && setList.contentType != 2  && setList.contentType != 5  && setList.contentType != 6 && setList.contentType != 8 && setList.contentType != 9 && setList.contentType != 10  ">
                                           <el-row>
@@ -518,30 +530,30 @@
                                             v-model="setList.intervalTime"
                                             :min="1"
                                             :max="1440"
-                                            style="width:100px;margin-top: 10px;"
+                                            style="width:150px;margin-top: 10px;"
                                           >
                                           </el-input-number>
                                           <span class="tip">单位:分钟,最大1440分钟(24小时)</span>
                                         </el-form-item>
-                                        <el-form-item label="内容" style="margin: 2%">
-                                          <el-input
-                                            v-model="setList.value"
-                                            type="textarea"
-                                            :rows="3"
-                                            placeholder="内容"
-                                            style="width: 90%;margin-top: 10px;"/>
-                                        </el-form-item>
-                                        <el-form-item label="交流状态" style="margin: 2%">
-                                          <el-select v-model="setList.talkType" placeholder="更改交流状态" size="mini"
-                                                     style=" margin-right: 10px;" clearable>
-                                            <el-option label="非首次交流" value="非首次交流"></el-option>
-                                            <el-option label="首次交流1" value="首次交流1"></el-option>
-                                            <el-option label="首次交流2" value="首次交流2"></el-option>
-                                            <el-option label="交流状态1" value="交流状态1"></el-option>
-                                            <el-option label="交流状态2" value="交流状态2"></el-option>
-                                            <el-option label="交流状态3" value="交流状态3"></el-option>
-                                          </el-select>
-                                        </el-form-item>
+<!--                                        <el-form-item label="内容" style="margin: 2%">-->
+<!--                                          <el-input-->
+<!--                                            v-model="setList.value"-->
+<!--                                            type="textarea"-->
+<!--                                            :rows="3"-->
+<!--                                            placeholder="内容"-->
+<!--                                            style="width: 90%;margin-top: 10px;"/>-->
+<!--                                        </el-form-item>-->
+<!--                                        <el-form-item label="交流状态" style="margin: 2%">-->
+<!--                                          <el-select v-model="setList.talkType" placeholder="更改交流状态" size="mini"-->
+<!--                                                     style=" margin-right: 10px;" clearable>-->
+<!--                                            <el-option label="非首次交流" value="非首次交流"></el-option>-->
+<!--                                            <el-option label="首次交流1" value="首次交流1"></el-option>-->
+<!--                                            <el-option label="首次交流2" value="首次交流2"></el-option>-->
+<!--                                            <el-option label="交流状态1" value="交流状态1"></el-option>-->
+<!--                                            <el-option label="交流状态2" value="交流状态2"></el-option>-->
+<!--                                            <el-option label="交流状态3" value="交流状态3"></el-option>-->
+<!--                                          </el-select>-->
+<!--                                        </el-form-item>-->
                                       </el-form>
                                     </el-col>
                                     <el-col :span="1" :offset="1">
@@ -1159,11 +1171,57 @@ export default {
           for (let content of day.content) {
             for (let set of content.setting) {
               if (!set.intervalTime) {
-                this.$message.error("客服数量不能为空");
+                this.$message.error("客服时间不能为空");
+                return false;
+              }
+              if (set.contentType == 1 && (set.value == null || set.value == "")) {
+                this.$message.error("内容不能为空")
+                return false;
+              }
+              if (set.contentType == 2 && (set.imgUrl == null || set.imgUrl == "")) {
+                this.$message.error("图片不能为空")
+                return false;
+              }
+              if ((set.contentType == 3 || set.contentType == 9) && (set.linkTitle == null || set.linkTitle == "")) {
+                this.$message.error("链接标题不能为空")
+                return false;
+              }
+              if ((set.contentType == 3 || set.contentType == 9) && (set.linkDescribe == null || set.linkDescribe == "")) {
+                this.$message.error("链接描述不能为空")
+                return false;
+              }
+              if ((set.contentType == 3 || set.contentType == 9) && (set.linkImageUrl == null || set.linkImageUrl == "")) {
+                this.$message.error("链接图片不能为空")
+                return false;
+              }
+              if (set.contentType == 3 && set.type == 1 && (set.linkUrl == null || set.linkUrl == "")) {
+                this.$message.error("链接地址不能为空")
                 return false;
               }
-              if (!set.value) {
-                this.$message.error("内容不能为空");
+
+              if (set.contentType == 4 && (set.miniprogramTitle == null || set.miniprogramTitle == "")) {
+                this.$message.error("小程序消息标题不能为空")
+                return false;
+              }
+              if (set.contentType == 4 && (set.miniprogramPicUrl == null || set.miniprogramPicUrl == "")) {
+                this.$message.error("小程序封面地址不能为空")
+                return false;
+              }
+
+              if (set.contentType == 5 && (set.fileUrl == null || set.fileUrl == "")) {
+                this.$message.error("文件不能为空")
+                return false;
+              }
+              if (set.contentType == 6 && (set.videoUrl == null || set.videoUrl == "")) {
+                this.$message.error("视频不能为空")
+                return false;
+              }
+              if (set.contentType == 7 && (set.value == null || set.value == "")) {
+                this.$message.error("语音文本不能为空")
+                return false;
+              }
+              if (set.contentType == 8 && (set.url == null || set.url == "")) {
+                this.$message.error("视频号信息不能为空")
                 return false;
               }
             }
@@ -1206,11 +1264,19 @@ export default {
           contentType: '1',
           value: '',
         };
-        if (this.form.sendType == 4) {
-          newSetting.intervalTime = 5;
+        if (this.form.sendType === 4) {
+          for (let i = 0; i < content.length; i++) {
+            if (content[i].setting.length < 5) {
+              // 将新设置项添加到 content.setting 数组中
+              content[contentIndex].setting.push(newSetting);
+            } else {
+              return this.$message.error("因为要求限制,新课对话模板一条消息只能设置最多~5个内容!!")
+            }
+          }
+        } else {
+          // 将新设置项添加到 content.setting 数组中
+          content[contentIndex].setting.push(newSetting);
         }
-        // 将新设置项添加到 content.setting 数组中
-        content[contentIndex].setting.push(newSetting);
       }
 
 
@@ -1258,6 +1324,7 @@ export default {
     addSetting() {
       let content = [{type: this.defaultContentType, contentType: '1', setting: [{contentType: '1', value: "",}]}];
       if (this.form.sendType == 4) {
+        content = [{type: 2, contentType: '1', setting: [{contentType: '1', value: "",}]}];
         content[0].setting[0].intervalTime = 5;
       }
       this.setting.push({
@@ -1513,7 +1580,7 @@ export default {
       for (let i = 0; i < content.setting.length; i++) {
         //课程消息-文本内容
         if (content.setting[i].contentType == 1 && content.type == 2) {
-          this.$set(content.setting[i], 'isBindUrl', '1');
+          this.$set(content.setting[i], 'isBindUrl', '2');
         }
         //如果是链接的才上
         if (selectedVideo && content.type == 2 && content.videoId != null) {