Bläddra i källkod

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_his_scrm_companyUI

caoliqin 1 vecka sedan
förälder
incheckning
f825e7b859

+ 7 - 7
.env.development

@@ -1,19 +1,19 @@
 # 页面标题
-VUE_APP_TITLE =互联网医院管理系统
+VUE_APP_TITLE =木易华康SCRM销售端
 # 公司名称
-VUE_APP_COMPANY_NAME =银川鑫泰互联网医院有限公司
+VUE_APP_COMPANY_NAME =福州市木易华康医药有限公司
 # ICP备案号
-VUE_APP_ICP_RECORD =宁ICP备2022001349号
+VUE_APP_ICP_RECORD =闽ICP备2020016609号-3
 # ICP网站访问地址
 VUE_APP_ICP_URL =https://beian.miit.gov.cn
 # 网站LOG
-VUE_APP_LOG_URL =@/assets/logo/crm.png
+VUE_APP_LOG_URL =@/assets/logo/myhk.png
 
-# 开发环境配置
-ENV = 'development'
+# 生产环境配置
+ENV = 'production'
 
 # FS管理系统/开发环境
-VUE_APP_BASE_API = '/dev-api'
+VUE_APP_BASE_API = '/prod-api'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 19 - 0
.env.prod-sft

@@ -0,0 +1,19 @@
+# 页面标题
+VUE_APP_TITLE =互联网医院管理系统
+# 公司名称
+VUE_APP_COMPANY_NAME =重庆佰达昌科技有限公司
+# ICP备案号
+VUE_APP_ICP_RECORD =渝ICP备2025059148号
+# ICP网站访问地址
+VUE_APP_ICP_URL =https://beian.miit.gov.cn
+# 网站LOG
+VUE_APP_LOG_URL =@/assets/logo/sft.png
+
+# 开发环境配置
+ENV = 'development'
+
+# FS管理系统/开发环境
+VUE_APP_BASE_API = '/prod-api'
+
+# 路由懒加载
+VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
     "build:prod-hdt": "vue-cli-service build --mode prod-hdt",
     "build:prod-yzt": "vue-cli-service build --mode prod-yzt",
     "build:prod-myhk": "vue-cli-service build --mode prod-myhk",
+    "build:prod-sft": "vue-cli-service build --mode prod-sft",
     "preview": "node build/index.js --preview",
     "lint": "eslint --ext .js,.vue src",
     "test:unit": "jest --clearCache && vue-cli-service test:unit",

+ 7 - 1
src/api/qw/sopLogs.js

@@ -18,7 +18,13 @@ export function listQwSopLogsList(query) {
   })
 }
 
-
+//修改 执行记录为待发送
+export function editCourseQwSopLogs(id) {
+  return request({
+    url: '/qw/sopLogs/editCourseQwSopLogs/' + id,
+    method: 'put'
+  })
+}
 
 // 查询企业微信SOP  定时任务详细
 export function getQwSopLogs(id) {

BIN
src/assets/logo/sft.png


+ 7 - 3
src/components/Tip/index.vue

@@ -1,6 +1,8 @@
 <template>
   <div v-if="show" class="title">
-    <p>{{ title }}</p>
+    <p>
+      <i class="el-icon-warning"></i>
+      {{ title }}</p>
   </div>
 </template>
 
@@ -27,13 +29,15 @@ export default {
   border-radius: 2px;
   padding: 4px 8px;
   width: 100%;
+  text-align: left;
 
   p {
     margin: 0;
+    padding-left: 0;
     white-space: pre-line;
-    font-size: 12px;
+    font-size: 14px;
     line-height: 24px;
+    text-align: left;
   }
 }
-
 </style>

+ 6 - 1
src/views/course/courseFinishTemp/index.vue

@@ -396,6 +396,7 @@
           </el-switch>
           <span v-if="form.isAllCompanyUser == '1'" style="margin-left: 10px;color: #13ce66">是</span>
           <span v-else style="margin-left: 10px;color: #ff4949">否</span>
+          <Tip :title="'是否 全选整个销售公司的销售,作用于这个课程小节,当这个小节有客户完课时,发送此设置的内容'" />
         </el-form-item>
         <el-form-item label="所属销售" prop="companyUserIds" v-if="form.isAllCompanyUser == '2'">
           <el-select v-model="companyUserIds" remote multiple placeholder="请选择" filterable style="width: 100%;">
@@ -428,10 +429,11 @@ import {
 import { getUserList } from '@/api/company/companyUser'
 import { courseList, videoList } from '@/api/qw/sop'
 import ImageUpload from '@/views/qw/sop/ImageUpload.vue'
+import Tip from "../../../components/Tip/index.vue";
 
 export default {
   name: "CourseFinishTemp",
-  components: {ImageUpload},
+  components: {Tip, ImageUpload},
   data() {
     return {
       //上传语音的遮罩层
@@ -487,6 +489,7 @@ export default {
       },
       // 模板表格数据
       setting: [],
+      parentId: "",
       chatSetting: [],
       // 表单参数
       form: {
@@ -501,6 +504,7 @@ export default {
   },
   created() {
     this.queryParams.parentId = this.$route.params && this.$route.params.parentId;
+    this.parentId = this.queryParams.parentId;
     getUserList().then(response => {
       this.userList = response.data;
       console.log("this.userList", this.userList)
@@ -730,6 +734,7 @@ export default {
             this.form.isAllCompanyUser = 2;
           }
           this.form.companyUserIds = this.companyUserIds.toString()
+          this.form.parentId = this.parentId
 
           this.form.setting = JSON.stringify(this.setting)
           this.form.chatSetting = JSON.stringify(this.chatSetting)

+ 1 - 1
src/views/course/courseUserStatistics/qw/statistics.vue

@@ -451,7 +451,7 @@
 </template>
 
 <script>
-import { listCourseWatchLog, getCourseWatchLog, delCourseWatchLog, addCourseWatchLog, updateCourseWatchLog, exportCourseWatchLog,statisticsList,qwWatchLogStatisticsList,qwWatchLogAllStatisticsList } from "@/api/course/courseWatchLog";
+import { listCourseWatchLog, getCourseWatchLog, delCourseWatchLog, addCourseWatchLog, updateCourseWatchLog, exportCourseWatchLog,statisticsList,qwWatchLogStatisticsList,qwWatchLogAllStatisticsList } from "@/api/course/qw/courseWatchLog";
 import { courseList,videoList } from '@/api/course/courseRedPacketLog'
 export default {
   name: "CourseWatchLog",

+ 427 - 292
src/views/qw/autoTags/dayPartingIndex.vue

@@ -1,301 +1,342 @@
 <template>
-    <div>
-      <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
-        <el-form-item label="企微公司" prop="corpId">
-            <el-select v-model="queryParams.corpId" placeholder="企微公司" size="small" @change="updateCorpId()">
-              <el-option
-                v-for="dict in myQwCompanyList"
-                :key="dict.dictValue"
-                :label="dict.dictLabel"
-                :value="dict.dictValue"
-              />
-            </el-select>
-        </el-form-item>
-        <el-form-item label="规则名称:" prop="ruleName">
-          <el-input
-            v-model="queryParams.ruleName"
-            placeholder="请输入规则名称"
-            clearable
-            size="small"
-            @keyup.enter.native="handleQuery"
+  <div>
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
+      <el-form-item label="企微公司" prop="corpId">
+        <el-select v-model="queryParams.corpId" placeholder="企微公司" size="small" @change="updateCorpId()">
+          <el-option
+            v-for="dict in myQwCompanyList"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
           />
-        </el-form-item>
-        <el-form-item label="生效成员:" prop="appleUserOne">
-          <el-select v-model="queryParams.appleUserOne" filterable clearable placeholder="选择成员" size="small">
-            <el-option
-              v-for="dict in userList"
-              :key="dict.id"
-              :label="dict.qwUserName"
-              :value="dict.id"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-          <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">刷新/重置</el-button>
-          <el-button
-            type="primary"
-            size="mini"
-            plain
-            icon="el-icon-plus"
-            @click="handleAdd"
-            v-hasPermi="['qw:autoTags:add']"
-          >添加规则</el-button>
-        </el-form-item>
-
-      </el-form>
-<!--      <div style="padding:0 0 15px 0">-->
-<!--        <el-button-->
-<!--          type="primary"-->
-<!--          size="small"-->
-<!--          plain-->
-<!--          icon="el-icon-plus"-->
-<!--          @click="handleAdd"-->
-<!--          v-hasPermi="['shop:tags:add']"-->
-<!--        >添加规则</el-button>-->
-<!--      </div>-->
-      <el-table v-loading="loading" :data="dayPartingIndexList" border height="550px" >
-        <el-table-column label="规则名称" align="center" prop="ruleName" />
-        <el-table-column label="已打标签总数" align="center" prop="totalNumTagsCount" />
-        <el-table-column label="生效成员" align="center">
-          <template slot-scope="scope">
+        </el-select>
+      </el-form-item>
+      <el-form-item label="规则名称:" prop="ruleName">
+        <el-input
+          v-model="queryParams.ruleName"
+          placeholder="请输入规则名称"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="生效成员:" prop="appleUserOne">
+        <el-select v-model="queryParams.appleUserOne" filterable clearable placeholder="选择成员" size="small">
+          <el-option
+            v-for="dict in userList"
+            :key="dict.id"
+            :label="dict.qwUserName"
+            :value="dict.id"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">刷新/重置</el-button>
+        <el-button
+          type="primary"
+          size="mini"
+          plain
+          icon="el-icon-plus"
+          @click="handleAdd"
+          v-hasPermi="['qw:autoTags:add']"
+        >添加规则</el-button>
+      </el-form-item>
+
+    </el-form>
+    <!--      <div style="padding:0 0 15px 0">-->
+    <!--        <el-button-->
+    <!--          type="primary"-->
+    <!--          size="small"-->
+    <!--          plain-->
+    <!--          icon="el-icon-plus"-->
+    <!--          @click="handleAdd"-->
+    <!--          v-hasPermi="['shop:tags:add']"-->
+    <!--        >添加规则</el-button>-->
+    <!--      </div>-->
+    <el-table v-loading="loading" :data="dayPartingIndexList" border height="550px" >
+      <el-table-column label="规则名称" align="center" prop="ruleName" />
+      <el-table-column label="已打标签总数" align="center" prop="totalNumTagsCount" />
+      <el-table-column label="生效成员" align="center">
+        <template slot-scope="scope">
                <span v-for="userId in JSON.parse(scope.row.applyUsers)" :key="userId" style="display: inline;width: 300px">
                 <el-tag :disable-transitions="false"  v-for="list in userList" :key="list.id" style="margin: 3px;" v-if="list.id==userId">{{list.qwUserName}}({{list.nickName}})</el-tag>
               </span>
-          </template>
-        </el-table-column>
-        <el-table-column label="添加的标签" align="center" prop="tagIdsName">
-          <template slot-scope="scope">
-            <div v-for="name in scope.row.tagIdsName" style="display: inline;">
-              <el-tag type="success">{{ name }}</el-tag>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column label="创建时间" align="center" prop="createTime" />
-        <el-table-column label="规则状态" align="center" prop="isApply">
-          <template slot-scope="scope">
-            <el-switch
-              v-model="scope.row.isApply"
-              active-color="#13ce66"
-              inactive-color="#ff4949"
-              active-value="1"
-              inactive-value="2"
-              @change="switchChange(scope.row)">
-            </el-switch>
-            <span v-if="scope.row.isApply == '1'" style="margin-left: 10px;color: #13ce66">已启用</span>
-            <span v-if="scope.row.isApply == '2'" style="margin-left: 10px;color: #ff4949">已关闭</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleDetails(scope.row)"
-              v-hasPermi="['qw:autoTags:query']"
-            >详情</el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-              v-hasPermi="['qw:autoTags:remove']"
-            >删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-
-      <pagination
-        v-show="total>0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
-      />
-
-      <!-- 添加或修改自动打标签主对话框 -->
-      <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
-        <el-form ref="form" :model="form" :rules="rules" label-position="left"  label-width="120px">
-          <div class="app-container">
+        </template>
+      </el-table-column>
+      <el-table-column label="添加的标签" align="center" prop="tagIdsName">
+        <template slot-scope="scope">
+          <div v-for="name in scope.row.tagIdsName" style="display: inline;">
+            <el-tag type="success">{{ name }}</el-tag>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" />
+      <el-table-column label="规则状态" align="center" prop="isApply">
+        <template slot-scope="scope">
+          <el-switch
+            v-model="scope.row.isApply"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            active-value="1"
+            inactive-value="2"
+            @change="switchChange(scope.row)">
+          </el-switch>
+          <span v-if="scope.row.isApply == '1'" style="margin-left: 10px;color: #13ce66">已启用</span>
+          <span v-if="scope.row.isApply == '2'" style="margin-left: 10px;color: #ff4949">已关闭</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['qw:autoTags:edit']"
+          >修改成员</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleDetails(scope.row)"
+            v-hasPermi="['qw:autoTags:query']"
+          >详情</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['qw:autoTags:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改自动打标签主对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-position="left"  label-width="120px">
+        <div class="app-container">
+          <div>
+            <span style="font-size: 15px">规则基础信息</span>
+            <el-divider></el-divider>
+          </div>
+          <el-alert
+            title="根据规则,当客户在设定时间段内成为企业微信客户,将自动被打上标签"
+            type="warning"
+            style="font-size: 15px;margin-bottom: 2%;"
+            :closable="false"
+            show-icon>
+          </el-alert>
+          <el-form-item label="规则名称:" prop="ruleName" style="width: 400px">
+            <el-input v-model="form.ruleName" placeholder="请输入规则名称(内部可见)" />
+          </el-form-item>
+
+          <el-form-item label="生效成员:" prop="applyUsers">
             <div>
-              <span style="font-size: 15px">规则基础信息</span>
-              <el-divider></el-divider>
+              <el-button
+                size="medium"
+                icon="el-icon-circle-plus-outline"
+                plain
+                @click="handlelistUser">请选择使用成员</el-button>
             </div>
-            <el-alert
-              title="根据规则,当客户在设定时间段内成为企业微信客户,将自动被打上标签"
-              type="warning"
-              style="font-size: 15px;margin-bottom: 2%;"
-              :closable="false"
-              show-icon>
-            </el-alert>
-            <el-form-item label="规则名称:" prop="ruleName" style="width: 400px">
-              <el-input v-model="form.ruleName" placeholder="请输入规则名称(内部可见)" />
-            </el-form-item>
-
-            <el-form-item label="生效成员:" prop="applyUsers">
-              <div>
-                <el-button
-                  size="medium"
-                  icon="el-icon-circle-plus-outline"
-                  plain
-                  @click="handlelistUser">请选择使用成员</el-button>
-              </div>
-              <div>
-                <el-tag
-                  style="margin-left: 5px"
-                  size="medium"
-                  :key="list.id"
-                  v-for="list in userSelectList"
-                  closable
-                  :disable-transitions="false"
-                  @close="handleClosegroupUser(list)">
-                  {{list.qwUserName}}({{list.nickName}})
-                </el-tag>
-              </div>
-            </el-form-item>
-            <div style="margin-top: 5%">
-              <span style="font-size: 15px">设置打标签的规则</span>
-              <el-divider></el-divider>
+            <div>
+              <el-tag
+                style="margin-left: 5px"
+                size="medium"
+                :key="list.id"
+                v-for="list in userSelectList"
+                closable
+                :disable-transitions="false"
+                @close="handleClosegroupUser(list)">
+                {{list.qwUserName}}({{list.nickName}})
+              </el-tag>
             </div>
+          </el-form-item>
+          <div style="margin-top: 5%">
+            <span style="font-size: 15px">设置打标签的规则</span>
+            <el-divider></el-divider>
+          </div>
 
-            <div  v-for="(item, index) in form.rulesTags"    :key="index" >
-                <div style="background-color: #fbfbfb;padding: 10px;  border: 1px solid #e6e6e6; margin-bottom: 10px;">
-                  <el-form ref="rulesTagsFrom" :rules="rulesTagsRules" :model="item" >
-                    <div>
-                      <div style="display: flex; align-items: center; flex-wrap: nowrap;">
-                        <span style="margin-right: 10px;">规则 {{ index + 1 }}:</span>
-                        <el-form-item label="为每:" prop="week" style="flex: 8;margin-bottom: 0">
-                          <el-select v-model="item.week" remote multiple placeholder="请选择时间" filterable style="width: 350px;">
-                            <el-option v-for="dict in weekOptions" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
-                          </el-select>
-                        </el-form-item>
-                        <el-form-item prop="startTime" style="margin:0 5px 0 5px">
-                          <el-time-select style="width: 120px;" placeholder="起始时间" v-model="item.startTime" :picker-options="{
+          <div  v-for="(item, index) in form.rulesTags"    :key="index" >
+            <div style="background-color: #fbfbfb;padding: 10px;  border: 1px solid #e6e6e6; margin-bottom: 10px;">
+              <el-form ref="rulesTagsFrom" :rules="rulesTagsRules" :model="item" >
+                <div>
+                  <div style="display: flex; align-items: center; flex-wrap: nowrap;">
+                    <span style="margin-right: 10px;">规则 {{ index + 1 }}:</span>
+                    <el-form-item label="为每:" prop="week" style="flex: 8;margin-bottom: 0">
+                      <el-select v-model="item.week" remote multiple placeholder="请选择时间" filterable style="width: 350px;">
+                        <el-option v-for="dict in weekOptions" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
+                      </el-select>
+                    </el-form-item>
+                    <el-form-item prop="startTime" style="margin:0 5px 0 5px">
+                      <el-time-select style="width: 120px;" placeholder="起始时间" v-model="item.startTime" :picker-options="{
                               start: '00:00',
                               step: '00:15',
                               end: '24:00'
                             }"></el-time-select>
-                        </el-form-item>
-                        <el-form-item prop="endTime" style="margin:0 5px 0 5px">
-                          <el-time-select style="width: 120px;" placeholder="结束时间" v-model="item.endTime" :picker-options="{
+                    </el-form-item>
+                    <el-form-item prop="endTime" style="margin:0 5px 0 5px">
+                      <el-time-select style="width: 120px;" placeholder="结束时间" v-model="item.endTime" :picker-options="{
                               start: '00:00',
                               step: '00:15',
                               end: '24:00',
                               minTime: item.startTime
                             }"></el-time-select>
-                        </el-form-item>
-                        <div style="display: flex; align-items: center;width: 100px">
-                          <span>添加的客户</span>
+                    </el-form-item>
+                    <div style="display: flex; align-items: center;width: 100px">
+                      <span>添加的客户</span>
+                    </div>
+                  </div>
+
+                  <el-form-item prop="tags" style="width: 500px;margin:5px 0 0 8%">
+                    <div style="display: flex; align-items: center;">
+                      <div style="width: 50px">
+                        <span>打上</span>
+                      </div>
+                      <div @click="handleChangeTags(item,index)" style="cursor: pointer; border: 1px solid #e6e6e6; background-color: white; overflow: hidden; flex-grow: 1;width: 390px">
+                        <div style="min-height: 35px; max-height: 200px; overflow-y: auto;">
+                          <el-tag type="success"
+                                  closable
+                                  :disable-transitions="false"
+                                  v-for="list in tagListFormIndex[index]"
+                                  :key="list.tagId"
+                                  @close="handleCloseTag(list,index)"
+                                  style="margin: 3px;"
+                          >{{list.name}}
+                          </el-tag>
                         </div>
                       </div>
+                      <div style="width: 70px">
+                        <span style="margin:0px 10px;">的标签</span>
+                      </div>
+                    </div>
+                  </el-form-item>
 
-                      <el-form-item prop="tags" style="width: 500px;margin:5px 0 0 8%">
-                        <div style="display: flex; align-items: center;">
-                          <div style="width: 50px">
-                            <span>打上</span>
-                          </div>
-                          <div @click="handleChangeTags(item,index)" style="cursor: pointer; border: 1px solid #e6e6e6; background-color: white; overflow: hidden; flex-grow: 1;width: 390px">
-                            <div style="min-height: 35px; max-height: 200px; overflow-y: auto;">
-                              <el-tag type="success"
-                                      closable
-                                      :disable-transitions="false"
-                                      v-for="list in tagListFormIndex[index]"
-                                      :key="list.tagId"
-                                      @close="handleCloseTag(list,index)"
-                                      style="margin: 3px;"
-                              >{{list.name}}
-                              </el-tag>
-                            </div>
-                          </div>
-                          <div style="width: 70px">
-                            <span style="margin:0px 10px;">的标签</span>
-                          </div>
-                        </div>
-                      </el-form-item>
-
-                      <el-form-item prop="remark" style="width: 500px;margin:5px 0 0 8%">
-                        <div style="display: flex; align-items: center;margin-top: 1%">
-                          <div style="width: 50px">
-                            <span>并备注</span>
-                          </div>
-                          <el-input v-model="item.remarks" style="width: 300px" placeholder="请输入备注(选填)"></el-input>
-                          <div style="width: 70px">
-                            <el-link v-if="form.rulesTags.length>1" icon="el-icon-delete-solid" @click="delItemList(index)" type="text" style="color: rgb(24, 144, 255);margin-left:10px;height: 40px " ></el-link>
-                          </div>
-                        </div>
-                      </el-form-item>
-					<el-form-item label="备注日期"   prop="isDay" style="width: 500px;margin:5px 0 0 8%">
-					  <el-switch
-					    v-model="item.isDay"
-					    :active-value="1"
-					    :inactive-value="0"
-					    >
-					  </el-switch>
-					</el-form-item>
+                  <el-form-item prop="remark" style="width: 500px;margin:5px 0 0 8%">
+                    <div style="display: flex; align-items: center;margin-top: 1%">
+                      <div style="width: 50px">
+                        <span>并备注</span>
+                      </div>
+                      <el-input v-model="item.remarks" style="width: 300px" placeholder="请输入备注(选填)"></el-input>
+                      <div style="width: 70px">
+                        <el-link v-if="form.rulesTags.length>1" icon="el-icon-delete-solid" @click="delItemList(index)" type="text" style="color: rgb(24, 144, 255);margin-left:10px;height: 40px " ></el-link>
+                      </div>
                     </div>
-                  </el-form>
+                  </el-form-item>
+                  <el-form-item label="备注日期"   prop="isDay" style="width: 500px;margin:5px 0 0 8%">
+                    <el-switch
+                      v-model="item.isDay"
+                      :active-value="1"
+                      :inactive-value="0"
+                    >
+                    </el-switch>
+                  </el-form-item>
                 </div>
+              </el-form>
             </div>
-            <div>
-              <el-link type="primary" class="el-icon-plus" :underline="false" @click='addItemList()'>添加其他时段规则(最多7条)</el-link>
-            </div>
           </div>
-        </el-form>
-        <div slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
+          <div>
+            <el-link type="primary" class="el-icon-plus" :underline="false" @click='addItemList()'>添加其他时段规则(最多7条)</el-link>
+          </div>
         </div>
-      </el-dialog>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
 
 
     <!-- 选择成员账号弹窗   -->
-      <el-dialog :title="listUser.title" :visible.sync="listUser.open" style="width: 1600px;height: 100%" append-to-body>
-        <qwUserList ref="QwUserList" @selectUserList="selectUserList"></qwUserList>
-      </el-dialog>
-
-      <el-dialog title="添加标签" :visible.sync="tagChange.open" width="800px" append-to-body>
-        <div>搜索标签:
-          <el-input v-model="queryTagParams.name" placeholder="请输入标签名称" clearable size="small" style="width: 200px;margin-right: 10px" />
-          <el-button type="primary" icon="el-icon-search" size="mini" @click="handleSearchTags">搜索</el-button>
-          <el-button type="primary" icon="el-icon-plus" size="mini" @click="cancelSearchTags">重置</el-button>
+    <el-dialog :title="listUser.title" :visible.sync="listUser.open" width="1600px" append-to-body>
+      <qwUserList ref="QwUserList" @selectUserList="selectUserList"></qwUserList>
+    </el-dialog>
+    <!-- 选择成员账号弹窗修改   -->
+    <el-dialog :title="listUserUpdate.title" :visible.sync="listUserUpdate.open" width="1600px" append-to-body>
+      <qwUserList ref="QwUserList" @selectUserList="selectUserListUpdate"></qwUserList>
+    </el-dialog>
+
+    <el-dialog title="添加标签" :visible.sync="tagChange.open" width="800px" append-to-body>
+      <div>搜索标签:
+        <el-input v-model="queryTagParams.name" placeholder="请输入标签名称" clearable size="small" style="width: 200px;margin-right: 10px" />
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleSearchTags">搜索</el-button>
+        <el-button type="primary" icon="el-icon-plus" size="mini" @click="cancelSearchTags">重置</el-button>
+      </div>
+      <div v-for="item in tagGroupList" :key="item.id" >
+        <div style="font-size: 20px;margin-top: 20px;margin-bottom: 20px;">
+          <span class="name-background">{{ item.name }}</span>
         </div>
-        <div v-for="item in tagGroupList" :key="item.id" >
-          <div style="font-size: 20px;margin-top: 20px;margin-bottom: 20px;">
-            <span class="name-background">{{ item.name }}</span>
-          </div>
-          <div class="tag-container">
-            <a
-              v-for="tagItem in item.tag"
-              class="tag-box"
-              @click="tagSelection(tagItem)"
-              :class="{ 'tag-selected': tagItem.isSelected }"
-            >
-              {{ tagItem.name }}
-            </a>
-          </div>
-        </div>
-        <pagination
-          v-show="tagTotal>0"
-          :total="tagTotal"
-          :page.sync="queryTagParams.pageNum"
-          :limit.sync="queryTagParams.pageSize"
-          @pagination="getPageListTagGroup"
-        />
-        <div slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="addTagSubmitForm(tagChange.index)">确 定</el-button>
-          <el-button @click="addTagCancel(tagChange.index)">重 置</el-button>
+        <div class="tag-container">
+          <a
+            v-for="tagItem in item.tag"
+            class="tag-box"
+            @click="tagSelection(tagItem)"
+            :class="{ 'tag-selected': tagItem.isSelected }"
+          >
+            {{ tagItem.name }}
+          </a>
         </div>
-      </el-dialog>
+      </div>
+      <pagination
+        v-show="tagTotal>0"
+        :total="tagTotal"
+        :page.sync="queryTagParams.pageNum"
+        :limit.sync="queryTagParams.pageSize"
+        @pagination="getPageListTagGroup"
+      />
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="addTagSubmitForm(tagChange.index)">确 定</el-button>
+        <el-button @click="addTagCancel(tagChange.index)">重 置</el-button>
+      </div>
+    </el-dialog>
 
     <!-- 分时段详   -->
-      <el-drawer :title="detailFrom.title" :visible.sync="detailFrom.open" size="75%" style="font-weight: bolder">
-        <dayPartingIndexDetails :groupIndexFrom="detailListFrom"></dayPartingIndexDetails>
-      </el-drawer>
-
+    <el-drawer :title="detailFrom.title" :visible.sync="detailFrom.open" size="75%" style="font-weight: bolder">
+      <dayPartingIndexDetails :groupIndexFrom="detailListFrom"></dayPartingIndexDetails>
+    </el-drawer>
+
+    <!-- 单独修改员工标签   -->
+    <el-dialog :title="updateUserOpen.title" :visible.sync="updateUserOpen.open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" label-width="100px">
+        <el-form-item label="选择员工" prop="qwUserIds" style="margin-top: 2%">
+          <div>
+            <el-button
+              size="medium"
+              icon="el-icon-circle-plus-outline"
+              plain
+              @click="handlelistUserUpdate">请选择使用成员</el-button>
+          </div>
+          <div>
+            <el-tag
+              style="margin-left: 5px"
+              size="medium"
+              :key="id"
+              v-for="id in updateUserOpen.applyUsersUpdate"
+              closable
+              :disable-transitions="false"
+              @close="handleClosegroupUserUpdate(id)">
+              <span v-for="list in userList" :key="list.qwUserId" v-if="list.id==id">{{list.qwUserName}}({{list.nickName}})</span>
+            </el-tag>
+          </div>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer" >
+        <el-button  type="primary" @click="submitUpdateAutoTags">确 定</el-button>
+        <el-button  @click="cancelAutoTags">取 消</el-button>
+      </div>
+    </el-dialog>
 
 
-    </div>
+  </div>
 </template>
 
 <script>
@@ -358,12 +399,31 @@ export default {
         title:"",
         open:false
       },
+
+      //选择成员列表 做修改
+      listUserUpdate:{
+        title:"",
+        open:false
+      },
       //选择成员列表
       userSelectList:[],
 
+      userSelectListUpdate:[],
+
       //详情表单参数
       detailListFrom:{},
 
+
+
+      //生效成员列表
+      updateUserOpen:{
+        title:"修改成员",
+        open:false,
+        id:null,
+        applyUsersUpdate:[],
+      },
+
+
       //详情抽屉
       detailFrom:{
         open:false,
@@ -386,14 +446,14 @@ export default {
         value: 5,
         label: '星期五'
       }
-      , {
-        value: 6,
-        label: '星期六'
-      }
-      , {
-        value: 7,
-        label: '星期天'
-      }],
+        , {
+          value: 6,
+          label: '星期六'
+        }
+        , {
+          value: 7,
+          label: '星期天'
+        }],
 
 
       // 查询参数
@@ -446,6 +506,11 @@ export default {
     userSelectList(newList) {
       this.form.applyUsers = newList.map(item => item.id);
     },
+
+    userSelectListUpdate(newList){
+      this.updateUserOpen.applyUsersUpdate = [...newList]
+    },
+
     tagListFormIndex: {
       handler(newList) {
         // 遍历 tagListFormIndex 并将 tagId 放入对应位置的 tags
@@ -469,14 +534,14 @@ export default {
   created() {
 
     getMyQwCompanyList().then(response => {
-        this.myQwCompanyList = response.data;
-        if(this.myQwCompanyList!=null){
-          this.queryParams.corpId=this.myQwCompanyList[0].dictValue
+      this.myQwCompanyList = response.data;
+      if(this.myQwCompanyList!=null){
+        this.queryParams.corpId=this.myQwCompanyList[0].dictValue
 
-          this.afreshData(this.queryParams.corpId);
+        this.afreshData(this.queryParams.corpId);
 
-          this.getList();
-        }
+        this.getList();
+      }
     });
   },
   methods: {
@@ -485,7 +550,7 @@ export default {
       this.afreshData(this.queryParams.corpId);
 
       this.getList();
-     },
+    },
     /** 新增按钮操作 */
     handleAdd() {
       this.reset();
@@ -502,8 +567,8 @@ export default {
     },
 
     /**
-    * 重新获取 部分数据
-    */
+     * 重新获取 部分数据
+     */
     afreshData(value){
 
       this.resetSearchQueryTag()
@@ -529,11 +594,21 @@ export default {
     //选择群发的企业成员账号
     handlelistUser(){
       setTimeout(() => {
-          this.$refs.QwUserList.getDetails(this.queryParams.corpId);
+        this.$refs.QwUserList.getDetails(this.queryParams.corpId);
       }, 1);
       this.listUser.title="选择企业成员"
       this.listUser.open=true;
     },
+
+    //选择群发的企业成员账号做修改
+    handlelistUserUpdate(){
+      setTimeout(() => {
+        this.$refs.QwUserList.getDetails(this.queryParams.corpId);
+      }, 1);
+      this.listUserUpdate.title="选择企业成员"
+      this.listUserUpdate.open=true;
+    },
+
     //选择的成员账号列表
     selectUserList(list){
 
@@ -547,8 +622,20 @@ export default {
         }
       });
 
+    },
+    //选择的成员账号列表 修改
+    selectUserListUpdate(list){
+
+      this.listUserUpdate.open=false;
+
+      list.forEach(obj => {
+        if (!this.updateUserOpen.applyUsersUpdate.some(item => item == obj.id)) {
+          this.userSelectListUpdate.push(obj.id);
+        }
+      });
 
     },
+
     handleSearchTags(){
 
       this.queryTagParams.corpId=this.queryParams.corpId;
@@ -583,6 +670,15 @@ export default {
       }
     },
 
+    //删除一些选择的标签
+    handleClosegroupUserUpdate(id){
+
+      const index = this.userSelectListUpdate.findIndex(item => item === id)
+      if (index !== -1) {
+        this.userSelectListUpdate.splice(index, 1)
+      }
+    },
+
     /** 查询自动打标签主列表 */
     getList() {
       this.loading = true;
@@ -694,6 +790,7 @@ export default {
       this.tagListFormIndex.splice(index,1)
     },
 
+
     // 取消按钮
     cancel() {
       this.open = false;
@@ -737,6 +834,46 @@ export default {
       this.handleQuery();
     },
 
+    handleUpdate(row){
+
+
+      this.reset();
+
+      //所有的员工
+      listUser({corpId:this.queryParams.corpId}).then(res=>{
+        this.userList=res.rows;
+      })
+
+
+      // 深拷贝表单数据
+      const requestData = { ...row };
+      requestData.applyUsers = JSON.parse(row.applyUsers);
+
+      this.userSelectListUpdate=requestData.applyUsers;
+      this.updateUserOpen.id=requestData.id;
+      this.updateUserOpen.open=true;
+
+
+    },
+
+    submitUpdateAutoTags(){
+      if (this.updateUserOpen.id != null && this.updateUserOpen.applyUsersUpdate.length>0) {
+        updateTags({id:this.updateUserOpen.id,applyUsers:JSON.stringify(this.updateUserOpen.applyUsersUpdate)}).then(response => {
+          this.msgSuccess("修改成功");
+          this.updateUserOpen.open = false;
+          this.getList();
+        });
+      }else {
+        this.msgError("修改失败:成员不能为空 或 未选规则");
+      }
+    },
+    cancelAutoTags(){
+      this.reset();
+      this.updateUserOpen.open=false;
+      this.updateUserOpen.applyUsersUpdate=[];
+      this.updateUserOpen.id=null;
+      this.userSelectListUpdate=[];
+    },
 
     /** 详情按钮操作 */
     handleDetails(row) {
@@ -788,8 +925,6 @@ export default {
       requestData.applyUsers = JSON.stringify(this.form.applyUsers);
       requestData.corpId=this.queryParams.corpId;
 
-      console.log("requestData",requestData)
-
       if (this.form.id != null) {
         updateTags(requestData).then(response => {
           this.msgSuccess("修改成功");
@@ -809,15 +944,15 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$confirm('是否确认删除自动打标签主编号为"' + ids + '"的数据项?', "警告", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        }).then(function() {
-          return delTags(ids);
-        }).then(() => {
-          this.getList();
-          this.msgSuccess("删除成功");
-        }).catch(() => {});
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return delTags(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(() => {});
     },
 
   }

+ 2 - 2
src/views/qw/externalContact/myExternalContact.vue

@@ -364,7 +364,7 @@
       <el-table-column label="修改" align="center" class-name="small-padding fixed-width" width="120px" fixed="right">
         <template slot-scope="scope">
           <el-button
-            v-if="scope.row.status==0||scope.row.status==2"
+            v-show="scope.row.status==0||scope.row.status==2"
             size="mini"
             type="text"
             icon="el-icon-edit"
@@ -401,7 +401,7 @@
             <span v-else>绑定会员</span>
           </el-button>
 
-          <el-button v-if="scope.row.fsUserId"
+          <el-button v-show="scope.row.fsUserId"
             size="mini"
             type="text"
             icon="el-icon-thumb"

+ 3 - 2
src/views/qw/sop/addSop.vue

@@ -314,6 +314,7 @@
                 }">
               </el-time-select>
             </el-form-item>
+            <Tip :title="'起始时间-结束时间之内的进线客户,进入【当日营期】,时间之外的,进入【次日营期】'" />
           </div>
         </div>
 <!--        <el-form-item v-if="form.autoSopTime.autoSopType==1" label="过期消息是否发送" prop="autoSopSend"-->
@@ -771,7 +772,7 @@ export default {
     //查询模板
     selectListSopTemp(type) {
       if(this.form.filterMode == 2){
-        type = 5;
+        type = 11;
       }
       this.tempOpen = true;
       setTimeout(() => {
@@ -924,7 +925,7 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.type == 2 && this.form.filterMode == 2) {
-            this.form.sendType = 5;
+            this.form.sendType = 11;
             if (this.form.chatIds.length <= 0) {
               return this.$message.error("请选择群聊")
             }

+ 5 - 3
src/views/qw/sop/sop.vue

@@ -179,11 +179,13 @@
           <div @click="toggleRow(scope.row)" v-if="scope.row.filterMode == 2">
             <!-- 显示当前行的成员数量 -->
             <span v-if="!expandedRows[scope.row.id]">
-            点击展开 ({{ scope.row.chatId.split(',').length }} 个)
-          </span>
+              点击展开 ({{
+                (scope.row.chatId || '').toString().split(',').length
+              }} 个)
+            </span>
             <!-- 展开时显示所有成员 -->
             <div v-show="expandedRows[scope.row.id]">
-              <div v-for="id in scope.row.chatId.split(',')" :key="id"
+              <div v-for="id in (scope.row.chatId || '').split(',')" :key="id"
                    style="display: inline;" class="text-container">
                 <el-tag type="success" v-for="list in chatList" :key="list.chatId" style="margin: 3px;"
                         v-if="list.chatId == id">

+ 12 - 1
src/views/qw/sop/updateSop.vue

@@ -56,16 +56,19 @@
               :label="2"
             >企微</el-radio>
           </el-radio-group>
+          <Tip title="针对于企业微信平台" />
         </el-form-item>
         <el-form-item label="小转天数" prop="minConversionDay">
           <el-input class="el-input" v-model="form.minConversionDay" placeholder="请输入" style="width: 300px">
             <template slot="append">天</template>
           </el-input>
+          <Tip title="第一次提醒销售,去联系客户,在【催课看板】处显示,哪些需要联系的客户" />
         </el-form-item>
         <el-form-item label="大转天数" prop="maxConversionDay">
           <el-input class="el-input" v-model="form.maxConversionDay" placeholder="请输入" style="width: 300px">
             <template slot="append">天</template>
           </el-input>
+          <Tip title="第二次提醒销售,去联系客户,在【催课看板】处显示,哪些需要联系的客户" />
         </el-form-item>
 
         <div v-if="form.type==2">
@@ -78,6 +81,7 @@
                 :label="parseInt(dict.dictValue)"
               >{{dict.dictLabel}}</el-radio>
             </el-radio-group>
+            <Tip title="选择模板类型" />
           </el-form-item>
           <el-form-item label="选择员工" prop="qwUserIds" style="margin-top: 2%">
             <div>
@@ -172,6 +176,7 @@
               :label="2"
             >次日开始</el-radio>
           </el-radio-group>
+          <Tip :title="'这个选项仅作用于【新客户】进线时或【给客户打标签时】,是进入当日的营期 还是 次日的营期'" />
         </el-form-item>
         <div style="display: flex; align-items: center; flex-wrap: nowrap;">
           <div v-if="form.autoSopTime.autoSopType==1" style="display: flex; align-items: center">
@@ -208,6 +213,10 @@
                 }">
               </el-time-select>
             </el-form-item>
+            <div style="color: #999;font-size: 14px;display: flex;align-items: center;">
+              <i class="el-icon-info"></i>
+              起始时间-结束时间之内的进线客户,进入【当日营期】,时间之外的,进入【次日营期】
+            </div>
           </div>
         </div>
         <el-form-item label="任务过期时间" prop="expiryTime">
@@ -215,6 +224,7 @@
             <el-input-number  v-model="form.expiryTime"  :min="1" :max="100" ></el-input-number>
             (小时)
           </el-row>
+          <Tip title="发送sop任务消息的过期时间,超过这个时间,消息将不再发送(作废),比如:9点的消息,设置3个小时过期,12点之后还未发送 则这条消息将过期且不再发送" />
         </el-form-item>
         <el-form-item label="模板" prop="tempId">
           <div @click="selectListSopTemp(form.sendType,0)" style="cursor: pointer; border: 1px solid #e6e6e6; background-color: white; overflow: hidden; flex-grow: 1;">
@@ -307,10 +317,11 @@ import { getMyQwUserList,getMyQwCompanyList } from "@/api/qw/user";
 import {sopListWxUserGroup} from "@/api/wxUser/wxUserGroup";
 import source from "echarts/src/data/Source";
 import SopTemp from "@/views/qw/sopTemp/sopTemp.vue";
+import Tip from "../../../components/Tip/index.vue";
 // import { ElMessageBox } from 'element-plus';
 export default {
   name: "updateSop",
-  components: {SopTemp, CustomerGroupDetails, qwUserList,ImageUpload,sopLogsDetails},
+  components: {Tip, SopTemp, CustomerGroupDetails, qwUserList,ImageUpload,sopLogsDetails},
   data() {
     return {
       updateQwUserDialog:{

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

@@ -144,6 +144,13 @@
             v-hasPermi="['qw:sopTemp:edit']"
           >复制模板
           </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-share"
+            @click="shareTemplate(scope.row)"
+            v-hasPermi="['qw:sopTemp:share']"
+          >分享模板</el-button>
           <el-button
             size="mini"
             type="text"
@@ -286,6 +293,68 @@
         <el-button type="primary" @click="updateRedData" :disabled="redData.loading">保 存</el-button>
       </div>
     </el-dialog>
+
+    <el-dialog :title="shareOptions.title" :visible.sync="shareOptions.open" width="800px" append-to-body>
+
+      <el-form :model="queryCompanyParams" ref="queryCompanyForm" :inline="true" v-show="showSearch" label-width="68px">
+        <el-form-item label="公司名称" prop="companyName">
+          <el-input
+            style="width: 220px"
+            v-model="queryCompanyParams.companyName"
+            placeholder="请输入企业名称"
+            clearable
+            size="small"
+            @keyup.enter.native="handleCompanyQuery"
+          />
+        </el-form-item>
+
+        <el-form-item label="状态" prop="status">
+          <el-select style="width: 220px" v-model="queryCompanyParams.status" placeholder="请选择状态" clearable size="small">
+            <el-option
+              v-for="dict in statusOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleCompanyQuery">搜索</el-button>
+          <el-button icon="el-icon-refresh" size="mini" @click="resetCompanyQuery">重置</el-button>
+        </el-form-item>
+      </el-form>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button
+            plain
+            type="primary"
+            icon="el-icon-connection"
+            size="mini"
+            :disabled="multiple"
+            @click="handleShareTemplate"
+            v-hasPermi="['qw:sopTemp:share']"
+          >分享模板</el-button>
+        </el-col>
+      </el-row>
+      <el-table v-loading="companysloading" border :data="companyList" @selection-change="handleSelectionCompany">
+        <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="公司编号" align="center" prop="companyId" />
+                <el-table-column label="企业名" align="center" prop="companyName" />
+        <!--        <el-table-column label="备注" align="center" prop="remark"/>-->
+        <el-table-column label="状态" align="center" prop="status" >
+          <template slot-scope="scope">
+            <el-tag prop="status" v-for="(item, index) in statusOptions"  :type="scope.row.status==1?'success':'danger'"  v-if="scope.row.status==item.dictValue">{{item.dictLabel}}</el-tag>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="companyTotal>0"
+        :total="companyTotal"
+        :page.sync="queryCompanyParams.pageNum"
+        :limit.sync="queryCompanyParams.pageSize"
+        @pagination="getCompanyList"
+      />
+    </el-dialog>
   </div>
 </template>
 
@@ -303,7 +372,7 @@ import {
   updateRedPackage,
   updateTemp
 } from "@/api/qw/sopTemp";
-import {getCompanyList} from "@/api/company/company";
+import { getCompanyList, listCompany } from '@/api/company/company'
 import {courseList, getRoles} from "@/api/qw/sop";
 
 export default {
@@ -417,6 +486,8 @@ export default {
       this.courseList = response.list;
     });
 
+    this.getCompanyList();
+
     getCompanyList().then(response => {
       this.companys = response.data;
     });
@@ -430,6 +501,16 @@ export default {
       this.resetForm("queryCompanyForm");
       this.handleCompanyQuery();
     },
+
+    /** 查询企业列表 */
+    getCompanyList() {
+      this.companysloading = true;
+      listCompany(this.queryCompanyParams).then(response => {
+        this.companyList = response.rows;
+        this.companyTotal = response.total;
+        this.companysloading = false;
+      });
+    },
     /** 查询sop模板列表 */
     getList() {
       this.loading = true;

+ 46 - 12
src/views/qw/sopUserLogs/sopUserLogsSchedule.vue

@@ -53,19 +53,35 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button
-          type="warning"
-          icon="el-icon-s-promotion"
-          size="medium"
-          :disabled="multiple"
-          @click="handleCampSendMsg"
-          v-if="filterMode == 1"
-          v-hasPermi="['qw:sopUserLogsInfo:msg']"
-        >营期一键群发</el-button>
+        <el-tooltip class="item" effect="dark" content="此功能用于给 选中的 营期 内【所有的】客户发送 消息【或者发送草稿-/-清楚草稿】" placement="top">
+          <el-button
+            type="warning"
+            icon="el-icon-s-promotion"
+            size="medium"
+            :disabled="multiple"
+            @click="handleCampSendMsg"
+            v-hasPermi="['qw:sopUserLogsInfo:msg']"
+          >营期一键群发(或草稿)</el-button>
+        </el-tooltip>
       </el-col>
 
+      <el-col :span="1.5">
+        <el-tooltip class="item" effect="dark" content="删除营期之后,将不会在给原营期的客户发送消息,ps:删除之后不可恢复" placement="top">
+          <el-button
+            type="danger"
+            icon="el-icon-s-promotion"
+            size="medium"
+            :disabled="multiple"
+            @click="handleDeleteUserLogs"
+            v-hasPermi="['qw:sopUserLogs:remove']"
+          >批量删除营期</el-button>
+
+        </el-tooltip>
+      </el-col>
     </el-row>
-
+    <Tip :title="'【营期一键群发】:此功能用于给 选中的 营期 内【所有的】客户发送 消息【或者发送草稿-/-清楚草稿】'" />
+    <Tip :title="'【批量删除营期】:此功能用于删除选中的【整个营期】,删除之后将不会在给原营期的客户发送消息,ps:删除之后不可恢复'" />
+    <Tip :title="'【天数】:【列表:营期时间】对应列表中的天数是几 就代表着 插件助手 会发送【任务模板】里的第几天的消息'" />
 
     <el-table border v-loading="loading" :data="sopUserLogsList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
@@ -149,14 +165,15 @@ import {
   updateSopUserLogs,
   exportSopUserLogs,
   repairSopUserLogs
-} from "@/api/qw/sopUserLogs";
+} from "../../../api/qw/sopUserLogs";
 import sopLogsDetails from "@/views/qw/sopLogs/sopLogsList.vue";
 import SopUserLogsInfoDetails from "@/views/qw/sopUserLogsInfo/sopUserLogsInfoDetails.vue";
 import {syncMyExternalContact} from "@/api/qw/externalContact";
 import SendMsgOpenTool from "@/views/qw/sopUserLogsInfo/sendMsgOpenTool.vue";
+import Tip from "../../../components/Tip/index.vue";
 export default {
   name: "sopUserLogsSchedule",
-  components: {SendMsgOpenTool, SopUserLogsInfoDetails, sopLogsDetails},
+  components: {Tip, SendMsgOpenTool, SopUserLogsInfoDetails, sopLogsDetails},
   props:{
     rowDetailFrom:{},
   },
@@ -265,6 +282,23 @@ export default {
 
     },
 
+    /**
+     *  删除营期
+     */
+    handleDeleteUserLogs(){
+      const ids =  this.ids;
+      this.$confirm('是否确认删除编号为"' + ids + '"的数据项【注意!!删除后不可恢复,请谨慎操作】?', "警告", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(function() {
+        return delSopUserLogs(ids);
+      }).then(() => {
+        this.getList();
+        this.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+
     // 取消按钮
     cancel() {
       this.open = false;

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

@@ -1,12 +1,10 @@
 <template>
   <div class="app-container">
-    <el-alert
-      title="注意事项"
-      type="warning"
-      description="搜索【客户备注】【标签】 只能搜索/筛选出 【当前页】的数据)"
-      :closable="false"
-      show-icon>
-    </el-alert>
+    <Tip :title="'搜索【客户备注】【标签】【进线时间】 只能搜索/筛选出 【当前页】的数据)【可以用客户id来搜(客户id来源-》企微/我的企微客户-》列表的企微客户ID)'" />
+    <Tip :title="'【一键群发】:用于给 选中的 客户 发送插件信息'" />
+    <Tip :title="'【批量修改客户营期】:选中 相应的客户 修改到 想进的相应的营期'" />
+    <Tip :title="'【官方群发许可】:只有这里显示为【是】的,才能通过模板中的 官方群发 来发送(允许条件是 客户点击过【非官方群发】发送的课程!)'" />
+
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
 <!--      <el-form-item label="企微员工账号" prop="qwUserId">-->
 <!--        <el-input-->
@@ -64,7 +62,6 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -448,10 +445,11 @@ import {addCourseFinishTemp, updateCourseFinishTemp} from "@/api/course/courseFi
 import {allListTagGroup} from "@/api/qw/tagGroup";
 import {listTag} from "@/api/qw/tag";
 import {searchTags} from "../../../api/qw/tag";
+import Tip from "../../../components/Tip/index.vue";
 
 export default {
   name: "sopUserLogsInfoDetails",
-  components: {ImageUpload},
+  components: {Tip, ImageUpload},
   data() {
     return {
       //上传语音的遮罩层