Selaa lähdekoodia

init

newStyle
lancer 3 vuotta sitten
vanhempi
commit
88460c4ff4
6 muutettua tiedostoa jossa 1163 lisäystä ja 312 poistoa
  1. +45
    -0
      src/api/modules/api.js
  2. +228
    -39
      src/page/wel.vue
  3. +283
    -0
      src/views/Customer/SalesStage.vue
  4. +425
    -212
      src/views/Customer/index.vue
  5. +6
    -6
      src/views/Receive/index.vue
  6. +176
    -55
      src/views/ReceivingRecords/index.vue

+ 45
- 0
src/api/modules/api.js Näytä tiedosto

@@ -411,6 +411,15 @@ export function findKeywords(query) {
})
}

// 置业顾问
export function findUserListByHouseId(query) {
return request({
url: 'autoSR/cushouseuserrelationmid/findUserListByHouseId',
method:'get',
params:query
})
}

// 常错词列表
export function correctFindbypage(query) {
return request({
@@ -435,3 +444,39 @@ export function correctUpdate(query) {
params:query
})
}

//
// 客户管理客户裂变
export function customerManagement(query) {
return request({
url: '/autoSR/customer/customerManagement',
method:'get',
params:query
})
}

// 销售阶段列表
export function lifeTrackDefineList(query) {
return request({
url: '/autoSR/lifeTrackDefine/list',
method:'get',
params:query
})
}
// 修改
export function lifeTrackDefineUpdate(data) {
return request({
url: '/autoSR/lifeTrackDefine/update',
method:'post',
data
})
}
// 添加
export function lifeTrackDefineAdd(data) {
return request({
url: '/autoSR/lifeTrackDefine/add',
method:'post',
data
})
}


+ 228
- 39
src/page/wel.vue Näytä tiedosto

@@ -1,5 +1,26 @@
<template>
<div class="box-center">
<div class="app-titel">
<div class="titel-text">时间</div>
<div class="toptimeqhuan">
<div :class="{ tophove: TimetoAhoose == 0 }" @click="tabtimetap(0)">近7天</div>
<div :class="{ tophove: TimetoAhoose == 1 }" @click="tabtimetap(1)"> 近15天 </div>
<div :class="{ tophove: TimetoAhoose == 2 }" @click="tabtimetap(2)"> 近30天 </div>
</div>
<div style="margin-left: 26px">
<el-date-picker
@change="confirmtime()"
v-model="customtime"
type="daterange"
range-separator="-"
:default-time="['00:00:00', '23:59:59']"
value-format="yyyy-MM-dd"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</div>
<!-- 卡片部分 -->
<div class="page-container">
<div class="pagechen">
@@ -7,7 +28,7 @@
<div class="pageboxtitle2">
<div class="span1">5020</div>
<div class="span2">
<span class="span2-1"> 昨日:288</span>
<span class="span2-1"> 环比:288</span>
<span class="span2-2">25%</span>
</div>
</div>
@@ -43,7 +64,7 @@
<div class="pageboxtitle2">
<div class="span1">5020</div>
<div class="span2">
<span class="span2-1"> 昨日:288</span>
<span class="span2-1"> 环比:288</span>
<span class="span2-2">25%</span>
</div>
</div>
@@ -53,7 +74,7 @@
<div class="pageboxtitle2">
<div class="span1">20</div>
<div class="span2">
<span class="span2-1"> 昨日:288</span>
<span class="span2-1"> 环比:288</span>
<span class="span2-2">25%</span>
</div>
</div>
@@ -63,7 +84,7 @@
<div class="pageboxtitle2">
<div class="span1">50</div>
<div class="span2">
<span class="span2-1"> 昨日:288</span>
<span class="span2-1"> 环比:288</span>
<span class="span2-2">25%</span>
</div>
</div>
@@ -73,7 +94,7 @@
<div class="pageboxtitle2">
<div class="span1">80</div>
<div class="span2">
<span class="span2-1"> 昨日:288</span>
<span class="span2-1"> 环比:288</span>
<span class="span2-2">25%</span>
</div>
</div>
@@ -85,41 +106,113 @@
</div>
</div>
</div>
<!-- 列表部分 -->
<div class="table-box">
<div class="title">急需充电的工牌</div>
<div class="tabbox">
<el-table
:header-cell-style="{background:'#F2F4F5'}"
:data="tableData"
height="300"
style="width: 100%">
<el-table-column
prop="name"
label="顾问"
align="center">
</el-table-column>

<el-table-column
prop="num"
label="电话"
align="center">
</el-table-column>

<el-table-column
prop="address"
label="状态"
align="center">
</el-table-column>
<div class="app-box-san">
<div class="zuo">
<div class="title">
<div class="text1">违禁提醒</div>
</div>

<div class="tabbox">
<el-table
:header-cell-style="{background:'#F2F4F5'}"
:data="tableData"
height="320"
style="width: 100%">
<el-table-column
prop="name"
label="顾问"
align="center">
</el-table-column>

<el-table-column
prop="num"
label="禁忌执行率"
align="center">
</el-table-column>

<el-table-column
prop="address"
label="接待时间"
align="center">
</el-table-column>

<el-table-column
prop="date"
label="操作"
align="center">
<template slot-scope="">
<div style="color: #2671E2;">查看</div>
</template>
</el-table-column>
</el-table>
</div>

<el-table-column
prop="date"
label="电量"
align="center">
</el-table-column>
</el-table>
</div>
</div>
<div class="you">
<div class="title">
<div class="text1" @click="tabclick('1')" :class="{ colostyle: classatec == 1 }">低电工牌</div>
<div class="text1" @click="tabclick('2')" :class="{ colostyle: classatec == 2 }">离线工牌</div>
</div>
<div class="tabbox" v-if="classatec==1">
<el-table
:header-cell-style="{background:'#F2F4F5'}"
:data="tableData"
height="320"
style="width: 100%">
<el-table-column
prop="name"
label="顾问"
align="center">
</el-table-column>

<el-table-column
prop="num"
label="电话"
align="center">
</el-table-column>

<el-table-column
prop="address"
label="状态"
align="center">
</el-table-column>

<el-table-column
prop="date"
label="电量"
align="center">
</el-table-column>
</el-table>
</div>
<div class="tabbox" v-if="classatec==2">
<el-table
:header-cell-style="{background:'#F2F4F5'}"
:data="tableData"
height="320"
style="width: 100%">
<el-table-column
prop="name"
label="顾问"
align="center">
</el-table-column>

<el-table-column
prop="num"
label="电话"
align="center">
</el-table-column>

<el-table-column
prop="address"
label="离线时间"
align="center">
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</template>

@@ -128,6 +221,9 @@ export default {
name: 'Wel',
data() {
return {
classatec:1,
customtime:[],
TimetoAhoose:0,
tableData: [
{
date: '80%',
@@ -211,8 +307,15 @@ export default {
}
},
methods: {


tabclick(i){
this.classatec=i;
},
tabtimetap(i){
this.TimetoAhoose=i
},
confirmtime() {
console.log(this.customtime)
},
}
}
</script>
@@ -227,6 +330,7 @@ export default {
.page-container{
width: 100%;
display: flex;
margin-top: 16px;
.pagechen{
flex: 1;
min-width: 223px;
@@ -273,6 +377,9 @@ export default {
}
}
}
.colostyle{
color: red;
}
.table-box{
width:98.8%;
height: 400px;
@@ -287,7 +394,7 @@ export default {
text-indent: 30px;
font-weight: 500;
color: #32363D;
border-bottom: 1px solid #E6E6E6;
// border-bottom: 1px solid #E6E6E6;
}
.tabbox{
padding-left: 30px;
@@ -301,4 +408,86 @@ export default {
margin-bottom: 0;
}
}


.app-box-san{
width: 100%;
height: 400px;
display: flex;
margin-top: 15px;
.zuo{
// flex: 1;
height: 100%;
margin-right: 15px;
background: #FFFFFF;
border-radius: 4px;
width: 48.7%;
.title{
width: 100%;
height: 55px;
// border-bottom: 1px solid #E0E0E0;
display: flex;
align-content: center;
.text1{
flex: 2;
line-height: 55px;
text-indent: 20px;
font-weight: 500;
font-size: 16px;
}
}
}
.you{
height: 100%;
width: 49%;
background: #FFFFFF;
border-radius: 4px;
.title{
width: 100%;
height: 55px;
// border-bottom: 1px solid #E0E0E0;
display: flex;
align-content: center;
.text1{
line-height: 55px;
text-indent: 20px;
font-weight: 500;
font-size: 16px;
}
}
}
}

.tophove {
color: #ffffff;
background: #2671e2;
}
.app-titel {
width: 100%;
display: flex;
align-items: center;
.titel-text {
height: 100%;
font-size: 16px;
color: #32363d;
}
.toptimeqhuan {
width: 190px;
height: 32px;
background: #ffffff;
border-radius: 4px;
border: 1px solid #e0e0e0;
display: flex;
align-items: center;
overflow: hidden;
margin-left: 20px;
cursor: pointer;
}
.toptimeqhuan div {
flex: 1;
text-align: center;
line-height: 32px;
font-size: 14px;
}
}
</style>

+ 283
- 0
src/views/Customer/SalesStage.vue Näytä tiedosto

@@ -0,0 +1,283 @@
<template>
<div class="box-center">
<!-- 头 -->
<div class="app-top">
<div class="app-titel">
<div
class="label"
style="color: #32363d; font-weight: 400; font-size: 16px"
>
楼盘选择:
</div>
<div>
<el-select
v-model="houseId"
@change="houseChange"
placeholder="请选择"
>
<el-option
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id"
>
</el-option>
</el-select>
</div>
<div style="margin-left: 20px">
<el-button
@click="infoadd()"
style="background: #2671e2; color: #ffffff"
>新增</el-button
>
</div>
</div>
</div>
<!-- 表格 -->
<div class="cen-tab">
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column prop="houseName" label="楼盘名称" align="center">
</el-table-column>
<el-table-column prop="stageName" label="阶段名称" align="center">
</el-table-column>
<el-table-column prop="sort" label="顺序" align="center">
</el-table-column>
<el-table-column prop="remarks" label="备注" align="center">
</el-table-column>

<el-table-column label="操作" align="center" width="150">
<template slot-scope="{ row }">
<el-button type="text" @click="edit(row)">编辑</el-button>
<el-button type="text" @click="toinifodelete(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>

<el-dialog title="新增阶段" :visible.sync="dialogVisible" @close="clear">
<el-form
:model="ruleForm"
label-position="labelPosition"
:rules="rules"
ref="ruleForm"
label-width="140px"
style="width: 60%; margin: 0 auto"
>
<el-form-item label="阶段名称:" prop="stageName">
<el-input v-model="ruleForm.stageName"></el-input>
</el-form-item>
<el-form-item label="顺序:" prop="sort">
<el-input v-model="ruleForm.sort"></el-input>
</el-form-item>
<el-form-item label="备注:">
<el-input v-model="ruleForm.remarks"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="addSure()">保存</el-button>
</div>
</el-dialog>
</div>
</template>

<script>
export default {
data() {
return {
houseId: "",
houseList: [],
ruleForm: {
stageName: "", // 公司名称
sort: "", // 联系人
remarks: "", // 联系人手机号
},
rules: {
stageName: [
{ required: true, message: "请输入阶段名称:", trigger: "blur" },
],
sort: [{ required: true, message: "请输入顺序", trigger: "blur" }],
},
tableData: [],
dialogVisible: false,
editFlag: false,
options: [],
value: "",
};
},
mounted() {
// 获取楼盘列表
this.zkhousePage();
},
methods: {
houseChange() {
this.findbypage();
},
clear() {
this.ruleForm = {
stageName: "", // 公司名称
sort: "", // 联系人
remarks: "", // 联系人手机号
};
},
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
// console.log(res)
this.houseList = res.data;
this.houseId = res.data[0].id;
// 获取列表
this.findbypage();
});
},
findbypage() {
let obj = {
// current: this.currentPage,
// size: this.size,
houseId: this.houseId,
};
this.$api.api.lifeTrackDefineList(obj).then((res) => {
// console.log(res)
this.tableData = res.data;
// this.total = res.data.total;
});
},
//删除
toinifodelete(item) {
this.$confirm("此操作将永久删除, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
axios({
url: `/autoSR/lifeTrackDefine/del`,
method: "post",
data: {
id: row.id,
},
}).then((res) => {
if (res.code == 0) {
this.$message({
type: "success",
message: "删除成功!",
});
this.findbypage();
} else {
this.$message.error(res.message);
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消删除",
});
});
},
//新增
infoadd() {
this.editFlag = false;
this.dialogVisible = true;
},
edit(row) {
console.log(row);
// console.log(this.time)
this.ruleForm = Object.assign({}, row);
// 获取地区选择数据,在这里对回显的时候进行操作,首先先获取一级省的数据
this.editFlag = true;
this.dialogVisible = true;
},
addSure() {
// console.log(this.addressOptions)
this.$refs.ruleForm.validate((valid) => {
if (valid) {
console.log(this.ruleForm);
// 编辑
if (this.editFlag) {
console.log("编辑");
this.$api.api.lifeTrackDefineUpdate(this.ruleForm).then((res) => {
console.log(res);
if (res.code == 0) {
this.dialogVisible = false;
this.$message.success("编辑成功");
this.zkhousePage();
}
});
} else {
// 添加
console.log("添加");
this.$api.api.lifeTrackDefineAdd(this.ruleForm).then((res) => {
console.log(res);
if (res.code == 0) {
this.dialogVisible = false;
this.$message.success("新增成功");
this.zkhousePage();
}
});
}
}
});
},
},
};
</script>

<style scoped="scoped" lang="scss" >
.box-center {
width: 100%;
padding: 15px;
min-width: 1200px;
padding-bottom: 100px;
}
.cen-tab {
width: 100%;
padding: 15px;
min-height: 400px;
background: #ffffff;
margin-top: 15px;
}
.tophove {
color: #ffffff;
background: #2671e2;
}
.app-top {
width: 100%;
background: #ffffff;
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04);
border-radius: 4px;
padding-top: 15px;
padding-bottom: 15px;
.app-titel {
width: 100%;
display: flex;
align-items: center;
.label {
font-size: 14px;
font-weight: 400;
color: #32363d;
line-height: 14px;
margin-left: 15px;
}
.toptimeqhuan {
height: 30px;
background: #ffffff;
display: flex;
align-items: center;
}
.toptimeqhuan div {
padding-left: 20px;
padding-right: 20px;
text-align: center;
line-height: 30px;
font-size: 14px;
margin-right: 15px;
border-radius: 4px;
border: 1px solid #e0e0e0;
}
}
}
</style>

+ 425
- 212
src/views/Customer/index.vue Näytä tiedosto

@@ -1,14 +1,41 @@
<template>

<div class="box-center">
<!-- 头 -->
<div class="app-top">
<div class="app-titel">
<div class="label" style="color: #32363D;font-weight: 400;font-size: 16px;">楼盘选择:</div>
<div class="app-titel">
<div
class="label"
style="color: #32363d; font-weight: 400; font-size: 16px"
>
楼盘选择:
</div>
<div>
<el-select v-model="value" placeholder="请选择">
<el-select
v-model="searchForm.projectId"
@change="houseChange"
placeholder="请选择"
>
<el-option
v-for="item in options"
v-for="item in houseList"
:key="item.id"
:label="item.propertyName"
:value="item.id"
>
</el-option>
</el-select>
</div>
</div>
<div class="app-titel" style="margin-top: 15px">
<div class="label" style="margin-left: 20px; margin-right: 20px">
<!-- 时间: -->
<el-select
v-model="searchForm.timeType"
@change="houseChange"
placeholder="请选择"
style="width: 125px"
>
<el-option
v-for="item in timeTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -16,53 +43,95 @@
</el-option>
</el-select>
</div>
</div>
<div class="app-titel" style="margin-top: 15px">
<div class="label">最近接待:</div>
<div class="toptimeqhuan">
<div :class="{ tophove: TimetoAhoose == 0 }" @click="tabtimetap(0)">
全部
<div
:class="{ tophove: searchForm.dateType == 0 }"
@click="tabtimetap(0)"
>
今日
</div>
<div :class="{ tophove: TimetoAhoose == 1 }" @click="tabtimetap(1)">
15天内
<div
:class="{ tophove: searchForm.dateType == 2 }"
@click="tabtimetap(2)"
>
近7天
</div>
<div :class="{ tophove: TimetoAhoose == 2 }" @click="tabtimetap(2)">
30天内
<div
:class="{ tophove: searchForm.dateType == 6 }"
@click="tabtimetap(6)"
>
近30天
</div>
</div>
<div>
<el-date-picker
v-model="value1"
<el-date-picker
v-model="time"
type="daterange"
range-separator="至"
class="div-inp"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期">
:default-time="['00:00:00', '23:59:59']"
value-format="yyyy-MM-dd"
end-placeholder="结束日期"
@change="timeChange"
>
</el-date-picker>
</div>
</div>

<div class="app-titel" style="margin-top: 15px">
<div class="label">客户名称:</div>
<div>
<el-input v-model="value"></el-input>
<div class="div-lab">
<div class="label">客户名称:</div>
<el-input class="div-inp" v-model="searchForm.name"></el-input>
</div>
<div class="label">客户画像:</div>
<div >
<el-select v-model="value" placeholder="请选择">

<div class="div-lab">
<div class="label">置业顾问:</div>
<el-select
v-model="searchForm.accountId"
clearable
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in accountList"
:key="item.accountId"
:label="item.name"
:value="item.accountId"
>
</el-option>
</el-select>
</div>
<div class="label">客户等级:</div>
<div>
<el-select v-model="value" placeholder="请选择">
<div class="div-lab">
<div class="label">画像标签:</div>
<el-select
class="div-inp"
multiple
clearable
collapse-tags
v-model="searchForm.keywordsId"
placeholder="请选择"
>
<el-option
v-for="item in keywordsList"
:key="item.keywordsId"
:label="item.name"
:value="item.keywordsId"
>
</el-option>
</el-select>
</div>

<div class="div-lab">
<div class="label">客户等级:</div>
<el-select
v-model="searchForm.level"
clearable
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options2"
v-for="item in levelList"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -70,14 +139,17 @@
</el-option>
</el-select>
</div>
</div>

<div class="app-titel" style="margin-top: 15px">
<div class="label">置业顾问:</div>
<div>
<el-select v-model="value" placeholder="请选择">
<div class="div-lab">
<!-- 默认全部 -->
<div class="label">客户阶段:</div>
<el-select
v-model="searchForm.markAdvisor"
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options"
v-for="item in options5"
:key="item.value"
:label="item.label"
:value="item.value"
@@ -85,9 +157,15 @@
</el-option>
</el-select>
</div>
<div class="label">接待时长:</div>
<div >
<el-select v-model="value" placeholder="请选择">

<div class="div-lab">
<div class="label">接待时长:</div>
<el-select
clearable
v-model="searchForm.recDurationInterval"
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options3"
:key="item.value"
@@ -97,9 +175,15 @@
</el-option>
</el-select>
</div>
<div class="label">到访次数:</div>
<div>
<el-select v-model="value" placeholder="请选择">

<div class="div-lab">
<div class="label">到访次数:</div>
<el-select
v-model="searchForm.visitRecord"
clearable
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options4"
:key="item.value"
@@ -111,113 +195,112 @@
</div>
</div>

<div class="app-titel" style="margin-top: 15px"></div>

<div class="app-titel" style="margin-top: 15px">
<div class="label" style="color: #ffffff">筛选相关:</div>
<div>
<el-button style="background: #2671e2; color: #ffffff"
>批量转交</el-button
>
</div>
<div style="margin-left: 20px">
<el-button style="background: #2671e2; color: #ffffff"
<el-button style="background: #2671e2; color: #ffffff" @click="screen"
>筛选</el-button
>
</div>
<div style="margin-left: 20px">
<el-button>清空筛选条件</el-button>
<el-button @click="clearScreen">清空筛选条件</el-button>
</div>
</div>
</div>

<!-- 表格 -->
<div class="cen-tab">
<el-table
:data="tableData"
stripe
height="400"
@selection-change="handleSelectionChange"
style="width: 100%">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column
prop="date"
label="客户"
align="center"
>
</el-table-column>
<el-table-column
prop="name"
label="联系电话"
align="center"
>
</el-table-column>
<el-table-column
prop="address"
label="销售顾问"
align="center">
</el-table-column>

<el-table-column
prop="date"
label="客户等级"
align="center"
>
</el-table-column>
<el-table-column
prop="name"
label="客户阶段"
align="center"
>
</el-table-column>
<el-table-column
prop="address"
label="到访次数"
align="center">
</el-table-column>

<el-table-column
prop="date"
label="接待时长"
align="center"
>
</el-table-column>
<el-table-column
prop="name"
label="销讲执行率"
align="center"
>
</el-table-column>
<el-table-column
prop="address"
label="添加时间"
align="center">
</el-table-column>
<el-table-column
prop="address"
label="最近到访时间"
align="center">
</el-table-column>
<!-- scope -->
<el-table-column label="操作" align="center">
<template slot-scope="">
<div style="color: #2671E2;">详情</div>
<div style="color: #2671E2;">转交</div>
</template>
</el-table-column>
</el-table>
<div style="display: flex;justify-content:flex-end;margin-top: 10px;">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400">
</el-pagination>
</div>
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column type="index" label="序号" align="center">
</el-table-column>
<el-table-column prop="name" label="客户" align="center">
</el-table-column>
<el-table-column
prop="phone"
label="联系电话"
width="150"
align="center"
>
</el-table-column>
<el-table-column prop="agentName" label="销售顾问" align="center">
</el-table-column>
<el-table-column prop="level" label="客户等级" align="center">
<template slot-scope="{ row }">
{{
row.level == 1
? "A"
: row.level == 2
? "B"
: row.level == 3
? "C"
: row.level == 4
? "D"
: ""
}}
</template>
</el-table-column>
<el-table-column prop="recording" label="客户阶段" align="center">
<template slot-scope="{ row }">
{{
row.recording == 0
? "没有录音"
: row.recording == 1
? "部分录音"
: "完整录音"
}}
</template>
</el-table-column>
<el-table-column prop="visitRecord" label="到访次数" align="center">
<template slot-scope="{ row }">
{{ row.visitRecord || "0" }}
</template>
</el-table-column>
<el-table-column prop="mm" label="接待时长" align="center">
</el-table-column>
<el-table-column prop="fraction" label="销奖执行率" align="center">
<template slot-scope="{ row }"> {{ row.fraction || "0" }}% </template>
</el-table-column>
<el-table-column
prop="createTime"
label="添加时间"
width="200"
align="center"
>
</el-table-column>
<el-table-column
prop="endAssignedTime"
label="最近到访时间"
width="200"
align="center"
>
<template slot-scope="{ row }">
{{ row.endAssignedTime || "暂无" }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="250" fixed="right">
<template slot-scope="{ row }">
<el-button type="text">客户详情</el-button>
<el-button type="text">接待详情</el-button>
<!-- <el-button type="text">更多</el-button> -->
<el-button type="text">转交</el-button>
<el-button type="text">删除</el-button>
</template>
</el-table-column>
</el-table>
<div style="display: flex; justify-content: flex-end; margin-top: 10px">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 30, 40]"
:page-size="size"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</div>
</template>
@@ -227,21 +310,12 @@ export default {
data() {
return {
TimetoAhoose: 2,
options: [
{
value: "1",
label: "全部",
},
{
value: "2",
label: "服务器内",
},
{
value: "3",
label: "已失效",
},
],
options2: [
time: [],
houseList: [],
options: [],
keywordsList: [],
accountList: [],
levelList: [
{
value: "1",
label: "A",
@@ -259,7 +333,7 @@ export default {
label: "D",
},
],
options3: [
options3: [
{
value: "1",
label: "0-15分钟",
@@ -299,78 +373,208 @@ export default {
label: "三次以上",
},
],
currentPage4:4,
value: "",
input: "",
tableData: [
timeTypeList: [
{
date: "2016-05-03",
name: "王小虎",
address: " 1518 弄",
value: "0",
label: "添加时间",
},
{
date: "2016-05-02",
name: "王小虎",
address: " 1518 弄",
},
{
date: "2016-05-04",
name: "王小虎",
address: " 1518 弄",
},
{
date: "2016-05-01",
name: "王小虎",
address: " 1518 弄",
value: "1",
label: "最近接待时间",
},
],
options5: [
{
date: "2016-05-08",
name: "王小虎",
address: " 1518 弄",
value: null,
label: "全部",
},
{
date: "2016-05-06",
name: "王小虎",
address: " 1518 弄",
value: "1",
label: "已标注",
},
{
date: "2016-05-07",
name: "王小虎",
address: " 1518 弄",
value: "2",
label: "未标注",
},
],
multipleSelection:[]
currentPage: 1,
size: 10,
total: 10,
value: "",
input: "",
tableData: [],
tophove: "",
type: "0",
searchForm: {
name: "",
keywordsId: [],
markAdvisor: null,
level: "",
recDurationInterval: "",
visitRecord: "",
staDate: "",
endDate: "",
dateType: "0",
projectId: "",
timeType: "0",
},
};
},
mounted() {},
mounted() {
this.tabtimetap(0);
// 获取楼盘列表
this.zkhousePage();
},
methods: {
//删除
toinifodelete(){
this.$confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$message({
type: 'success',
message: '删除成功!'
});
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
// 接待记录列表
findbypage() {
let obj = {
current: this.currentPage,
size: this.size,
...this.searchForm,
};
obj.keywordIds = obj.keywordsId.join(",");
(obj.dateType = this.searchForm.staDate
? null
: this.searchForm.dateType),
this.$api.api.customerManagement(obj).then((res) => {
// console.log(res)
this.tableData = res.data.records;
this.total = res.data.total;
});
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
clearScreen() {
this.currentPage = 1;
this.searchForm = {
name: "",
keywordsId: [],
markAdvisor: null,
level: "",
recDurationInterval: "",
visitRecord: "",
staDate: "",
endDate: "",
dateType: "0",
projectId: "",
timeType: "0",
projectId: this.houseList[0].id,
};
this.findbypage();
},
houseChange() {
this.findbypage();
this.findKeywords();
// 获取置业顾问列表
this.findUserListByHouseId();
},
timeChange(e) {
this.searchForm.staDate = e[0];
this.searchForm.endDate = e[1];
this.houseChange();
},
screen() {
this.currentPage = 1;
console.log(this.searchForm);
this.findbypage();
},
findKeywords() {
this.$api.api
.findKeywords({
dateType: this.searchForm.staDate ? null : this.searchForm.dateType,
statDateStart: this.searchForm.staDate,
statDateEnd: this.searchForm.endDate,
projectId: this.searchForm.projectId,
type: this.type,
})
.then((res) => {
console.log(res);
this.keywordsList = res.data;
});
},
zkhousePage() {
this.$api.api
.findHouseByUser({
orgType: localStorage.getItem("orgType"),
})
.then((res) => {
// console.log(res)
this.houseList = res.data;
this.searchForm.projectId = res.data[0].id;
// 获取接待记录列表
this.findbypage();
// 获取客户意向
this.findKeywords();
// 获取置业顾问列表
this.findUserListByHouseId();
});
},
// 置业顾问列表
async findUserListByHouseId() {
let result = await this.$api.api.findUserListByHouseId({
orgType: localStorage.getItem("orgType"),
projectId: this.searchForm.projectId,
});
console.log(result);
this.accountList = result.data;
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.size = val;
this.findbypage();
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.currentPage = val;
this.findbypage();
},
tabtimetap(idx) {
this.searchForm.staDate = "";
this.searchForm.endDate = "";
// this.$set(this, "time", null);
this.searchForm.dateType = idx;
let num = 24 * 3600 * 1000;
// 获取当前时间戳转换为日期格式
if (idx == 0) {
num = 24 * 3600 * 1000 * 0;
}
if (idx == 2) {
num = 24 * 3600 * 1000 * 6;
}
if (idx == 6) {
num = 24 * 3600 * 1000 * 29;
}
this.time = [
this.timestampToTime(new Date().getTime() - num),
this.timestampToTime(new Date().getTime()),
];
},
timestampToTime(timestamp) {
var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
// var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000

var yyyy = date.getFullYear() + "-";

var MM =
(date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1)
: date.getMonth() + 1) + "-";

// var dd = date.getDate() + ' ';
var dd =
(date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";

// var HH = date.getHours() + ':';
// var HH = (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours()) + ':';
//
// // var mm = date.getMinutes() + ':';
// var mm = (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes()) + ':';
//
// // var ss = date.getSeconds();
// var ss = (date.getSeconds() < 10 ? '0'+(date.getSeconds()) : date.getSeconds());

// return yyyy+MM+dd+HH+mm+ss;
return yyyy + MM + dd;
},
},
};
</script>
@@ -382,10 +586,10 @@ export default {
min-width: 1200px;
padding-bottom: 100px;
}
.cen-tab{
.cen-tab {
width: 100%;
padding: 15px;
background: #FFFFFF;
background: #ffffff;
margin-top: 15px;
}
.tophove {
@@ -403,12 +607,14 @@ export default {
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
.label {
font-size: 14px;
font-weight: 400;
color: #32363d;
line-height: 14px;
line-height: 32px;
margin-left: 15px;
min-width: 100px;
}
.toptimeqhuan {
height: 30px;
@@ -428,4 +634,11 @@ export default {
}
}
}
.div-lab {
display: flex;
margin: 5px;
}
.div-inp {
width: 250px;
}
</style>

+ 6
- 6
src/views/Receive/index.vue Näytä tiedosto

@@ -4,8 +4,8 @@
{{ currentAudioName || audioList[0].name }}
<audio-player
ref="audioPlayer"
:show-prev-button="false"
:show-next-button="false"
:show-prev-button="true"
:show-next-button="true"
:audio-list="audioList.map((elm) => elm.url)"
:before-play="handleBeforePlay"
theme-color="#ff2929"
@@ -26,10 +26,10 @@ export default {
name: "音频1",
url: "https://static.quhouse.com/audio/d7879fbcdfcc436189ce79e643e0aeb8.mp3",
},
// {
// name: '音频2',
// url: 'https://www.0dutv.com/upload/dance/20200316/C719452E3C7834080007662021EA968E.mp3'
// }
{
name: '音频2',
url: 'https://static.quhouse.com/record/dev/2021-09-26/1632648911706-56129.mp3'
}
],
};
},


+ 176
- 55
src/views/ReceivingRecords/index.vue Näytä tiedosto

@@ -11,7 +11,7 @@
</div>
<div>
<el-select
v-model="searchForm.houseId"
v-model="searchForm.projectId"
@change="houseChange"
placeholder="请选择"
>
@@ -26,7 +26,7 @@
</div>
</div>
<div class="app-titel" style="margin-top: 15px">
<div class="label">时间:</div>
<div class="label" style="margin-left: 20px">时间:</div>
<div class="toptimeqhuan">
<div
:class="{ tophove: searchForm.dateType == 0 }"
@@ -74,6 +74,7 @@
<el-select
class="div-inp"
multiple
clearable
collapse-tags
v-model="searchForm.keywordsId"
placeholder="请选择"
@@ -92,6 +93,7 @@
<div class="label">录音类型:</div>
<el-select
v-model="searchForm.recording"
clearable
placeholder="请选择"
class="div-inp"
>
@@ -107,20 +109,30 @@

<div class="div-lab">
<div class="label">置业顾问:</div>
<el-select v-model="value" placeholder="请选择" class="div-inp">
<el-select
v-model="searchForm.accountId"
clearable
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
v-for="item in accountList"
:key="item.accountId"
:label="item.name"
:value="item.accountId"
>
</el-option>
</el-select>
</div>

<div class="div-lab">
<div class="label">标注顾问:</div>
<el-select v-model="value" placeholder="请选择" class="div-inp">
<!-- 默认全部 -->
<div class="label">标记客户:</div>
<el-select
v-model="searchForm.markAdvisor"
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options5"
:key="item.value"
@@ -133,7 +145,12 @@

<div class="div-lab">
<div class="label">接待时长:</div>
<el-select v-model="value" placeholder="请选择" class="div-inp">
<el-select
clearable
v-model="searchForm.recDurationInterval"
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options3"
:key="item.value"
@@ -146,7 +163,12 @@

<div class="div-lab">
<div class="label">到访次数:</div>
<el-select v-model="value" placeholder="请选择" class="div-inp">
<el-select
v-model="searchForm.visitRecord"
clearable
placeholder="请选择"
class="div-inp"
>
<el-option
v-for="item in options4"
:key="item.value"
@@ -163,21 +185,25 @@
<div class="app-titel" style="margin-top: 15px">
<div class="label" style="color: #ffffff">筛选相关:</div>
<div style="margin-left: 20px">
<el-button style="background: #2671e2; color: #ffffff"
@click="screen"
<el-button style="background: #2671e2; color: #ffffff" @click="screen"
>筛选</el-button
>
</div>
<div style="margin-left: 20px">
<el-button>清空筛选条件</el-button>
<el-button @click="clearScreen">清空筛选条件</el-button>
</div>
</div>
</div>

<!-- 表格 -->
<div class="cen-tab">
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column prop="staTime" label="接待开始时间" align="center" width="200">
<el-table :data="tableData" stripe style="width: 100%">
<el-table-column
prop="staTime"
label="接待开始时间"
align="center"
width="200"
>
</el-table-column>
<el-table-column prop="agentName" label="顾问" align="center">
</el-table-column>
@@ -186,20 +212,30 @@

<el-table-column prop="mm" label="录音时长" align="center">
</el-table-column>
<el-table-column prop="name" label="录音类型" align="center">
<el-table-column prop="recording" label="录音类型" align="center">
<template slot-scope="{ row }">
{{
row.recording == 0
? "没有录音"
: row.recording == 1
? "部分录音"
: "完整录音"
}}
</template>
</el-table-column>
<el-table-column prop="ownerName" label="标注顾问" align="center">
<el-table-column prop="markAdvisor" label="标记客户" align="center">
<template slot-scope="{ row }">
{{ row.markAdvisor == 0 ? "已标记" : "未标记" }}
</template>
</el-table-column>

<el-table-column prop="keywords" label="客户意向" align="center">
<el-table-column prop="total" label="语义词触达次数" align="center">
</el-table-column>
<el-table-column prop="fraction" label="执行率" align="center">
<template slot-scope="{row}">
{{row.fraction||'0'}}%
</template>
</el-table-column>
<el-table-column prop="address" label="禁忌执行率" align="center">
<template slot-scope="{ row }"> {{ row.fraction || "0" }}% </template>
</el-table-column>
<!-- <el-table-column prop="address" label="禁忌执行率" align="center">
</el-table-column> -->
<!-- scope -->
<el-table-column label="操作" align="center" width="200" fixed="right">
<template slot-scope="{ row }">
@@ -215,7 +251,7 @@
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[10, 20, 30, 40]"
:page-size="10"
:page-size="size"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
@@ -234,6 +270,7 @@ export default {
houseList: [],
options: [],
keywordsList: [],
accountList: [],
recordingList: [
{
value: "0",
@@ -289,6 +326,10 @@ export default {
},
],
options5: [
{
value: null,
label: "全部",
},
{
value: "1",
label: "已标注",
@@ -297,13 +338,9 @@ export default {
value: "2",
label: "未标注",
},
{
value: "3",
label: "全部",
},
],
currentPage: 1,
size: "",
size: 10,
total: 10,
value: "",
input: "",
@@ -312,19 +349,21 @@ export default {
type: "0",
searchForm: {
name: "",
keywordsId: "",
recording:'',
startWorking: "",
endWorking: "",
keywordsId: [],
recording: "",
markAdvisor: null,
recDurationInterval: "",
visitRecord: "",
staDate: "",
endDate: "",
houseType: "",
dateType: 0,
houseId: "",
agentName: "",
operationalPeople: "",
dateType: "0",
projectId: "",
},
};
},
mounted() {
this.tabtimetap(0)
// 获取楼盘列表
this.zkhousePage();
},
@@ -334,35 +373,59 @@ export default {
let obj = {
current: this.currentPage,
size: this.size,
type: 1,
...this.searchForm,
};
this.$api.api.findbypage(obj).then((res) => {
// console.log(res)
this.tableData = res.data.records;
this.total = res.data.total;
});
obj.keywordIds = obj.keywordsId.join(",");
(obj.dateType = this.searchForm.staDate
? null
: this.searchForm.dateType),
this.$api.api.findbypage(obj).then((res) => {
// console.log(res)
this.tableData = res.data.records;
this.total = res.data.total;
});
},
clearScreen() {
this.currentPage = 1;
this.searchForm = {
name: "",
keywordsId: [],
recording: "",
markAdvisor: null,
recDurationInterval: "",
visitRecord: "",
staDate: "",
endDate: "",
houseType: "",
dateType: "0",
projectId: this.houseList[0].id,
};
this.findbypage();
},
houseChange() {
this.findbypage();
this.findKeywords();
// 获取置业顾问列表
this.findUserListByHouseId();
},
timeChange(e) {
this.searchForm.startWorking = e[0];
this.searchForm.endWorking = e[1];
this.searchForm.staDate = e[0];
this.searchForm.endDate = e[1];
this.houseChange();
},
screen(){
this.size=1
screen() {
this.currentPage = 1;
console.log(this.searchForm);
this.findbypage();
},
findKeywords() {
this.$api.api
.findKeywords({
dateType: this.searchForm.startWorking
? null
: this.searchForm.dateType,
statDateStart: this.searchForm.startWorking,
statDateEnd: this.searchForm.endWorking,
houseId: this.searchForm.houseId,
dateType: this.searchForm.staDate ? null : this.searchForm.dateType,
statDateStart: this.searchForm.staDate,
statDateEnd: this.searchForm.endDate,
projectId: this.searchForm.projectId,
type: this.type,
})
.then((res) => {
@@ -378,13 +441,24 @@ export default {
.then((res) => {
// console.log(res)
this.houseList = res.data;
this.searchForm.houseId = res.data[0].id;
this.searchForm.projectId = res.data[0].id;
// 获取接待记录列表
this.findbypage();
// 获取客户意向
this.findKeywords();
// 获取置业顾问列表
this.findUserListByHouseId();
});
},
// 置业顾问列表
async findUserListByHouseId() {
let result = await this.$api.api.findUserListByHouseId({
orgType: localStorage.getItem("orgType"),
projectId: this.searchForm.projectId,
});
console.log(result);
this.accountList = result.data;
},
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.size = val;
@@ -392,11 +466,58 @@ export default {
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
his.currentPage = val;
this.currentPage = val;
this.findbypage();
},
tabtimetap(idx) {
this.searchForm.staDate = "";
this.searchForm.endDate = "";
// this.$set(this, "time", null);
this.searchForm.dateType = idx;
let num = 24 * 3600 * 1000;
// 获取当前时间戳转换为日期格式
if (idx == 0) {
num = 24 * 3600 * 1000 * 0;
}
if (idx == 1) {
num = 24 * 3600 * 1000 * 1;
}
if (idx == 2) {
num = 24 * 3600 * 1000 * 7;
}

this.time = [
this.timestampToTime(new Date().getTime() - num),
this.timestampToTime(new Date().getTime()),
];
},
timestampToTime(timestamp) {
var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
// var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000

var yyyy = date.getFullYear() + "-";

var MM =
(date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1)
: date.getMonth() + 1) + "-";

// var dd = date.getDate() + ' ';
var dd =
(date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";

// var HH = date.getHours() + ':';
// var HH = (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours()) + ':';
//
// // var mm = date.getMinutes() + ':';
// var mm = (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes()) + ':';
//
// // var ss = date.getSeconds();
// var ss = (date.getSeconds() < 10 ? '0'+(date.getSeconds()) : date.getSeconds());

// return yyyy+MM+dd+HH+mm+ss;
return yyyy + MM + dd;
},
},
};


Ladataan…
Peruuta
Tallenna