@@ -35,6 +35,7 @@ | |||||
"vue": "^2.6.10", | "vue": "^2.6.10", | ||||
"vue-audio-player": "0.0.2", | "vue-audio-player": "0.0.2", | ||||
"vue-axios": "^2.1.2", | "vue-axios": "^2.1.2", | ||||
"vue-bus": "^1.2.1", | |||||
"vue-clipboard2": "^0.3.0", | "vue-clipboard2": "^0.3.0", | ||||
"vue-cron": "^1.0.9", | "vue-cron": "^1.0.9", | ||||
"vue-echarts": "^4.0.1", | "vue-echarts": "^4.0.1", | ||||
@@ -306,7 +306,11 @@ export function findHouseByUser(query) { | |||||
return request({ | return request({ | ||||
url: '/autoSR/zkhouse/findHouseByUser', | url: '/autoSR/zkhouse/findHouseByUser', | ||||
method:'get', | method:'get', | ||||
params:query | |||||
params:{ | |||||
agentId:localStorage.getItem('agentId'), | |||||
orgCode:localStorage.getItem('orgCode'), | |||||
...query | |||||
} | |||||
}) | }) | ||||
} | } | ||||
// 楼盘绑定 | // 楼盘绑定 | ||||
@@ -941,3 +945,18 @@ export function accountRankTOP10(query) { | |||||
params:query | params:query | ||||
}) | }) | ||||
} | } | ||||
// 置业顾问列表 | |||||
export function receptionStatisticsAllAccount(query) { | |||||
return request({ | |||||
url: '/autoSR/cusStageStatistics/receptionStatisticsAllAccount', | |||||
method:'get', | |||||
params:query | |||||
}) | |||||
} | |||||
export function receptionStatistics(query) { | |||||
return request({ | |||||
url: '/autoSR/cusStageStatistics/receptionStatistics', | |||||
method:'get', | |||||
params:query | |||||
}) | |||||
} |
@@ -44,7 +44,6 @@ Vue.use(AVUE, { | |||||
size: 'small', | size: 'small', | ||||
menuType: 'text' | menuType: 'text' | ||||
}) | }) | ||||
// 注册全局容器 | // 注册全局容器 | ||||
Vue.component('basicContainer', basicContainer) | Vue.component('basicContainer', basicContainer) | ||||
@@ -355,9 +355,11 @@ export default { | |||||
localStorage.setItem("houseId", item.id); | localStorage.setItem("houseId", item.id); | ||||
} | } | ||||
this.$router.push({ path: "/wel" }); | this.$router.push({ path: "/wel" }); | ||||
localStorage.setItem('allClose',true) | |||||
}, | }, | ||||
goback() { | goback() { | ||||
this.$router.back(); | this.$router.back(); | ||||
localStorage.setItem('allClose',false) | |||||
}, | }, | ||||
handleSizeChange(val) { | handleSizeChange(val) { | ||||
console.log(`每页 ${val} 条`); | console.log(`每页 ${val} 条`); | ||||
@@ -87,6 +87,7 @@ export default { | |||||
// 对此进行判断,获取this.$route的参数,如果没有则退出登陆,有的话就返回之前的页面 | // 对此进行判断,获取this.$route的参数,如果没有则退出登陆,有的话就返回之前的页面 | ||||
if (this.backFlag) { | if (this.backFlag) { | ||||
this.$router.back(); | this.$router.back(); | ||||
localStorage.setItem('allClose',false) | |||||
} else { | } else { | ||||
this.$confirm("是否退出系统, 是否继续?", "提示", { | this.$confirm("是否退出系统, 是否继续?", "提示", { | ||||
confirmButtonText: "确定", | confirmButtonText: "确定", | ||||
@@ -240,7 +241,7 @@ export default { | |||||
// 楼盘后台 | // 楼盘后台 | ||||
// this.$router.push({ path: "/chose", query: { flag: 3 } }); | // this.$router.push({ path: "/chose", query: { flag: 3 } }); | ||||
} | } | ||||
localStorage.setItem('allClose',true) | |||||
// this.$router.push({ path: "/chose" }); | // this.$router.push({ path: "/chose" }); | ||||
}, | }, | ||||
}, | }, | ||||
@@ -69,12 +69,16 @@ | |||||
}, | }, | ||||
contextmenuFlag() { | contextmenuFlag() { | ||||
window.addEventListener('mousedown', this.watchContextmenu) | window.addEventListener('mousedown', this.watchContextmenu) | ||||
} | |||||
}, | |||||
}, | }, | ||||
created() { | created() { | ||||
}, | }, | ||||
mounted() { | mounted() { | ||||
this.setActive() | this.setActive() | ||||
console.log(localStorage.getItem('allClose')); | |||||
if(localStorage.getItem('allClose')=='true'){ | |||||
this.closeAllTags() | |||||
} | |||||
}, | }, | ||||
computed: { | computed: { | ||||
...mapGetters(['tagWel', 'tagList', 'tag', 'website']), | ...mapGetters(['tagWel', 'tagList', 'tag', 'website']), | ||||
@@ -119,6 +119,7 @@ export default { | |||||
this.$store.dispatch("LoginByUsername", this.loginForm).then(() => { | this.$store.dispatch("LoginByUsername", this.loginForm).then(() => { | ||||
// this.$router.push({ path: this.tagWel.value }); | // this.$router.push({ path: this.tagWel.value }); | ||||
this.info = getStore({ name: "userInfo" }); | this.info = getStore({ name: "userInfo" }); | ||||
localStorage.setItem('allClose',false) | |||||
that.$api.api.getTab().then((res) => { | that.$api.api.getTab().then((res) => { | ||||
// console.log(res) | // console.log(res) | ||||
// 循环数组,给定各种标志 | // 循环数组,给定各种标志 | ||||
@@ -138,7 +138,7 @@ | |||||
<el-button type="text" v-if="cus_ag_edit" size="small" @click="infoeditor(scope.row)">编辑</el-button> | <el-button type="text" v-if="cus_ag_edit" size="small" @click="infoeditor(scope.row)">编辑</el-button> | ||||
<el-button type="text" v-if="cus_ag_change" size="small" @click="inforeplace(scope.row)">更换账号</el-button> | <el-button type="text" v-if="cus_ag_change" size="small" @click="inforeplace(scope.row)">更换账号</el-button> | ||||
<el-button type="text" v-if="cus_ag_del" size="small" @click="toinifodelete(scope)">删除</el-button> | <el-button type="text" v-if="cus_ag_del" size="small" @click="toinifodelete(scope)">删除</el-button> | ||||
<el-button type="text" v-if="cus_ag_manage" size="small" @click="editOpera(scope.row)">管理系统运营</el-button> | |||||
<el-button type="text" v-if="cus_ag_manage" size="small" @click="editOpera(scope.row)">系统运营</el-button> | |||||
<el-button type="text" v-if="cus_ag_open" size="small" @click="toDisable(scope.row)">{{scope.row.lockFlag==0?'禁用':'启用'}}</el-button> | <el-button type="text" v-if="cus_ag_open" size="small" @click="toDisable(scope.row)">{{scope.row.lockFlag==0?'禁用':'启用'}}</el-button> | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
@@ -350,7 +350,7 @@ export default { | |||||
this.passFlag=false | this.passFlag=false | ||||
if (!/^1[3456789]\d{9}$/.test(value)) { | if (!/^1[3456789]\d{9}$/.test(value)) { | ||||
// alert("手机号码不合法,请重新输入"); | // alert("手机号码不合法,请重新输入"); | ||||
callback(new Error("手机号码不合法,请重新输入")); | |||||
callback(new Error("手机号格式错误,请重新输入")); | |||||
}else{ | }else{ | ||||
// 验证电话号码 | // 验证电话号码 | ||||
this.$api.api.verPhone(value).then((res) => { | this.$api.api.verPhone(value).then((res) => { | ||||
@@ -403,7 +403,7 @@ export default { | |||||
options: [ | options: [ | ||||
{ | { | ||||
value: "0", | value: "0", | ||||
label: "服务器内", | |||||
label: "服务中", | |||||
}, | }, | ||||
{ | { | ||||
value: "1", | value: "1", | ||||
@@ -307,7 +307,7 @@ export default { | |||||
if (value) { | if (value) { | ||||
if (!/^1[3456789]\d{9}$/.test(value)) { | if (!/^1[3456789]\d{9}$/.test(value)) { | ||||
// alert("手机号码不合法,请重新输入"); | // alert("手机号码不合法,请重新输入"); | ||||
callback(new Error("手机号码不合法,请重新输入")); | |||||
callback(new Error("手机号格式错误,请重新输入")); | |||||
}else{ | }else{ | ||||
// 验证电话号码 | // 验证电话号码 | ||||
this.$api.api.verPhone(value).then((res) => { | this.$api.api.verPhone(value).then((res) => { | ||||
@@ -538,9 +538,10 @@ export default { | |||||
if(valid){ | if(valid){ | ||||
// console.log(valid,this.operaForm); | // console.log(valid,this.operaForm); | ||||
this.$api.api.zkoperationrecordSaveCompany({ | this.$api.api.zkoperationrecordSaveCompany({ | ||||
orgType:this.idx==0?'1':'2', | |||||
orgType:2, | |||||
accountIds:this.operaForm.operationalPeople.join(','), | accountIds:this.operaForm.operationalPeople.join(','), | ||||
orgId: this.operaForm.orgId | |||||
orgId: this.operaForm.orgId, | |||||
operationType:this.idx==0?'1':'2' | |||||
}) | }) | ||||
.then(res=>{ | .then(res=>{ | ||||
console.log(res); | console.log(res); | ||||
@@ -94,7 +94,7 @@ | |||||
<el-button type="text" size="small" @click="inforeplace(scope.row)">更换账号</el-button> | <el-button type="text" size="small" @click="inforeplace(scope.row)">更换账号</el-button> | ||||
<el-button type="text" size="small" @click="toinifodelete(scope)">删除</el-button> --> | <el-button type="text" size="small" @click="toinifodelete(scope)">删除</el-button> --> | ||||
<!-- <el-button type="text" size="small" v-if="cus_com_sys" @click="editOpera(scope.row,0)">系统运营</el-button> --> | <!-- <el-button type="text" size="small" v-if="cus_com_sys" @click="editOpera(scope.row,0)">系统运营</el-button> --> | ||||
<el-button type="text" size="small" v-if="cus_com_sys1" @click="editOpera(scope.row,1)">代理商运营</el-button> | |||||
<el-button type="text" size="small" v-if="cus_com_sys1" @click="editOpera(scope.row,1)">售后运营</el-button> | |||||
<!-- <el-button type="text" size="small" @click="bindAgent(scope.row)">绑定代理商</el-button> --> | <!-- <el-button type="text" size="small" @click="bindAgent(scope.row)">绑定代理商</el-button> --> | ||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
@@ -1,16 +1,658 @@ | |||||
<template> | <template> | ||||
<div> | |||||
111 | |||||
</div> | |||||
<div class="box-center"> | |||||
<div class="app-titel"> | |||||
<div class="toptimeqhuan"> | |||||
<div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)"> | |||||
近7天 | |||||
</div> | |||||
<div :class="{ tophove: dateType == 5 }" @click="tabtimetap(5)"> | |||||
近15天 | |||||
</div> | |||||
<div :class="{ tophove: dateType == 6 }" @click="tabtimetap(6)"> | |||||
近30天 | |||||
</div> | |||||
</div> | |||||
<div style="margin-left: 26px"> | |||||
<el-date-picker | |||||
v-model="customtime" | |||||
@change="confirmtime()" | |||||
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="app-titel"> | |||||
<div style="margin-left: 26px" class="div-lab"> | |||||
<div class="label">团队</div> | |||||
<el-select | |||||
v-model="deptId" | |||||
filterable | |||||
@change="deptChange" | |||||
placeholder="请选择" | |||||
class="div-inp" | |||||
> | |||||
<el-option | |||||
v-for="item in options" | |||||
:key="item.deptId" | |||||
:label="item.name" | |||||
:value="item.deptId" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</div> | |||||
<div style="margin-left: 26px" class="div-lab"> | |||||
<div style="margin-right: 20px" class="label">置业顾问</div> | |||||
<el-select | |||||
v-model="accountId" | |||||
filterable | |||||
@change="repChange" | |||||
placeholder="请选择" | |||||
class="div-inp" | |||||
> | |||||
<el-option | |||||
v-for="item in repList" | |||||
:key="item.accountId" | |||||
:label="item.name" | |||||
:value="item.accountId" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</div> | |||||
<div style="margin-left: 20px"> | |||||
<el-button type="primary" size="small" @click="screen()" | |||||
>查询</el-button | |||||
> | |||||
<el-button type="primary" size="small" @click="reset()">清空</el-button> | |||||
</div> | |||||
</div> | |||||
<!-- 表格 --> | |||||
<div class="cen-tab"> | |||||
<el-table max-height="300" :data="tableData" stripe style="width: 100%"> | |||||
<el-table-column prop="batchId" label="序号" align="center"> | |||||
<template slot-scope="scope"> | |||||
{{ | |||||
scope.$index == tableData.length - 1 | |||||
? "合计/平均" | |||||
: scope.$index + 1 | |||||
}} | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column prop="accountName" label="日期" align="center"> | |||||
<template slot-scope="scope"> | |||||
{{ | |||||
scope.$index == tableData.length - 1 | |||||
? scope.row.statDate | |||||
: scope.row.statDate.substring(0, 10) | |||||
}} | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column prop="receptionCount" label="接待量" align="center"> | |||||
</el-table-column> | |||||
<el-table-column prop="accountNum" label="接待顾问" align="center"> | |||||
</el-table-column> | |||||
<el-table-column prop="activeCustomer" label="有效录音" align="center"> | |||||
</el-table-column> | |||||
<el-table-column | |||||
prop="prohibitedCustomer" | |||||
label="违禁接待次数" | |||||
align="center" | |||||
> | |||||
</el-table-column> | |||||
<el-table-column prop="sumDuration" label="接待时长(分)" align="center"> | |||||
<template slot-scope="{ row }"> | |||||
{{ Math.floor(row.sumDuration / 60) }} | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column | |||||
prop="prohibitedZb" | |||||
label="违禁接待占比" | |||||
align="center" | |||||
> | |||||
</el-table-column> | |||||
<el-table-column prop="fraction" label="平均执行率" align="center"> | |||||
</el-table-column> | |||||
<el-table-column | |||||
v-for="(item, idx) in tablist" | |||||
:key="idx" | |||||
:prop="item.props" | |||||
:label="item.label" | |||||
align="center" | |||||
> | |||||
</el-table-column> | |||||
<el-table-column label="操作" align="center"> | |||||
<template slot-scope="scope"> | |||||
<el-button | |||||
v-if="scope.$index < tableData.length - 1" | |||||
type="text" | |||||
size="small" | |||||
@click="toDetail(scope.row)" | |||||
>详情</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="current" | |||||
:page-sizes="[8, 16, 24, 32]" | |||||
:page-size="size" | |||||
layout="total, sizes, prev, pager, next, jumper" | |||||
:total="total" | |||||
> | |||||
</el-pagination> | |||||
</div> | |||||
</div> | |||||
<el-dialog | |||||
title="详情" | |||||
:visible.sync="dialogVisible" | |||||
width="80%" | |||||
:before-close="handleClose" | |||||
> | |||||
<div class="cen-tab"> | |||||
<el-table | |||||
max-height="300" | |||||
:data="detailData" | |||||
stripe | |||||
style="width: 100%" | |||||
> | |||||
<el-table-column prop="batchId" label="序号" align="center"> | |||||
<template slot-scope="scope"> | |||||
{{ | |||||
scope.$index == detailData.length - 1 | |||||
? "合计/平均" | |||||
: scope.$index + 1 | |||||
}} | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column prop="accountName" label="顾问" align="center"> | |||||
</el-table-column> | |||||
<el-table-column prop="deptName" label="归属团队" align="center"> | |||||
</el-table-column> | |||||
<el-table-column prop="receptionCount" label="接待量" align="center"> | |||||
</el-table-column> | |||||
<el-table-column | |||||
prop="activeCustomer" | |||||
label="有效录音" | |||||
align="center" | |||||
> | |||||
</el-table-column> | |||||
<el-table-column | |||||
prop="prohibitedCustomer" | |||||
label="违禁接待次数" | |||||
align="center" | |||||
> | |||||
</el-table-column> | |||||
<el-table-column | |||||
prop="sumDuration" | |||||
label="接待时长(分)" | |||||
align="center" | |||||
> | |||||
<template slot-scope="{ row }"> | |||||
{{ Math.floor(row.sumDuration / 60) }} | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column | |||||
prop="prohibitedZb" | |||||
label="违禁接待占比" | |||||
align="center" | |||||
> | |||||
</el-table-column> | |||||
<el-table-column prop="fraction" label="平均执行率" align="center"> | |||||
</el-table-column> | |||||
<el-table-column | |||||
v-for="(item, idx) in tablist1" | |||||
:key="idx" | |||||
:prop="item.props" | |||||
:label="item.label" | |||||
align="center" | |||||
> | |||||
</el-table-column> | |||||
</el-table> | |||||
<div style="display: flex; justify-content: flex-end; margin-top: 10px"> | |||||
<el-pagination | |||||
@size-change="handleSizeChange1" | |||||
@current-change="handleCurrentChange1" | |||||
:current-page="current1" | |||||
:page-sizes="[8, 16, 24, 32]" | |||||
:page-size="size1" | |||||
layout="total, sizes, prev, pager, next, jumper" | |||||
:total="total1" | |||||
> | |||||
</el-pagination> | |||||
</div> | |||||
</div> | |||||
<span slot="footer" class="dialog-footer"> | |||||
<el-button @click="dialogVisible = false">取 消</el-button> | |||||
<el-button type="primary" @click="dialogVisible = false" | |||||
>确 定</el-button | |||||
> | |||||
</span> | |||||
</el-dialog> | |||||
</div> | |||||
</template> | </template> | ||||
<script> | <script> | ||||
export default { | export default { | ||||
data() { | |||||
return { | |||||
houseId: "", | |||||
buildingoptions: [], | |||||
houseList: [], | |||||
detailData: [], | |||||
dateType: 2, | |||||
repList: [], | |||||
current: 1, | |||||
current1: 1, | |||||
accountId: "", | |||||
size: 8, | |||||
total: 20, | |||||
size1: 8, | |||||
total1: 20, | |||||
customtime: [], | |||||
tablist: [], | |||||
tablist1: [], | |||||
deptId: "", | |||||
tableData: [], | |||||
orgType: localStorage.getItem("orgType"), | |||||
options: [], | |||||
value: "1", | |||||
statDateStart: "", | |||||
statDateEnd: "", | |||||
echarlist: [], | |||||
echarlist1: [], | |||||
echarlist2: [], | |||||
echarlist3: [], | |||||
teamAllLevel: [], | |||||
teamAllLevelid: "", | |||||
teamAllLeve2id: "", | |||||
teamAllLeve2: [], | |||||
statDate: "", | |||||
dialogVisible: false, | |||||
}; | |||||
}, | |||||
mounted() { | |||||
this.houseId = localStorage.getItem("houseId"); | |||||
this.tabtimetap(4); | |||||
this.deptFindList(); | |||||
}, | |||||
methods: { | |||||
toDetail(row) { | |||||
console.log(row); | |||||
this.statDate = row.statDate.substring(0, 10); | |||||
this.dialogVisible = true; | |||||
this.getDetailList(); | |||||
}, | |||||
// 获取detail | |||||
getDetailList() { | |||||
this.$api.api | |||||
.receptionStatistics({ | |||||
houseId: this.houseId, | |||||
statDate: this.statDate, | |||||
current: this.current, | |||||
size: this.size, | |||||
deptId: this.deptId, | |||||
accountId: this.accountId, | |||||
type:2 | |||||
}) | |||||
.then((res) => { | |||||
this.detailData = res.data.records; | |||||
// 数据处理 | |||||
// 需要两个数组,一个用来展示 | |||||
this.deailDate(0); | |||||
this.total1 = res.data.total; | |||||
}); | |||||
}, | |||||
screen() { | |||||
this.current = 1; | |||||
this.accountRank(); | |||||
}, | |||||
reset() { | |||||
this.current = 1; | |||||
this.deptId = ""; | |||||
this.accountId = ""; | |||||
this.accountRank(); | |||||
}, | |||||
handleClose(done) { | |||||
this.$confirm("确认关闭?") | |||||
.then((_) => { | |||||
done(); | |||||
}) | |||||
.catch((_) => {}); | |||||
}, | |||||
deptFindList() { | |||||
// 获取团队 | |||||
this.$api.api | |||||
.deptFindList({ | |||||
houseId: this.houseId, | |||||
}) | |||||
.then((res) => { | |||||
this.options = [ | |||||
{ | |||||
name: "全部", | |||||
deptId: "", | |||||
}, | |||||
]; | |||||
this.options.push(...res.data); | |||||
this.accountRank(); | |||||
}); | |||||
}, | |||||
deptChange() { | |||||
this.receptionStatisticsAllAccount(); | |||||
this.accountId = ""; | |||||
}, | |||||
receptionStatisticsAllAccount() { | |||||
this.$api.api | |||||
.receptionStatisticsAllAccount({ | |||||
houseId: this.houseId, | |||||
deptId: this.deptId, | |||||
}) | |||||
.then((res) => { | |||||
console.log(res); | |||||
this.repList = [ | |||||
{ | |||||
name: "全部", | |||||
deptId: "", | |||||
}, | |||||
]; | |||||
this.repList.push(...res.data); | |||||
this.accountRank(); | |||||
}); | |||||
}, | |||||
// 获取列表 | |||||
repChange() { | |||||
this.accountRank(); | |||||
}, | |||||
accountRank() { | |||||
this.$api.api | |||||
.receptionStatistics({ | |||||
houseId: this.houseId, | |||||
statDateStart: this.statDateStart, | |||||
statDateEnd: this.statDateEnd, | |||||
current: this.current, | |||||
size: this.size, | |||||
deptId: this.deptId, | |||||
accountId: this.accountId, | |||||
dateType: this.dateType == 7 ? null : this.dateType, | |||||
type:1 | |||||
}) | |||||
.then((res) => { | |||||
this.tableData = res.data.records; | |||||
// 数据处理 | |||||
// 需要两个数组,一个用来展示 | |||||
this.deailDate(); | |||||
this.total = res.data.total; | |||||
}); | |||||
}, | |||||
confirmtime() { | |||||
this.dateType = 7; | |||||
this.statDateStart = this.customtime[0]; | |||||
this.statDateEnd = this.customtime[1]; | |||||
this.init(); | |||||
}, | |||||
init() { | |||||
this.accountRank(); | |||||
}, | |||||
deailDate(idx) { | |||||
if (idx) { | |||||
this.tablist1 = []; | |||||
// 当他是第一个 小将 | |||||
// console.log("第一个"); | |||||
this.deailDate[0].resultsList.map((item, idx) => { | |||||
let obj = {}; | |||||
obj.label = item.name; | |||||
obj.props = "str" + idx; | |||||
this.tablist1.push(obj); | |||||
}); | |||||
this.deailDate.map((item) => { | |||||
this.tablist1.map((item1, idx) => { | |||||
item[item1.props] = item.resultsList[idx].zxl; | |||||
}); | |||||
}); | |||||
} else { | |||||
this.tablist = []; | |||||
// 当他是第一个 小将 | |||||
// console.log("第一个"); | |||||
this.tableData[0].resultsList.map((item, idx) => { | |||||
let obj = {}; | |||||
obj.label = item.name; | |||||
obj.props = "str" + idx; | |||||
this.tablist.push(obj); | |||||
}); | |||||
this.tableData.map((item) => { | |||||
this.tablist.map((item1, idx) => { | |||||
item[item1.props] = item.resultsList[idx].zxl; | |||||
}); | |||||
}); | |||||
} | |||||
}, | |||||
handleCurrentChange(e) { | |||||
this.current = e; | |||||
this.accountRank(); | |||||
}, | |||||
handleSizeChange(e) { | |||||
this.size = e; | |||||
this.accountRank(); | |||||
}, | |||||
handleCurrentChange1(e) { | |||||
this.current1 = e; | |||||
// this.accountRank(); | |||||
}, | |||||
handleSizeChange1(e) { | |||||
this.size1 = e; | |||||
// this.accountRank(); | |||||
}, | |||||
//切换时间 | |||||
tabtimetap(index) { | |||||
this.statDateStart = ""; | |||||
this.statDateEnd = ""; | |||||
this.dateType = index; | |||||
this.init(); | |||||
}, | |||||
dealData(arr) { | |||||
let num = Math.max.apply( | |||||
Math, | |||||
arr.map(function (o) { | |||||
return o.zxl; | |||||
}) | |||||
); //结果:3 | |||||
arr.map((item) => { | |||||
item.zxl1 = Math.floor((item.zxl / num) * 100); | |||||
}); | |||||
return arr; | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | |||||
<style scoped="scoped" lang="scss" > | |||||
.box-center { | |||||
width: 100%; | |||||
padding: 15px; | |||||
min-width: 1200px; | |||||
padding-bottom: 100px; | |||||
} | |||||
.cen-tab { | |||||
width: 100%; | |||||
padding: 15px; | |||||
background: #ffffff; | |||||
margin-top: 15px; | |||||
} | |||||
.tophove { | |||||
color: #ffffff; | |||||
background: #2671e2; | |||||
} | |||||
.app-titel { | |||||
width: 100%; | |||||
height: 70px; | |||||
background: #ffffff; | |||||
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04); | |||||
border-radius: 4px; | |||||
display: flex; | |||||
align-items: center; | |||||
flex-wrap: wrap; | |||||
.titel-text { | |||||
height: 100%; | |||||
font-size: 18px; | |||||
font-weight: 600; | |||||
color: #32363d; | |||||
line-height: 70px; | |||||
margin-left: 30px; | |||||
} | |||||
.toptimeqhuan { | |||||
width: 190px; | |||||
height: 32px; | |||||
background: #ffffff; | |||||
border-radius: 4px; | |||||
border: 1px solid #e0e0e0; | |||||
display: flex; | |||||
align-items: center; | |||||
overflow: hidden; | |||||
margin-left: 30px; | |||||
cursor: pointer; | |||||
} | |||||
.toptimeqhuan div { | |||||
flex: 1; | |||||
text-align: center; | |||||
line-height: 32px; | |||||
font-size: 16px; | |||||
} | |||||
} | } | ||||
</script> | |||||
<style lang="" scoped > | |||||
.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; | |||||
.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; | |||||
color: #333333; | |||||
} | |||||
.text2 { | |||||
flex: 1; | |||||
height: 55px; | |||||
display: flex; | |||||
align-items: center; | |||||
} | |||||
} | |||||
} | |||||
.you { | |||||
height: 100%; | |||||
flex: 1; | |||||
background: #ffffff; | |||||
border-radius: 4px; | |||||
.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; | |||||
color: #333333; | |||||
} | |||||
.text2 { | |||||
flex: 1; | |||||
height: 55px; | |||||
display: flex; | |||||
align-items: center; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
.hejisan { | |||||
width: 92%; | |||||
margin: 0 auto; | |||||
display: flex; | |||||
padding-top: 10px; | |||||
padding-bottom: 10px; | |||||
.text1-1 { | |||||
color: #666666; | |||||
} | |||||
.text1-2 { | |||||
color: #333333; | |||||
margin-top: 10px; | |||||
} | |||||
} | |||||
// 进度条 | |||||
.jinbox { | |||||
width: 100%; | |||||
height: 18px; | |||||
line-height: 18px; | |||||
display: flex; | |||||
font-size: 16px; | |||||
color: #2c3542; | |||||
margin-top: 10px; | |||||
.jinboxtit { | |||||
width: 14%; | |||||
height: 18px; | |||||
padding-right: 6px; | |||||
white-space: nowrap; | |||||
text-overflow: ellipsis; | |||||
overflow: hidden; | |||||
} | |||||
.jinbox-box { | |||||
width: 75%; | |||||
height: 100%; | |||||
border-radius: 8px; | |||||
background: #f2f2f2; | |||||
} | |||||
.boxbaifenbi { | |||||
height: 100%; | |||||
background: #60d7a0; | |||||
border-radius: 8px; | |||||
} | |||||
.boxbaifenbi2 { | |||||
height: 100%; | |||||
background: #5b8ff9; | |||||
} | |||||
.jinboxbott { | |||||
width: 16%; | |||||
text-indent: 50px; | |||||
} | |||||
} | |||||
.div-lab { | |||||
display: flex; | |||||
margin: 5px; | |||||
} | |||||
.div-inp { | |||||
width: 200px; | |||||
} | |||||
.label { | |||||
font-size: 14px; | |||||
font-weight: 400; | |||||
color: #32363d; | |||||
line-height: 32px; | |||||
margin-left: 15px; | |||||
min-width: 40px; | |||||
} | |||||
</style> | </style> |
@@ -503,7 +503,7 @@ export default { | |||||
}; | }; | ||||
if (this.tabselect == 0 || this.tabselect == 1) { | if (this.tabselect == 0 || this.tabselect == 1) { | ||||
obj.orgCode = this.orgCode; | obj.orgCode = this.orgCode; | ||||
this.tabselect == 0?obj.orgType=1:obj.orgType=2 | |||||
this.tabselect == 0?obj.orgType=3:obj.orgType=2 | |||||
} | } | ||||
if (this.tabselect == 2) { | if (this.tabselect == 2) { | ||||
obj.agentId = this.orgCode; | obj.agentId = this.orgCode; | ||||
@@ -580,7 +580,7 @@ export default { | |||||
return; | return; | ||||
} | } | ||||
if(this.tabselect==0||this.tabselect==1){ | if(this.tabselect==0||this.tabselect==1){ | ||||
this.tabselect == 0?this.form.orgType=1:this.form.orgType=2 | |||||
this.tabselect == 0?this.form.orgType=3:this.form.orgType=2 | |||||
this.form.orgCode = this.orgCode; | this.form.orgCode = this.orgCode; | ||||
this.form.agentId = null; | this.form.agentId = null; | ||||
} | } | ||||
@@ -59,13 +59,13 @@ | |||||
</el-select> | </el-select> | ||||
</el-input> | </el-input> | ||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="所属组织" prop="orgName"> | |||||
<!-- <el-form-item label="所属组织" prop="orgName"> | |||||
<el-input | <el-input | ||||
v-model="searchMsg.orgName" | v-model="searchMsg.orgName" | ||||
clearable | clearable | ||||
placeholder="请输入所属组织名称" | placeholder="请输入所属组织名称" | ||||
></el-input> | ></el-input> | ||||
</el-form-item> | |||||
</el-form-item> --> | |||||
<el-form-item> | <el-form-item> | ||||
<el-button type="primary" @click="search">查询</el-button> | <el-button type="primary" @click="search">查询</el-button> | ||||
<el-button type="primary" @click="reset">重置</el-button> | <el-button type="primary" @click="reset">重置</el-button> | ||||
@@ -137,11 +137,18 @@ | |||||
clearable | clearable | ||||
placeholder="请选择" | placeholder="请选择" | ||||
> | > | ||||
<el-option label="项目总" value="2"></el-option> | |||||
<!-- <el-option label="项目总" value="2"></el-option> | |||||
<el-option label="客服" value="3"></el-option> | <el-option label="客服" value="3"></el-option> | ||||
<el-option label="策划" value="4"></el-option> | <el-option label="策划" value="4"></el-option> | ||||
<el-option label="经理" value="5"></el-option> | <el-option label="经理" value="5"></el-option> | ||||
<el-option label="置业顾问" value="6"></el-option> | |||||
<el-option label="置业顾问" value="6"></el-option> --> | |||||
<el-option | |||||
v-for="item in userRoleList" | |||||
:key="item.dictValue" | |||||
:label="item.dictName" | |||||
:value="item.dictValue" | |||||
> | |||||
</el-option> | |||||
</el-select> | </el-select> | ||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="状态" prop="lockFlag"> | <el-form-item label="状态" prop="lockFlag"> | ||||
@@ -367,7 +374,7 @@ | |||||
<el-radio label="1">女</el-radio> | <el-radio label="1">女</el-radio> | ||||
</el-radio-group> | </el-radio-group> | ||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="手机号显隐" prop="showPhoneStatus" v-if="addFlag"> | |||||
<el-form-item label="手机号加密" prop="showPhoneStatus" v-if="addFlag"> | |||||
<el-radio-group v-model="form.showPhoneStatus"> | <el-radio-group v-model="form.showPhoneStatus"> | ||||
<el-radio :label="0">是</el-radio> | <el-radio :label="0">是</el-radio> | ||||
<el-radio :label="1">否</el-radio> | <el-radio :label="1">否</el-radio> | ||||
@@ -547,6 +554,25 @@ | |||||
</el-option> | </el-option> | ||||
</el-select> | </el-select> | ||||
</el-form-item> | </el-form-item> | ||||
<!-- <el-form-item label="身份:" prop="newRoleId" v-if="formTwo.userRoleType!=6&&formTwo.userRoleType!=7&&formTwo.userRoleType!=8"> --> | |||||
<el-form-item label="身份:" prop="newRoleId"> | |||||
<el-select | |||||
v-model="formTwo.userRoleType" | |||||
filterable | |||||
:disabled='formTwo.userRoleType==6||formTwo.userRoleType==7||formTwo.userRoleType==8' | |||||
value-key="key" | |||||
style="width: 370px" | |||||
placeholder="请选择身份" | |||||
> | |||||
<el-option | |||||
v-for="item in userRoleTypeList" | |||||
:key="item.dictValue" | |||||
:label="item.dictName" | |||||
:value="item.dictValue" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</el-form-item> | |||||
<el-form-item label="部门:" prop="deptId" v-if="orgFlag"> | <el-form-item label="部门:" prop="deptId" v-if="orgFlag"> | ||||
<el-select | <el-select | ||||
v-model="formTwo.deptId" | v-model="formTwo.deptId" | ||||
@@ -1038,8 +1064,10 @@ export default { | |||||
deptId:'',//部门 | deptId:'',//部门 | ||||
roleId:'',//角色 | roleId:'',//角色 | ||||
newRoleId:"", | newRoleId:"", | ||||
showPhoneStatus:0//手机号显隐 | |||||
showPhoneStatus:0,//手机号显隐 | |||||
userRoleType:'', | |||||
}, | }, | ||||
userRoleTypeList:[], | |||||
phoneFlag: false, | phoneFlag: false, | ||||
rolesOptions: [], | rolesOptions: [], | ||||
checkHouse: [], | checkHouse: [], | ||||
@@ -1187,6 +1215,13 @@ export default { | |||||
// this.userDeptTree()// 获取部门树 | // this.userDeptTree()// 获取部门树 | ||||
this.deptGetOrgList(); //获取公司列表 | this.deptGetOrgList(); //获取公司列表 | ||||
this.getAgentList(); //获取代理商列表 | this.getAgentList(); //获取代理商列表 | ||||
this.userDict( | |||||
{ | |||||
dictKey: localStorage.getItem('orgType'), | |||||
dictType: 3, | |||||
}, | |||||
"userRoleList" | |||||
); | |||||
}, | }, | ||||
methods: { | methods: { | ||||
// 区域改变 | // 区域改变 | ||||
@@ -1409,11 +1444,13 @@ export default { | |||||
}); | }); | ||||
}, | }, | ||||
search() { | search() { | ||||
this.page.current1 | |||||
console.log(this.searchMsg, "搜索内容1"); | console.log(this.searchMsg, "搜索内容1"); | ||||
// return | // return | ||||
this.roleList(); | this.roleList(); | ||||
}, | }, | ||||
search1() { | search1() { | ||||
this.page.current=1 | |||||
console.log(this.searchMsg1, "搜索内容2"); | console.log(this.searchMsg1, "搜索内容2"); | ||||
// return | // return | ||||
this.roleList(); | this.roleList(); | ||||
@@ -1496,6 +1533,7 @@ export default { | |||||
.then((res) => { | .then((res) => { | ||||
console.log(res); | console.log(res); | ||||
this.houseVisible = false; | this.houseVisible = false; | ||||
this.roleList(); | |||||
}); | }); | ||||
} else { | } else { | ||||
// 省市json串 | // 省市json串 | ||||
@@ -1551,10 +1589,9 @@ export default { | |||||
.then((res) => { | .then((res) => { | ||||
console.log(res); | console.log(res); | ||||
this.houseVisible = false; | this.houseVisible = false; | ||||
this.roleList(); | |||||
}); | }); | ||||
} | } | ||||
this.roleList(); | |||||
}, | }, | ||||
// 楼盘绑定解绑 | // 楼盘绑定解绑 | ||||
// bindhouse(e){ | // bindhouse(e){ | ||||
@@ -2111,9 +2148,18 @@ export default { | |||||
this.formTwo.houseId=row.houseId | this.formTwo.houseId=row.houseId | ||||
this.formTwo.newRoleId=row.roleId | this.formTwo.newRoleId=row.roleId | ||||
this.formTwo.deptId=row.deptId | this.formTwo.deptId=row.deptId | ||||
this.formTwo.userRoleType=row.userRoleType+'' | |||||
console.log(this.formTwo); | console.log(this.formTwo); | ||||
// 获取角色列表 | // 获取角色列表 | ||||
this.typeChange1(row) | this.typeChange1(row) | ||||
this.userDict( | |||||
{ | |||||
dictKey:row.orgType, | |||||
dictType: 3, | |||||
}, | |||||
"userRoleTypeList" | |||||
); | |||||
// 获取部门列表 | // 获取部门列表 | ||||
this.dialogFormVisibleTwo=true | this.dialogFormVisibleTwo=true | ||||
}, | }, | ||||
@@ -133,7 +133,7 @@ | |||||
<div class="label" style="color: #ffffff">筛选相关:</div> | <div class="label" style="color: #ffffff">筛选相关:</div> | ||||
<div> | <div> | ||||
<el-button | <el-button | ||||
@click="zkhousePage" | |||||
@click="screen" | |||||
style="background: #2671e2; color: #ffffff" | style="background: #2671e2; color: #ffffff" | ||||
>筛选</el-button | >筛选</el-button | ||||
> | > | ||||
@@ -232,8 +232,8 @@ | |||||
>更换账号</el-button | >更换账号</el-button | ||||
> | > | ||||
<!-- <el-button type="text" v-if="orgType == 2">添加员工</el-button> --> | <!-- <el-button type="text" v-if="orgType == 2">添加员工</el-button> --> | ||||
<el-button type="text" size="small" v-if="cus_build_index_sys" @click="editOpera(row,0)">管理系统运营人员</el-button> | |||||
<el-button type="text" size="small" v-if="cus_build_index_agent" @click="editOpera(row,1)">管理代理商运营</el-button> | |||||
<el-button type="text" size="small" v-if="cus_build_index_sys" @click="editOpera(row,0)">系统运营</el-button> | |||||
<el-button type="text" size="small" v-if="cus_build_index_agent" @click="editOpera(row,1)">售后运营</el-button> | |||||
<!-- <el-button type="text">添加员工</el-button> --> | <!-- <el-button type="text">添加员工</el-button> --> | ||||
<el-button type="text" size="small" v-if="cus_build_index_bindAgent" @click="bindAgent(row)">绑定代理商</el-button> | <el-button type="text" size="small" v-if="cus_build_index_bindAgent" @click="bindAgent(row)">绑定代理商</el-button> | ||||
<el-button type="text" v-if="cus_build_index_del" @click="del(row)">删除</el-button> | <el-button type="text" v-if="cus_build_index_del" @click="del(row)">删除</el-button> | ||||
@@ -529,7 +529,7 @@ export default { | |||||
if (value) { | if (value) { | ||||
if (!/^1[3456789]\d{9}$/.test(value)) { | if (!/^1[3456789]\d{9}$/.test(value)) { | ||||
// alert("手机号码不合法,请重新输入"); | // alert("手机号码不合法,请重新输入"); | ||||
callback(new Error("手机号码不合法,请重新输入")); | |||||
callback(new Error("手机号格式错误,请重新输入")); | |||||
} | } | ||||
} | } | ||||
callback(); | callback(); | ||||
@@ -543,7 +543,7 @@ export default { | |||||
this.passFlag=false | this.passFlag=false | ||||
if (!/^1[3456789]\d{9}$/.test(value)) { | if (!/^1[3456789]\d{9}$/.test(value)) { | ||||
// alert("手机号码不合法,请重新输入"); | // alert("手机号码不合法,请重新输入"); | ||||
callback(new Error("手机号码不合法,请重新输入")); | |||||
callback(new Error("手机号格式错误,请重新输入")); | |||||
}else{ | }else{ | ||||
// 验证电话号码 | // 验证电话号码 | ||||
this.$api.api.verPhone(value).then((res) => { | this.$api.api.verPhone(value).then((res) => { | ||||
@@ -640,11 +640,11 @@ export default { | |||||
options1: [ | options1: [ | ||||
{ | { | ||||
value: "0", | value: "0", | ||||
label: "服务器内", | |||||
label: "服务中", | |||||
}, | }, | ||||
{ | { | ||||
value: "1", | value: "1", | ||||
label: "已失效", | |||||
label: "已过期", | |||||
}, | }, | ||||
], | ], | ||||
options: [ | options: [ | ||||
@@ -660,6 +660,10 @@ export default { | |||||
value: "2", | value: "2", | ||||
label: "演示", | label: "演示", | ||||
}, | }, | ||||
{ | |||||
value: "3", | |||||
label: "测试", | |||||
}, | |||||
], | ], | ||||
currentPage: 1, | currentPage: 1, | ||||
size: 10, | size: 10, | ||||
@@ -859,6 +863,10 @@ export default { | |||||
// this.optionsoperationalPeople = res.data; | // this.optionsoperationalPeople = res.data; | ||||
// }); | // }); | ||||
}, | }, | ||||
screen(){ | |||||
this.currentPage=1 | |||||
this.zkhousePage() | |||||
}, | |||||
addSurequxiao() { | addSurequxiao() { | ||||
this.dialogVisible = false; | this.dialogVisible = false; | ||||
}, | }, | ||||
@@ -7,7 +7,7 @@ | |||||
// const url = 'http://192.168.31.169:9999' //长龙 | // const url = 'http://192.168.31.169:9999' //长龙 | ||||
const url = 'http://192.168.31.134:9999' //嘉豪 | const url = 'http://192.168.31.134:9999' //嘉豪 | ||||
// const url = 'http://192.168.31.100:9999' //王笑 | // const url = 'http://192.168.31.100:9999' //王笑 | ||||
// const url = 'http://zwfakg.natappfree.cc' //王笑 | |||||
// const url = 'http://jrcd6b.natappfree.cc' //王笑 | |||||
const CompressionWebpackPlugin = require('compression-webpack-plugin') | const CompressionWebpackPlugin = require('compression-webpack-plugin') | ||||
const productionGzipExtensions = ['js', 'css'] | const productionGzipExtensions = ['js', 'css'] | ||||