Browse Source

提交

newStyle
douzhuo 1 year ago
parent
commit
7d677e3c8d
8 changed files with 215 additions and 50 deletions
  1. +22
    -1
      src/api/modules/http.js
  2. +110
    -44
      src/views/Customer/index.vue
  3. +5
    -0
      src/views/Customer/table.js
  4. +39
    -1
      src/views/ReceivingRecords/index.vue
  5. +6
    -0
      src/views/ReceivingRecords/table.js
  6. +19
    -0
      src/views/Template/Pinspeakwords.vue
  7. +12
    -1
      src/views/Template/table.js
  8. +2
    -3
      vue.config.js

+ 22
- 1
src/api/modules/http.js View File

@@ -911,4 +911,25 @@ export function updateRead(params) {
method: 'get', method: 'get',
params params
}) })
}
}


// 获取销讲业务模板
export function marketingBusiness(params) {
return request({
url: 'autoSR/api/customer/marketingBusiness',
method: 'get',
params
})
}


// 检测销讲模板名称是否重复
export function findByRepetitionName(params) {
return request({
url: 'autoSR/template/findByRepetitionName',
method: 'get',
params
})
}


+ 110
- 44
src/views/Customer/index.vue View File

@@ -22,13 +22,13 @@
</div> </div>


<div class="div-labox"> <div class="div-labox">
<div class="labeltext" style="margin-left: 15px;">
<div class="labeltext" style="margin-left: 15px">
<!-- 时间: --> <!-- 时间: -->
<el-select <el-select
v-model="searchForm.timeType" v-model="searchForm.timeType"
@change="houseChange" @change="houseChange"
placeholder="请选择" placeholder="请选择"
style="width: 125px;"
style="width: 125px"
> >
<el-option <el-option
v-for="item in timeTypeList" v-for="item in timeTypeList"
@@ -243,6 +243,26 @@
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<div class="div-labox">
<div class="labeltext">销讲业务:</div>
<el-select
v-model="searchForm.marketingBusiness"
multiple
clearable
filterable
collapse-tags
placeholder="请选择"
class="div-inpbox"
>
<el-option
v-for="item in templateList"
:key="item.id"
:label="item.templateName"
:value="item.id"
>
</el-option>
</el-select>
</div>
</div> </div>
<div class="app-topbox"> <div class="app-topbox">
<div class="div-labox"> <div class="div-labox">
@@ -250,23 +270,33 @@
<el-button type="primary" @click="screen">筛选</el-button> <el-button type="primary" @click="screen">筛选</el-button>
<el-button @click="clearScreen" type="text">清空筛选条件</el-button> <el-button @click="clearScreen" type="text">清空筛选条件</el-button>


<el-button style="margin-left:10px;" @click="isSystoleForm" type="text">{{isOpen?'收起':'展开'}}<i style="margin-left:5px;" :class="isOpen?'el-icon-arrow-up':'el-icon-arrow-down'"></i></el-button>

<el-button
style="margin-left: 10px"
@click="isSystoleForm"
type="text"
>{{ isOpen ? "收起" : "展开"
}}<i
style="margin-left: 5px"
:class="isOpen ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"
></i
></el-button>
</div> </div>
<div style="margin-left: auto; margin-right: 10px"> <div style="margin-left: auto; margin-right: 10px">
<el-button :disabled="isBand" type="primary" @click="transfer" <el-button :disabled="isBand" type="primary" @click="transfer"
>批量转交</el-button >批量转交</el-button
> >
<el-button v-if="cus_index_downLoad" @click="downLoad" icon="el-icon-download">导出</el-button>
<el-button
v-if="cus_index_downLoad"
@click="downLoad"
icon="el-icon-download"
>导出</el-button
>
</div> </div>
</div> </div>
</div> </div>


<!-- 表格 --> <!-- 表格 -->
<div class="cen-tab"> <div class="cen-tab">

<avue-crud <avue-crud
ref="crud" ref="crud"
:page.sync="page" :page.sync="page"
@@ -279,27 +309,34 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
> >
<template slot-scope="{ row }" slot="menu"> <template slot-scope="{ row }" slot="menu">
<el-button @click="toCustomer" type="text" v-if="cus_index_detail">客户详情</el-button>
<el-button
type="text"
@click="Receivedetailsabout(row)"
v-if="cus_index_visit"
>接待详情</el-button
>
<el-button type="text" @click="tranfser(row)" v-if="cus_index_take"
>转交</el-button
>
<el-button @click="toCustomer" type="text" v-if="cus_index_detail"
>客户详情</el-button
>
<el-button
type="text"
@click="Receivedetailsabout(row)"
v-if="cus_index_visit"
>接待详情</el-button
>
<el-button type="text" @click="tranfser(row)" v-if="cus_index_take"
>转交</el-button
>
</template> </template>
</avue-crud> </avue-crud>
</div> </div>


<!-- 提示转义客户 --> <!-- 提示转义客户 -->
<el-dialog title="客户流转" :visible.sync="dialogVisible" width="30%" :center="true">
<el-dialog
title="客户流转"
:visible.sync="dialogVisible"
width="30%"
:center="true"
>
<div> <div>
<span>员工:</span> <span>员工:</span>
<el-select <el-select
v-model="agentId" v-model="agentId"
style="width:86%"
style="width: 86%"
clearable clearable
filterable filterable
placeholder="请选择" placeholder="请选择"
@@ -314,7 +351,16 @@
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<span slot="footer" class="dialog-footer" style="border-top:1px solid #eee;padding-top: 20px;display: flex;justify-content: end;">
<span
slot="footer"
class="dialog-footer"
style="
border-top: 1px solid #eee;
padding-top: 20px;
display: flex;
justify-content: end;
"
>
<el-button <el-button
@click=" @click="
dialogVisible = false; dialogVisible = false;
@@ -334,7 +380,6 @@ import { exportMethodPost } from "@/util/util";
export default { export default {
data() { data() {
return { return {
tableIdName: "CustomerIndex", // 当前页面需要的变量 tableIdName: "CustomerIndex", // 当前页面需要的变量
tableOption: this.$tableOption.CustomerIndex, // 当前table配置项 tableOption: this.$tableOption.CustomerIndex, // 当前table配置项
tableLoading: false, // 是否显示加载中 tableLoading: false, // 是否显示加载中
@@ -345,8 +390,7 @@ export default {
pageSize: 10, // 每页显示多少条 pageSize: 10, // 每页显示多少条
}, },



isOpen:false,
isOpen: false,
TimetoAhoose: 2, TimetoAhoose: 2,
time: [], time: [],
houseList: [], houseList: [],
@@ -490,6 +534,7 @@ export default {
clientStage: "", clientStage: "",
orderBy: "", orderBy: "",
sensitiveWords: [], sensitiveWords: [],
marketingBusiness: [],
}, },
clientStagelist: [], clientStagelist: [],
sensitiveList: [], //违禁词 sensitiveList: [], //违禁词
@@ -499,6 +544,8 @@ export default {
isBand: true, // 批量转交按钮状态 isBand: true, // 批量转交按钮状态
selectMoreIds: "", // 多选客户id selectMoreIds: "", // 多选客户id
agentId: "", // 移交员工的id agentId: "", // 移交员工的id

templateList: [], // 销讲业务列表
}; };
}, },
computed: { computed: {
@@ -528,7 +575,18 @@ export default {
this.zkhousePage(); this.zkhousePage();
}, },
methods: { methods: {
// 获取销讲业务
getMarketingBusiness() {
this.$api.http
.marketingBusiness({ houseId: this.searchForm.projectId })
.then((res) => {
console.log(res);
if (res.code == 10000) {
this.templateList = res.data;
}
});
},

// 获取当前页面的显隐 // 获取当前页面的显隐
setTableOption() { setTableOption() {
this.$db.getDataByKey(this.tableIdName).then((res) => { this.$db.getDataByKey(this.tableIdName).then((res) => {
@@ -537,11 +595,11 @@ export default {
} }
}); });
}, },
isSystoleForm(){
this.isOpen = !this.isOpen
isSystoleForm() {
this.isOpen = !this.isOpen;
}, },
toCustomer() { toCustomer() {
this.$router.push('/Customer/CustomerDetail')
this.$router.push("/Customer/CustomerDetail");
}, },
// 批量转交按钮点击事件 // 批量转交按钮点击事件
transfer() { transfer() {
@@ -561,12 +619,12 @@ export default {
tranfser(row) { tranfser(row) {
console.log(row); console.log(row);
this.dialogVisible = true; this.dialogVisible = true;
this.selectMoreIds = row.id;
this.selectMoreIds = row.id;
}, },


// 转移客户至其他顾问 // 转移客户至其他顾问
theCirculation(query) { theCirculation(query) {
console.log(query)
console.log(query);
this.$api.http.theCirculation(query).then((res) => { this.$api.http.theCirculation(query).then((res) => {
if (res.code == 0) { if (res.code == 0) {
this.$message({ this.$message({
@@ -632,8 +690,9 @@ export default {
size: this.page.pageSize, size: this.page.pageSize,
...this.searchForm, ...this.searchForm,
}; };
obj.marketingBusiness = obj.marketingBusiness.join(',')
obj.keywordIds = obj.keywordsId.join(","); obj.keywordIds = obj.keywordsId.join(",");
console.log(obj, '入参')
console.log(obj, "入参");
obj.sensitiveWords = JSON.stringify(obj.sensitiveWords); obj.sensitiveWords = JSON.stringify(obj.sensitiveWords);
(obj.dateType = this.searchForm.staDate (obj.dateType = this.searchForm.staDate
? null ? null
@@ -642,7 +701,7 @@ export default {
// console.log(res) // console.log(res)
this.tableData = res.data.records; this.tableData = res.data.records;
this.page.total = res.data.total; this.page.total = res.data.total;
// 表格中设置ref属性,在数据渲染之后或者updated()之后 // 表格中设置ref属性,在数据渲染之后或者updated()之后
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.crud.doLayout(); this.$refs.crud.doLayout();
@@ -662,6 +721,7 @@ export default {
endDate: "", endDate: "",
dateType: null, dateType: null,
searchForm: "", searchForm: "",
marketingBusiness: [],
timeType: "0", timeType: "0",
orderBy: "", orderBy: "",
sensitiveWords: [], sensitiveWords: [],
@@ -675,6 +735,9 @@ export default {
houseChange() { houseChange() {
this.searchForm.sensitiveWords = []; this.searchForm.sensitiveWords = [];
this.searchForm.keywordsId = []; this.searchForm.keywordsId = [];
this.searchForm.marketingBusiness = [];
// 获取销讲业务
this.getMarketingBusiness();
this.findbypage(); this.findbypage();
this.findKeywords(); this.findKeywords();
// 获取置业顾问列表 // 获取置业顾问列表
@@ -738,6 +801,9 @@ export default {
this.searchForm.projectId = res.data[0].id; this.searchForm.projectId = res.data[0].id;
} }
this.houseChange(); this.houseChange();

// 获取销讲业务
this.getMarketingBusiness();
}); });
}, },
// 置业顾问列表 // 置业顾问列表
@@ -854,27 +920,27 @@ export default {
color: #ffffff; color: #ffffff;
background: #2671e2; background: #2671e2;
} }
/deep/ .el-table__header-wrapper{
thead{
tr{
th{
background: #F5F7FA;
/deep/ .el-table__header-wrapper {
thead {
tr {
th {
background: #f5f7fa;
color: #333333; color: #333333;
} }
} }
} }
} }
/deep/ .el-dialog--center{
/deep/ .el-dialog--center {
border-radius: 8px; border-radius: 8px;
.el-dialog__title{
.el-dialog__title {
font-weight: bold; font-weight: bold;
} }
} }
/deep/ .el-button--primary{
background: #2671E2 !important;
border: 1px solid #2671E2 !important;
/deep/ .el-button--primary {
background: #2671e2 !important;
border: 1px solid #2671e2 !important;
} }
/deep/ .el-button--text{
color: #2671E2;
/deep/ .el-button--text {
color: #2671e2;
} }
</style> </style>

+ 5
- 0
src/views/Customer/table.js View File

@@ -284,6 +284,11 @@ export default {
prop: "mm", prop: "mm",
width: '100px', width: '100px',
}, },
{
label: "销讲业务",
prop: "marketingBusinessName",
width: '100px',
},
{ {
sortable: true, sortable: true,
label: "销讲执行率", label: "销讲执行率",


+ 39
- 1
src/views/ReceivingRecords/index.vue View File

@@ -257,6 +257,26 @@
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
<div class="div-lab">
<div class="label">销讲业务:</div>
<el-select
v-model="searchForm.marketingBusiness"
multiple
clearable
filterable
collapse-tags
placeholder="请选择"
class="div-inpbox"
>
<el-option
v-for="item in templateList"
:key="item.id"
:label="item.templateName"
:value="item.id"
>
</el-option>
</el-select>
</div>
</div> </div>


<div class="app-titel" style="margin-top: 15px"> <div class="app-titel" style="margin-top: 15px">
@@ -473,11 +493,14 @@ export default {
taboo: "", taboo: "",
zfal: "", // 正反案例 0:正面案例 1:反面案例 zfal: "", // 正反案例 0:正面案例 1:反面案例
validInvalid: "", // 是否为有效接待 0:有效 1:无效 validInvalid: "", // 是否为有效接待 0:有效 1:无效
marketingBusiness: [],
}, },
rec_index_show: false, // 按钮权限 rec_index_show: false, // 按钮权限
rec_index_text: false, // 按钮权限 rec_index_text: false, // 按钮权限
rec_index_voice: false, // 按钮权限 rec_index_voice: false, // 按钮权限
rec_index_downLoad: false, // 按钮权限 rec_index_downLoad: false, // 按钮权限

templateList: [], // 销讲业务列表
}; };
}, },
computed: { computed: {
@@ -599,6 +622,17 @@ export default {
}, },


methods: { methods: {
// 获取销讲业务
getMarketingBusiness() {
this.$api.http
.marketingBusiness({ houseId: this.searchForm.projectId })
.then((res) => {
console.log(res);
if (res.code == 10000) {
this.templateList = res.data;
}
});
},
// 获取当前页面的显隐 // 获取当前页面的显隐
setTableOption() { setTableOption() {
this.$db.getDataByKey(this.tableIdName).then((res) => { this.$db.getDataByKey(this.tableIdName).then((res) => {
@@ -660,6 +694,7 @@ export default {
obj.projectId = this.$route.query.houseId; obj.projectId = this.$route.query.houseId;
} }
obj.keywordIds = obj.keywordsId.join(","); obj.keywordIds = obj.keywordsId.join(",");
obj.marketingBusiness = obj.marketingBusiness.join(',')
obj.dateType = this.searchForm.staDate ? null : this.searchForm.dateType; obj.dateType = this.searchForm.staDate ? null : this.searchForm.dateType;
this.$api.api.findbypage(obj).then((res) => { this.$api.api.findbypage(obj).then((res) => {
console.log(res); console.log(res);
@@ -685,6 +720,7 @@ export default {
houseType: "", houseType: "",
dateType: null, dateType: null,
taboo: "", taboo: "",
marketingBusiness: [],
zfal: "", zfal: "",
// projectId: this.houseList[0].id, // projectId: this.houseList[0].id,
projectId: projectId:
@@ -754,6 +790,9 @@ export default {
this.searchForm.projectId = res.data[0].id; this.searchForm.projectId = res.data[0].id;
} }
this.houseChange(); this.houseChange();

// 获取销讲业务
this.getMarketingBusiness();
}); });
}, },
// 置业顾问列表 // 置业顾问列表
@@ -817,7 +856,6 @@ export default {
} }
}, },


showColumn(nowV) { showColumn(nowV) {
let params = { let params = {
tableIdName: this.tableIdName, tableIdName: this.tableIdName,


+ 6
- 0
src/views/ReceivingRecords/table.js View File

@@ -59,10 +59,16 @@ export default {
} }
}, },


{
label: "销讲业务",
prop: "marketingBusinessName",
},

{ {
sortable: true, sortable: true,
label: "画像标签触达次数", label: "画像标签触达次数",
prop: "total", prop: "total",
width: '150px',
}, },


{ {


+ 19
- 0
src/views/Template/Pinspeakwords.vue View File

@@ -204,6 +204,7 @@
maxlength="16" maxlength="16"
show-word-limit show-word-limit
clearable clearable
@blur="findByRepetitionName"
> >
</el-input> </el-input>
</div> </div>
@@ -429,6 +430,22 @@ export default {
}, },
}, },
methods: { methods: {
// 检测模板名称
findByRepetitionName() {
this.$api.http
.findByRepetitionName({
name: this.inparams.templateName,
houseId: this.houseId,
})
.then((res) => {
if (res.code != 0) {
this.$message({
message: res.msg,
type: "warning",
});
}
});
},
// 项目选择 // 项目选择
selectChange(e) { selectChange(e) {
this.houseId = e; this.houseId = e;
@@ -515,11 +532,13 @@ export default {
tempId: this.Templateid, tempId: this.Templateid,
}; };
this.$api.http.templatedelfindByTempId(parmest).then((res) => { this.$api.http.templatedelfindByTempId(parmest).then((res) => {
console.log(res.data, "res.data");
this.houseId = res.data.houseId; this.houseId = res.data.houseId;
this.checklist = res.data.list; this.checklist = res.data.list;
this.nodelist = res.data.list; this.nodelist = res.data.list;
this.inparams.templateName = res.data.templateName; this.inparams.templateName = res.data.templateName;
this.inparams.defaultTemplate = res.data.defaultTemplate; this.inparams.defaultTemplate = res.data.defaultTemplate;
console.log(this.inparams);
this.getHouse2(); this.getHouse2();
this.checklist.forEach((item) => { this.checklist.forEach((item) => {
this.rateMap.set(item.id, item.fraction); // map维护分数 this.rateMap.set(item.id, item.fraction); // map维护分数


+ 12
- 1
src/views/Template/table.js View File

@@ -30,11 +30,22 @@ export default {
if(data.status == 1) return '停用' if(data.status == 1) return '停用'
} }
}, },
{
label: "模板名称",
prop: "templateName",
},
{
label: "默认话术",
prop: "defaultTemplate",
formatter: (data) => {
if(data.defaultTemplate == 0) return '是'
if(data.defaultTemplate == 1) return '否'
}
},
{ {
label: "大类个数", label: "大类个数",
prop: "count", prop: "count",
}, },
{ {
label: "创建时间", label: "创建时间",
prop: "createTime", prop: "createTime",


+ 2
- 3
vue.config.js View File

@@ -3,13 +3,12 @@
* https://cli.vuejs.org/zh/config/ * https://cli.vuejs.org/zh/config/
*/ */
// const url = 'http://192.168.31.160:9999' //长龙 // const url = 'http://192.168.31.160:9999' //长龙
// const url = 'http://192.168.31.149:9999' // 胜浩
const url = 'http://192.168.31.85:9999' // 胜浩
// const url = 'http://127.0.0.1:9999' // 本地 // const url = 'http://127.0.0.1:9999' // 本地


const url = 'http://39.97.244.65:9999' // 测试服务器
// const url = 'http://39.97.244.65:9999' // 测试服务器


// const url = 'http://62.234.122.43:9999' //正式服务器1 // const url = 'http://62.234.122.43:9999' //正式服务器1
// const url = 'http://82.156.35.22:9999' // 正式服务器2
// const url = 'https://www.aihxz.com' // 正式域名 // const url = 'https://www.aihxz.com' // 正式域名
const CompressionWebpackPlugin = require('compression-webpack-plugin') const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css'] const productionGzipExtensions = ['js', 'css']


Loading…
Cancel
Save