|
@@ -1,20 +1,26 @@
|
|
|
<template>
|
|
|
<div class="app-container">
|
|
|
- <Tip :title="'搜索【客户备注】【标签】【进线时间】 只能搜索/筛选出 【当前页】的数据)【可以用客户id来搜(客户id来源-》企微/我的企微客户-》列表的企微客户ID)'" />
|
|
|
- <Tip :title="'【一键群发】:用于给 选中的 客户 发送插件信息'" />
|
|
|
- <Tip :title="'【批量修改客户营期】:选中 相应的客户 修改到 想进的相应的营期'" />
|
|
|
- <Tip :title="'【官方群发许可】:只有这里显示为【是】的,才能通过模板中的 官方群发 来发送(允许条件是 客户点击过【非官方群发】发送的课程!)'" />
|
|
|
-
|
|
|
+ <el-alert
|
|
|
+ title="注意事项"
|
|
|
+ type="warning"
|
|
|
+ :closable="false"
|
|
|
+ show-icon>
|
|
|
+ <template #title>
|
|
|
+ <span style="font-size: 20px; line-height: 1.5;">
|
|
|
+ 搜索【客户备注】【标签】【进线时间】 只能搜索/筛选出 【当前页】的数据)【可以用客户id来搜(客户id来源-》企微/我的企微客户-》列表的企微客户ID)】
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-alert>
|
|
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
|
|
|
-<!-- <el-form-item label="企微员工账号" prop="qwUserId">-->
|
|
|
-<!-- <el-input-->
|
|
|
-<!-- v-model="queryParams.qwUserId"-->
|
|
|
-<!-- placeholder="请输入企微员工账号"-->
|
|
|
-<!-- clearable-->
|
|
|
-<!-- size="small"-->
|
|
|
-<!-- @keyup.enter.native="handleQuery"-->
|
|
|
-<!-- />-->
|
|
|
-<!-- </el-form-item>-->
|
|
|
+ <!-- <el-form-item label="企微员工账号" prop="qwUserId">-->
|
|
|
+ <!-- <el-input-->
|
|
|
+ <!-- v-model="queryParams.qwUserId"-->
|
|
|
+ <!-- placeholder="请输入企微员工账号"-->
|
|
|
+ <!-- clearable-->
|
|
|
+ <!-- size="small"-->
|
|
|
+ <!-- @keyup.enter.native="handleQuery"-->
|
|
|
+ <!-- />-->
|
|
|
+ <!-- </el-form-item>-->
|
|
|
<el-form-item label="客户名称" prop="externalUserName">
|
|
|
<el-input
|
|
|
v-model="queryParams.externalUserName"
|
|
@@ -33,14 +39,31 @@
|
|
|
@keyup.enter.native="handleQuery"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="客户id" prop="externalId">
|
|
|
+ <el-input
|
|
|
+ v-model="queryParams.externalId"
|
|
|
+ placeholder="请输入企微客户id"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="进线时间" prop="entryTime" v-if="queryParams.filterMode == 1">
|
|
|
+ <el-date-picker clearable size="small"
|
|
|
+ v-model="queryParams.entryTime"
|
|
|
+ type="date"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ placeholder="选择营期时间">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="标签" prop="tagIds">
|
|
|
-<!-- <el-select v-model="selectTags" remote multiple placeholder="请选择" filterable style="width: 100%;">-->
|
|
|
-<!-- <el-option-->
|
|
|
-<!-- v-for="dict in tagList"-->
|
|
|
-<!-- :label="dict.name"-->
|
|
|
-<!-- :value="dict.tagId">-->
|
|
|
-<!-- </el-option>-->
|
|
|
-<!-- </el-select>-->
|
|
|
+ <!-- <el-select v-model="selectTags" remote multiple placeholder="请选择" filterable style="width: 100%;">-->
|
|
|
+ <!-- <el-option-->
|
|
|
+ <!-- v-for="dict in tagList"-->
|
|
|
+ <!-- :label="dict.name"-->
|
|
|
+ <!-- :value="dict.tagId">-->
|
|
|
+ <!-- </el-option>-->
|
|
|
+ <!-- </el-select>-->
|
|
|
|
|
|
<div @click="hangleChangeTags()" style="cursor: pointer; border: 1px solid #e6e6e6; background-color: white; overflow: hidden; flex-grow: 1;width: 250px">
|
|
|
<div style="min-height: 35px; max-height: 200px; overflow-y: auto;">
|
|
@@ -62,7 +85,8 @@
|
|
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
- <el-row :gutter="10" class="mb8">
|
|
|
+
|
|
|
+ <el-row :gutter="10" class="mb8" v-if="queryParams.filterMode == 1">
|
|
|
<el-col :span="1.5">
|
|
|
<el-button
|
|
|
type="warning"
|
|
@@ -81,52 +105,54 @@
|
|
|
size="medium"
|
|
|
:disabled="multiple"
|
|
|
@click="handleUpdate"
|
|
|
- v-if="queryParams.filterMode == 1"
|
|
|
v-hasPermi="['qw:sopUserLogsInfo:edit']"
|
|
|
>批量修改客户营期</el-button>
|
|
|
</el-col>
|
|
|
-
|
|
|
-<!-- <el-col :span="1.5">-->
|
|
|
-<!-- <el-button-->
|
|
|
-<!-- type="success"-->
|
|
|
-<!-- plain-->
|
|
|
-<!-- icon="el-icon-download"-->
|
|
|
-<!-- size="mini"-->
|
|
|
-<!-- :loading="exportLoading"-->
|
|
|
-<!-- @click="handleExport"-->
|
|
|
-<!-- v-hasPermi="['qw:sop:export']"-->
|
|
|
-<!-- >导出</el-button>-->
|
|
|
-<!-- </el-col>-->
|
|
|
</el-row>
|
|
|
+ <div style="color: #999;font-size: 14px;display: flex;align-items: center;margin-bottom: 5px" v-if="queryParams.filterMode == 1">
|
|
|
+ <i class="el-icon-info"></i>
|
|
|
+ 【一键群发】:用于给 选中的 客户 发送插件信息
|
|
|
+ </div>
|
|
|
+ <div style="color: #999;font-size: 14px;display: flex;align-items: center;margin-bottom: 5px" v-if="queryParams.filterMode == 1">
|
|
|
+ <i class="el-icon-info"></i>
|
|
|
+ 【批量修改客户营期】:选中 相应的客户 修改到 想进的相应的营期
|
|
|
+ </div>
|
|
|
+ <div style="color: #999;font-size: 14px;display: flex;align-items: center;margin-bottom: 5px" v-if="queryParams.filterMode == 1">
|
|
|
+ <i class="el-icon-info"></i>
|
|
|
+ 【官方群发许可】:只有这里显示为【是】的,才能通过模板中的 官方群发 来发送(允许条件是 客户点击过【非官方群发】发送的课程!)
|
|
|
+ </div>
|
|
|
|
|
|
<el-table border v-loading="loading" :data="sopUserLogsInfoList" @selection-change="handleSelectionChange" v-if="queryParams.filterMode == 1">
|
|
|
<el-table-column type="selection" width="55" align="center" />
|
|
|
<el-table-column label="编号" align="center" prop="id" width="100"/>
|
|
|
-<!-- <el-table-column label="企微员工账号" align="center" prop="qwUserId" width="100"/>-->
|
|
|
+ <!-- <el-table-column label="企微员工账号" align="center" prop="qwUserId" width="100"/>-->
|
|
|
<el-table-column label="客户ID" align="center" prop="externalId" width="100"/>
|
|
|
-<!-- <el-table-column label="客户小程序id" align="center" prop="fsUserId" width="100">-->
|
|
|
-<!-- <template slot-scope="scope">-->
|
|
|
-<!-- <el-tag type="success">-->
|
|
|
-<!-- {{ scope.row.fsUserId === 0 || scope.row.fsUserId === null ? '无' : scope.row.fsUserId }}-->
|
|
|
-<!-- </el-tag>-->
|
|
|
-<!-- </template>-->
|
|
|
-<!-- </el-table-column>-->
|
|
|
+ <!-- <el-table-column label="客户小程序id" align="center" prop="fsUserId" width="100">-->
|
|
|
+ <!-- <template slot-scope="scope">-->
|
|
|
+ <!-- <el-tag type="success">-->
|
|
|
+ <!-- {{ scope.row.fsUserId === 0 || scope.row.fsUserId === null ? '无' : scope.row.fsUserId }}-->
|
|
|
+ <!-- </el-tag>-->
|
|
|
+ <!-- </template>-->
|
|
|
+ <!-- </el-table-column>-->
|
|
|
<el-table-column label="客户名称" align="center" prop="externalUserName" />
|
|
|
<el-table-column label="备注" align="center" prop="remark" />
|
|
|
- <el-table-column label="客户标签" align="center" prop="tagIds" width="240">
|
|
|
+ <el-table-column label="客户标签" align="center" prop="tagIdsName" width="250px">
|
|
|
<template slot-scope="scope">
|
|
|
- <div v-for="name in scope.row.tagIdsName" v-if="scope.row.tagIdsName && scope.row.tagIdsName.length > 0 && scope.row.tagIdsName[0] != '无标签'" style="display: inline;">
|
|
|
+ <div v-for="name in scope.row.tagIdsName" style="display: inline;">
|
|
|
<el-tag type="success">{{ name }}</el-tag>
|
|
|
</div>
|
|
|
- <div v-else>
|
|
|
- <span style="color: red;">无标签</span>
|
|
|
- </div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="进线时间" align="center" prop="inComTime" width="180"/>
|
|
|
<el-table-column label="添加日期" align="center" prop="createTime" width="180"/>
|
|
|
<el-table-column label="添加时间" align="center" prop="crtTime" width="180"/>
|
|
|
<el-table-column label="修改时间" align="center" prop="updateTime" width="180"/>
|
|
|
+ <!-- <el-table-column label="官方群发许可" align="center" prop="fsUserId" width="70">-->
|
|
|
+ <!-- <template slot-scope="scope">-->
|
|
|
+ <!-- <el-tag v-if="scope.row.fsUserId > 0" type="success">是</el-tag>-->
|
|
|
+ <!-- <el-tag v-else type="danger">否</el-tag>-->
|
|
|
+ <!-- </template>-->
|
|
|
+ <!-- </el-table-column>-->
|
|
|
<el-table-column label="官方群发许可" align="center" prop="fsUserId" width="70">
|
|
|
<!-- 表头提示 -->
|
|
|
<template slot="header">
|
|
@@ -149,13 +175,13 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120" fixed="right">
|
|
|
<template slot-scope="scope">
|
|
|
-<!-- <el-button-->
|
|
|
-<!-- size="mini"-->
|
|
|
-<!-- type="text"-->
|
|
|
-<!-- icon="el-icon-edit"-->
|
|
|
-<!-- @click="handleUpdate(scope.row)"-->
|
|
|
-<!-- v-hasPermi="['qw:sopUserLogsInfo:edit']"-->
|
|
|
-<!-- >修改客户营期</el-button>-->
|
|
|
+ <!-- <el-button-->
|
|
|
+ <!-- size="mini"-->
|
|
|
+ <!-- type="text"-->
|
|
|
+ <!-- icon="el-icon-edit"-->
|
|
|
+ <!-- @click="handleUpdate(scope.row)"-->
|
|
|
+ <!-- v-hasPermi="['qw:sopUserLogsInfo:edit']"-->
|
|
|
+ <!-- >修改客户营期</el-button>-->
|
|
|
<el-button
|
|
|
size="mini"
|
|
|
type="text"
|
|
@@ -172,18 +198,15 @@
|
|
|
<el-table-column label="编号" align="center" prop="id" width="100"/>
|
|
|
<el-table-column label="客户名称" align="center" prop="name" />
|
|
|
<el-table-column label="备注" align="center" prop="remark" />
|
|
|
- <el-table-column label="客户标签" align="center" prop="tagIds" width="240">
|
|
|
+ <el-table-column label="客户标签" align="center" prop="tagIdsName" width="250px">
|
|
|
<template slot-scope="scope">
|
|
|
- <div v-for="name in scope.row.tagNames" v-if="scope.row.tagNames && scope.row.tagNames.length > 0 && scope.row.tagNames[0] != '无标签'" style="display: inline;">
|
|
|
+ <div v-for="name in scope.row.tagIdsName" style="display: inline;">
|
|
|
<el-tag type="success">{{ name }}</el-tag>
|
|
|
</div>
|
|
|
- <div v-else>
|
|
|
- <span style="color: red;">无标签</span>
|
|
|
- </div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="加群时间" align="center" prop="joinTime" width="180"/>
|
|
|
- <el-table-column label="进线时间" align="center" prop="inComTime" width="180"/>
|
|
|
+ <!-- <el-table-column label="进线时间" align="center" prop="inComTime" width="180"/>-->
|
|
|
</el-table>
|
|
|
|
|
|
<pagination-more
|
|
@@ -195,200 +218,200 @@
|
|
|
/>
|
|
|
|
|
|
<el-dialog :title="sendMsgOpen.title" :visible.sync="sendMsgOpen.open" width="1000px" append-to-body>
|
|
|
- <el-form ref="msgForm" :model="msgForm" :rules="msgRules" label-width="100px">
|
|
|
- <el-form-item label="选择课程">
|
|
|
- <el-select v-model="msgForm.courseId" placeholder="请选择课程" style=" margin-right: 10px;" size="mini" remote filterable @change="courseChange()">
|
|
|
- <el-option
|
|
|
- v-for="dict in courseList"
|
|
|
- :key="dict.dictValue"
|
|
|
- :label="dict.dictLabel"
|
|
|
- :value="parseInt(dict.dictValue)"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- <el-select v-model="msgForm.videoId" placeholder="请选择小节" size="mini" style=" margin-right: 10px;" remote filterable @change="videoIdChange()" >
|
|
|
- <el-option
|
|
|
- v-for="dict in videoList"
|
|
|
- :key="dict.dictValue"
|
|
|
- :label="dict.dictLabel"
|
|
|
- :value="parseInt(dict.dictValue)"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- <el-select v-model="msgForm.courseType" placeholder="请选择消息类型" size="mini" style=" margin-right: 10px;">
|
|
|
- <el-option
|
|
|
- v-for="dict in sysFsSopWatchStatus"
|
|
|
- :key="dict.dictValue"
|
|
|
- :label="dict.dictLabel"
|
|
|
- :value="parseInt(dict.dictValue)"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="规则" prop="setting" >
|
|
|
- <div v-for="(item, index) in setting" :key="index" style="background-color: #fdfdfd; border: 1px solid #e6e6e6; margin-bottom: 20px;">
|
|
|
- <el-row>
|
|
|
- <el-col :span="22">
|
|
|
- <el-form :model="item" label-width="70px">
|
|
|
- <el-form-item label="内容类别" style="margin: 2%">
|
|
|
- <el-radio-group v-model="item.contentType">
|
|
|
- <el-radio :label="item.dictValue" v-for="item in sysQwSopAiContentType" :key="item.dictLabel" @change="handleContentTypeChange()">{{item.dictLabel}}</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="内容" style="margin-bottom: 2%" >
|
|
|
- <el-input
|
|
|
- v-if="item.contentType == 1"
|
|
|
- v-model="item.value"
|
|
|
- type="textarea"
|
|
|
- :rows="3"
|
|
|
- placeholder="内容"
|
|
|
- style="width: 90%; margin-top: 10px;"
|
|
|
- @keydown.native="handleKeydown($event, index)"
|
|
|
- :ref="`textarea-${index}`"
|
|
|
- >
|
|
|
- </el-input>
|
|
|
- <el-link
|
|
|
- v-if="item.contentType == 1"
|
|
|
- type="primary"
|
|
|
- @click="toggleSalesCall(index)"
|
|
|
- style="margin-top: 10px;"
|
|
|
- >
|
|
|
- {{ item.isSalesCallAdded ? '移除#销售称呼#' : '添加#销售称呼#' }}
|
|
|
- </el-link>
|
|
|
- <el-link
|
|
|
- v-if="item.contentType == 1"
|
|
|
- type="primary"
|
|
|
- @click="toggleSalesCallCustomer(index)"
|
|
|
- style="margin-top: 10px;margin-left: 2%"
|
|
|
- >
|
|
|
- {{ item.isSalesCallCustomerAdded ? '移除#客户称呼#' : '添加#客户称呼#' }}
|
|
|
- </el-link>
|
|
|
-
|
|
|
-
|
|
|
- <ImageUpload v-if="item.contentType == 2 " v-model="item.imgUrl" type="image" :num="1" :width="150" :height="150" />
|
|
|
-
|
|
|
- <div v-if="item.contentType == 3 || item.contentType ==9 ">
|
|
|
- <el-card class="box-card">
|
|
|
- <el-form-item label="链接标题:" label-width="100px">
|
|
|
- <el-input v-model="item.linkTitle" placeholder="请输入链接标题" style="width: 90%;"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="链接描述:" label-width="100px" >
|
|
|
- <el-input type="textarea" :rows="3" v-model="item.linkDescribe" placeholder="请输入链接描述" style="width: 90%;margin-top: 1%;"/>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="链接封面:" label-width="100px">
|
|
|
- <ImageUpload v-model="item.linkImageUrl" type="image" :num="1" :file-size="2" :width="150" :height="150" style="margin-top: 1%;" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="链接地址:" label-width="100px" >
|
|
|
- <el-tag type="warning" v-model="item.isBindUrl=1">选择的课程小节 即为卡片链接地址</el-tag>
|
|
|
- </el-form-item>
|
|
|
- </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='wx73f85f8d62769119' " 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 ">
|
|
|
-
|
|
|
- <el-form-item label="上传文件:" prop="fileUrl" label-width="100px">
|
|
|
- <el-upload
|
|
|
- v-model="item.fileUrl"
|
|
|
- class="avatar-uploader"
|
|
|
- :action="uploadUrl"
|
|
|
- :show-file-list="false"
|
|
|
- :on-success="(res, file) => handleAvatarSuccessFile(res, file, item)"
|
|
|
- :before-upload="beforeAvatarUploadFile">
|
|
|
- <i class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
- </el-upload>
|
|
|
- <el-link v-if="item.fileUrl" type="primary" :href="downloadUrl(item.fileUrl)" download>
|
|
|
- {{item.fileUrl}}
|
|
|
- </el-link>
|
|
|
+ <el-form ref="msgForm" :model="msgForm" :rules="msgRules" label-width="100px">
|
|
|
+ <el-form-item label="选择课程">
|
|
|
+ <el-select v-model="msgForm.courseId" placeholder="请选择课程" style=" margin-right: 10px;" size="mini" remote filterable @change="courseChange()">
|
|
|
+ <el-option
|
|
|
+ v-for="dict in courseList"
|
|
|
+ :key="dict.dictValue"
|
|
|
+ :label="dict.dictLabel"
|
|
|
+ :value="parseInt(dict.dictValue)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <el-select v-model="msgForm.videoId" placeholder="请选择小节" size="mini" style=" margin-right: 10px;" remote filterable @change="videoIdChange()" >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in videoList"
|
|
|
+ :key="dict.dictValue"
|
|
|
+ :label="dict.dictLabel"
|
|
|
+ :value="parseInt(dict.dictValue)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <el-select v-model="msgForm.courseType" placeholder="请选择消息类型" size="mini" style=" margin-right: 10px;">
|
|
|
+ <el-option
|
|
|
+ v-for="dict in sysFsSopWatchStatus"
|
|
|
+ :key="dict.dictValue"
|
|
|
+ :label="dict.dictLabel"
|
|
|
+ :value="parseInt(dict.dictValue)"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="规则" prop="setting" >
|
|
|
+ <div v-for="(item, index) in setting" :key="index" style="background-color: #fdfdfd; border: 1px solid #e6e6e6; margin-bottom: 20px;">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="22">
|
|
|
+ <el-form :model="item" label-width="70px">
|
|
|
+ <el-form-item label="内容类别" style="margin: 2%">
|
|
|
+ <el-radio-group v-model="item.contentType">
|
|
|
+ <el-radio :label="item.dictValue" v-for="item in sysQwSopAiContentType" @change="handleContentTypeChange()">{{item.dictLabel}}</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="内容" style="margin-bottom: 2%" >
|
|
|
+ <el-input
|
|
|
+ v-if="item.contentType == 1"
|
|
|
+ v-model="item.value"
|
|
|
+ type="textarea"
|
|
|
+ :rows="3"
|
|
|
+ placeholder="内容"
|
|
|
+ style="width: 90%; margin-top: 10px;"
|
|
|
+ @keydown.native="handleKeydown($event, index)"
|
|
|
+ :ref="`textarea-${index}`"
|
|
|
+ >
|
|
|
+ </el-input>
|
|
|
+ <el-link
|
|
|
+ v-if="item.contentType == 1"
|
|
|
+ type="primary"
|
|
|
+ @click="toggleSalesCall(index)"
|
|
|
+ style="margin-top: 10px;"
|
|
|
+ >
|
|
|
+ {{ item.isSalesCallAdded ? '移除#销售称呼#' : '添加#销售称呼#' }}
|
|
|
+ </el-link>
|
|
|
+ <el-link
|
|
|
+ v-if="item.contentType == 1"
|
|
|
+ type="primary"
|
|
|
+ @click="toggleSalesCallCustomer(index)"
|
|
|
+ style="margin-top: 10px;margin-left: 2%"
|
|
|
+ >
|
|
|
+ {{ item.isSalesCallCustomerAdded ? '移除#客户称呼#' : '添加#客户称呼#' }}
|
|
|
+ </el-link>
|
|
|
+
|
|
|
+
|
|
|
+ <ImageUpload v-if="item.contentType == 2 " v-model="item.imgUrl" type="image" :num="1" :width="150" :height="150" />
|
|
|
+
|
|
|
+ <div v-if="item.contentType == 3 || item.contentType ==9 ">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <el-form-item label="链接标题:" label-width="100px">
|
|
|
+ <el-input v-model="item.linkTitle" placeholder="请输入链接标题" style="width: 90%;"/>
|
|
|
</el-form-item>
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- <div v-if="item.contentType == 6 ">
|
|
|
- <el-form-item label="上传视频:" prop="videoUrl" label-width="100px">
|
|
|
- <el-upload
|
|
|
- v-model="item.videoUrl"
|
|
|
- class="avatar-uploader"
|
|
|
- :action="uploadUrl"
|
|
|
- :show-file-list="false"
|
|
|
- :on-success="(res, file) => handleAvatarSuccessVideo(res, file, item)"
|
|
|
- :before-upload="beforeAvatarUploadVideo">
|
|
|
- <i class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
- </el-upload>
|
|
|
- <video v-if="item.videoUrl"
|
|
|
- :src="item.videoUrl"
|
|
|
- controls style="width: 200px;height: 100px">
|
|
|
- </video>
|
|
|
+ <el-form-item label="链接描述:" label-width="100px" >
|
|
|
+ <el-input type="textarea" :rows="3" v-model="item.linkDescribe" placeholder="请输入链接描述" style="width: 90%;margin-top: 1%;"/>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="链接封面:" label-width="100px">
|
|
|
+ <ImageUpload v-model="item.linkImageUrl" type="image" :num="1" :file-size="2" :width="150" :height="150" style="margin-top: 1%;" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="链接地址:" label-width="100px" >
|
|
|
+ <el-tag type="warning" v-model="item.isBindUrl=1">选择的课程小节 即为卡片链接地址</el-tag>
|
|
|
+ </el-form-item>
|
|
|
+ </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='wx73f85f8d62769119' " disabled />
|
|
|
</el-form-item>
|
|
|
- </div>
|
|
|
- <div v-if="item.contentType == 7 ">
|
|
|
- <el-input
|
|
|
- v-model="item.value"
|
|
|
- type="textarea" :rows="3" maxlength="66" show-word-limit
|
|
|
- placeholder="输入要转为语音的内容" style="width: 90%;margin-top: 10px;"
|
|
|
- @input="handleInputVideoText(item.value,item)"/>
|
|
|
- </div>
|
|
|
- <div v-if="item.contentType == 8">
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="添加短链" v-if="item.contentType == 1 " >
|
|
|
- <el-tooltip content="请先根据课程选定课程小节之后再添加" effect="dark" :disabled="!!msgForm.videoId">
|
|
|
- <el-switch
|
|
|
- v-model="item.isBindUrl"
|
|
|
- :disabled="!msgForm.videoId"
|
|
|
- active-color="#13ce66"
|
|
|
- inactive-color="#DCDFE6"
|
|
|
- active-value="1"
|
|
|
- inactive-value="2">
|
|
|
- </el-switch>
|
|
|
- </el-tooltip>
|
|
|
-
|
|
|
- <span v-if="item.isBindUrl == '1'" style="margin-left: 10px; color: #13ce66">添加URL</span>
|
|
|
- <span v-if="item.isBindUrl == '2'" style="margin-left: 10px; color: #b1b4ba">不加URL</span>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="课节过期时间" v-if="item.isBindUrl == '1'
|
|
|
+ <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 ">
|
|
|
+
|
|
|
+ <el-form-item label="上传文件:" prop="fileUrl" label-width="100px">
|
|
|
+ <el-upload
|
|
|
+ v-model="item.fileUrl"
|
|
|
+ class="avatar-uploader"
|
|
|
+ :action="uploadUrl"
|
|
|
+ :show-file-list="false"
|
|
|
+ :on-success="(res, file) => handleAvatarSuccessFile(res, file, item)"
|
|
|
+ :before-upload="beforeAvatarUploadFile">
|
|
|
+ <i class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
+ </el-upload>
|
|
|
+ <el-link v-if="item.fileUrl" type="primary" :href="downloadUrl(item.fileUrl)" download>
|
|
|
+ {{item.fileUrl}}
|
|
|
+ </el-link>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div v-if="item.contentType == 6 ">
|
|
|
+ <el-form-item label="上传视频:" prop="videoUrl" label-width="100px">
|
|
|
+ <el-upload
|
|
|
+ v-model="item.videoUrl"
|
|
|
+ class="avatar-uploader"
|
|
|
+ :action="uploadUrl"
|
|
|
+ :show-file-list="false"
|
|
|
+ :on-success="(res, file) => handleAvatarSuccessVideo(res, file, item)"
|
|
|
+ :before-upload="beforeAvatarUploadVideo">
|
|
|
+ <i class="el-icon-plus avatar-uploader-icon"></i>
|
|
|
+ </el-upload>
|
|
|
+ <video v-if="item.videoUrl"
|
|
|
+ :src="item.videoUrl"
|
|
|
+ controls style="width: 200px;height: 100px">
|
|
|
+ </video>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div v-if="item.contentType == 7 ">
|
|
|
+ <el-input
|
|
|
+ v-model="item.value"
|
|
|
+ type="textarea" :rows="3" maxlength="66" show-word-limit
|
|
|
+ placeholder="输入要转为语音的内容" style="width: 90%;margin-top: 10px;"
|
|
|
+ @input="handleInputVideoText(item.value,item)"/>
|
|
|
+ </div>
|
|
|
+ <div v-if="item.contentType == 8">
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="添加短链" v-if="item.contentType == 1 " >
|
|
|
+ <el-tooltip content="请先根据课程选定课程小节之后再添加" effect="dark" :disabled="!!msgForm.videoId">
|
|
|
+ <el-switch
|
|
|
+ v-model="item.isBindUrl"
|
|
|
+ :disabled="!msgForm.videoId"
|
|
|
+ active-color="#13ce66"
|
|
|
+ inactive-color="#DCDFE6"
|
|
|
+ active-value="1"
|
|
|
+ inactive-value="2">
|
|
|
+ </el-switch>
|
|
|
+ </el-tooltip>
|
|
|
+
|
|
|
+ <span v-if="item.isBindUrl == '1'" style="margin-left: 10px; color: #13ce66">添加URL</span>
|
|
|
+ <span v-if="item.isBindUrl == '2'" style="margin-left: 10px; color: #b1b4ba">不加URL</span>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="课节过期时间" v-if="item.isBindUrl == '1'
|
|
|
&& item.contentType != 2
|
|
|
&& item.contentType != 5
|
|
|
&& item.contentType != 6
|
|
|
&& item.contentType != 8"
|
|
|
- style="margin-top: 1%" label-width="100px">
|
|
|
- <el-row>
|
|
|
- <el-input-number v-model="item.expiresDays" :min="1" :max="100" ></el-input-number>
|
|
|
- (天)
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <span class="tip">填写0或不填时,默认为系统配置的默认时间</span>
|
|
|
- </el-row>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1" :offset="1">
|
|
|
- <i class="el-icon-delete" @click="delSetList(index)" style="margin-top: 20px;" v-if="setting.length>1"></i>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- <el-link type="primary" class="el-icon-plus" :underline="false" @click='addSetList()' >添加内容</el-link>
|
|
|
-
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button type="primary" @click="submitMsgForm">确 定</el-button>
|
|
|
- <el-button @click="cancelMsgForm">取 消</el-button>
|
|
|
- </div>
|
|
|
+ style="margin-top: 1%" label-width="100px">
|
|
|
+ <el-row>
|
|
|
+ <el-input-number v-model="item.expiresDays" :min="1" :max="100" ></el-input-number>
|
|
|
+ (天)
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <span class="tip">填写0或不填时,默认为系统配置的默认时间</span>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="1" :offset="1">
|
|
|
+ <i class="el-icon-delete" @click="delSetList(index)" style="margin-top: 20px;" v-if="setting.length>1"></i>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <el-link type="primary" class="el-icon-plus" :underline="false" @click='addSetList()' >添加内容</el-link>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitMsgForm">确 定</el-button>
|
|
|
+ <el-button @click="cancelMsgForm">取 消</el-button>
|
|
|
+ </div>
|
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 添加或修改sopUserLogsInfo对话框 -->
|
|
@@ -396,10 +419,10 @@
|
|
|
<el-form ref="updateLogsInfoFrom" :model="updateLogsInfoFrom" :rules="batchRules" label-width="120px">
|
|
|
<el-form-item label="选择营期时间" prop="paramTime">
|
|
|
<el-date-picker clearable size="small"
|
|
|
- v-model="updateLogsInfoFrom.paramTime"
|
|
|
- type="date"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- placeholder="选择营期时间">
|
|
|
+ v-model="updateLogsInfoFrom.paramTime"
|
|
|
+ type="date"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ placeholder="选择营期时间">
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -422,18 +445,15 @@
|
|
|
<div style="font-size: 20px;margin-top: 20px;margin-bottom: 20px;">
|
|
|
<span class="name-background">{{ item.name }}</span>
|
|
|
</div>
|
|
|
- <!-- 添加外层滚动容器 -->
|
|
|
- <div class="scroll-wrapper">
|
|
|
- <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 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>
|
|
|
|
|
@@ -468,17 +488,16 @@ 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";
|
|
|
-import PaginationMore from "../../../components/PaginationMore/index.vue";
|
|
|
+import PaginationMore from '@/components/PaginationMore/index.vue'
|
|
|
|
|
|
export default {
|
|
|
name: "sopUserLogsInfoDetails",
|
|
|
- components: {PaginationMore, Tip, ImageUpload},
|
|
|
+ components: { PaginationMore, ImageUpload},
|
|
|
data() {
|
|
|
return {
|
|
|
//上传语音的遮罩层
|
|
|
voiceLoading :false,
|
|
|
- uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS",
|
|
|
+ uploadUrl:process.env.VUE_APP_BASE_API+"/common/uploadOSS2",
|
|
|
uploadUrlByVoice:process.env.VUE_APP_BASE_API+"/common/uploadOSSByHOOKVoice",
|
|
|
// 遮罩层
|
|
|
loading: true,
|
|
@@ -522,6 +541,7 @@ export default {
|
|
|
fsUserId: null,
|
|
|
externalUserName: null,
|
|
|
createTime: null,
|
|
|
+ entryTime: null,
|
|
|
},
|
|
|
|
|
|
tagGroupList: [],
|
|
@@ -536,7 +556,7 @@ export default {
|
|
|
|
|
|
queryTagParams:{
|
|
|
pageNum: 1,
|
|
|
- pageSize: 5,
|
|
|
+ pageSize: 10,
|
|
|
total:0,
|
|
|
name:null,
|
|
|
corpId:null,
|
|
@@ -716,21 +736,10 @@ export default {
|
|
|
|
|
|
handleSearchTags(name){
|
|
|
|
|
|
- if (!name){
|
|
|
- return this.$message.error("请输入要搜索的标签")
|
|
|
- }
|
|
|
-
|
|
|
- this.queryTagParams.name=name;
|
|
|
- this.queryTagParams.corpId=this.queryParams.corpId;
|
|
|
-
|
|
|
- searchTags(this.queryTagParams).then(response => {
|
|
|
+ searchTags({name:name,corpId:this.queryParams.corpId}).then(response => {
|
|
|
this.tagGroupList = response.rows;
|
|
|
});
|
|
|
|
|
|
- // searchTags({name:name,corpId:this.queryParams.corpId}).then(response => {
|
|
|
- // this.tagGroupList = response.rows;
|
|
|
- // });
|
|
|
-
|
|
|
},
|
|
|
|
|
|
|
|
@@ -754,7 +763,7 @@ export default {
|
|
|
|
|
|
this.queryTagParams= {
|
|
|
pageNum: 1,
|
|
|
- pageSize: 5,
|
|
|
+ pageSize: 10,
|
|
|
total:0,
|
|
|
name:null,
|
|
|
};
|
|
@@ -1135,8 +1144,8 @@ export default {
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
- * 一键群发
|
|
|
- */
|
|
|
+ * 一键群发
|
|
|
+ */
|
|
|
handleSendMsg(){
|
|
|
this.sendMsgOpen.open=true;
|
|
|
this.sendMsgOpen.ids=this.ids;
|
|
@@ -1162,7 +1171,7 @@ export default {
|
|
|
return this.$message.error("请添加规则")
|
|
|
}
|
|
|
if (this.msgForm.courseId===null || this.msgForm.courseId===''){
|
|
|
- return this.$message.error("课程不能为空")
|
|
|
+ return this.$message.error("课程不能为空")
|
|
|
}
|
|
|
|
|
|
if (this.msgForm.videoId===null || this.msgForm.videoId===''){
|
|
@@ -1278,30 +1287,30 @@ export default {
|
|
|
handleDelete(row) {
|
|
|
const ids = row.id || this.ids;
|
|
|
this.$confirm('是否确认删除sopUserLogsInfo编号为"' + ids + '"的数据项?', "警告", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(function() {
|
|
|
- return delSopUserLogsInfo(ids);
|
|
|
- }).then(() => {
|
|
|
- this.getList();
|
|
|
- this.msgSuccess("删除成功");
|
|
|
- }).catch(() => {});
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(function() {
|
|
|
+ return delSopUserLogsInfo(ids);
|
|
|
+ }).then(() => {
|
|
|
+ this.getList();
|
|
|
+ this.msgSuccess("删除成功");
|
|
|
+ }).catch(() => {});
|
|
|
},
|
|
|
/** 导出按钮操作 */
|
|
|
handleExport() {
|
|
|
const queryParams = this.queryParams;
|
|
|
this.$confirm('是否确认导出所有营期数据项?', "警告", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(() => {
|
|
|
- this.exportLoading = true;
|
|
|
- return exportSopUserLogsInfo(queryParams);
|
|
|
- }).then(response => {
|
|
|
- this.download(response.msg);
|
|
|
- this.exportLoading = false;
|
|
|
- }).catch(() => {});
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(() => {
|
|
|
+ this.exportLoading = true;
|
|
|
+ return exportSopUserLogsInfo(queryParams);
|
|
|
+ }).then(response => {
|
|
|
+ this.download(response.msg);
|
|
|
+ this.exportLoading = false;
|
|
|
+ }).catch(() => {});
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -1351,19 +1360,4 @@ export default {
|
|
|
margin-left: 10px;
|
|
|
vertical-align: bottom;
|
|
|
}
|
|
|
-/* 新增的滚动容器样式(不影响原有样式) */
|
|
|
-.scroll-wrapper {
|
|
|
- max-height: 130px; /* 大约三行的高度 */
|
|
|
- overflow-y: auto; /* 垂直滚动 */
|
|
|
- padding-right: 5px; /* 为滚动条留出空间 */
|
|
|
-}
|
|
|
-
|
|
|
-/* 美化滚动条(可选) */
|
|
|
-.scroll-wrapper::-webkit-scrollbar {
|
|
|
- width: 6px;
|
|
|
-}
|
|
|
-.scroll-wrapper::-webkit-scrollbar-thumb {
|
|
|
- background: rgba(0, 0, 0, 0.2);
|
|
|
- border-radius: 3px;
|
|
|
-}
|
|
|
</style>
|