@@ -500,6 +500,15 @@ export function correctUpdate(query) { | |||||
}) | }) | ||||
} | } | ||||
// 新增小程序权限 | |||||
export function menuApiSave(data) { | |||||
return request({ | |||||
url: '/admin/menu/apiSave', | |||||
method:'post', | |||||
data: data | |||||
}) | |||||
} | |||||
// | // | ||||
// 客户管理客户裂变 | // 客户管理客户裂变 | ||||
export function customerManagement(query) { | export function customerManagement(query) { | ||||
@@ -1263,5 +1272,28 @@ export function findByImeiExport(data) { | |||||
method: 'GET', | method: 'GET', | ||||
}) | }) | ||||
} | } | ||||
// 导出设备日志 | |||||
export function getAllAccountName(data) { | |||||
return request({ | |||||
url: `/autoSR/api/zkAgentPool/getAllAccountName?itemId=${data}`, | |||||
method: 'GET', | |||||
}) | |||||
} | |||||
// 导出设备日志 | |||||
export function getAllDeptName(data) { | |||||
return request({ | |||||
url: `/autoSR/api/zkAgentPool/getAllDeptName?itemId=${data}`, | |||||
method: 'GET', | |||||
}) | |||||
} | |||||
// 话术关键词执行明细 | |||||
export function getResultsList(data) { | |||||
return request({ | |||||
url: `/autoSR/marketing/getResultsList`, | |||||
method: 'POST', | |||||
data: data | |||||
}) | |||||
} | |||||
@@ -7,7 +7,7 @@ export const tableOption = { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 250, | menuWidth: 250, | ||||
menu:false, | menu:false, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
showColumnBtn: false, | showColumnBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
@@ -86,7 +86,7 @@ export const tableOption1 = { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 150, | menuWidth: 150, | ||||
menu:false, | menu:false, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: true, | refreshBtn: true, | ||||
showClomnuBtn: false, | showClomnuBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
@@ -108,33 +108,33 @@ export const tableOption1 = { | |||||
label: "登录手机", | label: "登录手机", | ||||
prop: "createBy", | prop: "createBy", | ||||
}, | }, | ||||
{ | |||||
label: "登录后台", | |||||
prop: "title", | |||||
}, | |||||
{ | |||||
label: "组织名称", | |||||
prop: "title", | |||||
}, | |||||
{ | |||||
label: "登录客户端", | |||||
prop: "title", | |||||
}, | |||||
// { | |||||
// label: "登录后台", | |||||
// prop: "title", | |||||
// }, | |||||
// { | |||||
// label: "组织名称", | |||||
// prop: "title", | |||||
// }, | |||||
// { | |||||
// label: "登录客户端", | |||||
// prop: "title", | |||||
// }, | |||||
{ | { | ||||
label: "登录IP", | label: "登录IP", | ||||
prop: "remoteAddr" | prop: "remoteAddr" | ||||
}, | }, | ||||
{ | |||||
label: "城市", | |||||
prop: "remoteAddr" | |||||
}, | |||||
// { | |||||
// label: "城市", | |||||
// prop: "remoteAddr" | |||||
// }, | |||||
{ | { | ||||
label: "登录时间", | label: "登录时间", | ||||
prop: "createTime" | prop: "createTime" | ||||
}, | }, | ||||
{ | |||||
label: "离线时间", | |||||
prop: "createTime" | |||||
}, | |||||
// { | |||||
// label: "离线时间", | |||||
// prop: "createTime" | |||||
// }, | |||||
] | ] | ||||
}; | }; |
@@ -9,7 +9,7 @@ const publicOption = { | |||||
// menuAlign: "center", | // menuAlign: "center", | ||||
// menuWidth: 250, | // menuWidth: 250, | ||||
// menu: false, | // menu: false, | ||||
// align: "center", | |||||
// align: "left", | |||||
// refreshBtn: false, | // refreshBtn: false, | ||||
// showColumnBtn: false, | // showColumnBtn: false, | ||||
// searchSize: "mini", | // searchSize: "mini", | ||||
@@ -62,7 +62,7 @@ | |||||
<div class="app-titel"> | <div class="app-titel"> | ||||
<div class="label" style="color: #ffffff">筛选相关:</div> | <div class="label" style="color: #ffffff">筛选相关:</div> | ||||
<div style="margin-left: 20px"> | |||||
<div> | |||||
<el-button @click="Screening()" type="primary">筛选</el-button> | <el-button @click="Screening()" type="primary">筛选</el-button> | ||||
</div> | </div> | ||||
<div style="margin-left: 20px"> | <div style="margin-left: 20px"> | ||||
@@ -333,7 +333,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 150, | menuWidth: 150, | ||||
menu:false, | menu:false, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: true, | refreshBtn: true, | ||||
showClomnuBtn: false, | showClomnuBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
@@ -8,7 +8,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -97,7 +97,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -145,7 +145,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -216,7 +216,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
selection:true, | selection:true, | ||||
@@ -316,7 +316,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
delBtn: false, | delBtn: false, | ||||
@@ -342,5 +342,49 @@ export default { | |||||
prop: "remarks", | prop: "remarks", | ||||
}, | }, | ||||
] | ] | ||||
}, | |||||
StatisticsAnalysisOfMarketingSpeech: { | |||||
border: true, | |||||
index: false, | |||||
height: 480, | |||||
indexLabel: "序号", | |||||
stripe: true, | |||||
menuAlign: "center", | |||||
menuWidth: 146, | |||||
menu: false, | |||||
align: "left", | |||||
refreshBtn: false, | |||||
searchSize: "mini", | |||||
delBtn: false, | |||||
addBtn: false, | |||||
editBtn: false, | |||||
viewBtn: false, | |||||
size: "small", | |||||
column: [ | |||||
{ | |||||
label: "销讲场景", | |||||
prop: "firstName", | |||||
}, | |||||
{ | |||||
label: "销讲指标", | |||||
prop: "secondName", | |||||
}, | |||||
{ | |||||
label: "话术关键词", | |||||
prop: "thirdName", | |||||
}, | |||||
{ | |||||
label: "执行接待数", | |||||
prop: "num", | |||||
}, | |||||
{ | |||||
label: "执行接待占比", | |||||
prop: "zxl", | |||||
formatter: row => { | |||||
return `${row.zxl||0}%` | |||||
} | |||||
}, | |||||
] | |||||
} | } | ||||
} | } |
@@ -1405,7 +1405,7 @@ export default { | |||||
}; | }; | ||||
</script> | </script> | ||||
<style scoped="scoped" lang="scss" > | |||||
<style scoped="scoped" lang="scss"> | |||||
.box-center { | .box-center { | ||||
width: 100%; | width: 100%; | ||||
padding: 5px 15px 40px; | padding: 5px 15px 40px; | ||||
@@ -8,9 +8,10 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
selection: true, | selection: true, | ||||
tip: false, | |||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
delBtn: false, | delBtn: false, | ||||
@@ -114,9 +115,10 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
selection: true, | selection: true, | ||||
tip: false, | |||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
delBtn: false, | delBtn: false, | ||||
@@ -221,7 +223,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
selection: false, | selection: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
@@ -278,7 +280,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: false, | menu: false, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
selection: false, | selection: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
@@ -8,9 +8,10 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
selection: true, | selection: true, | ||||
tip: false, | |||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
delBtn: false, | delBtn: false, | ||||
@@ -223,8 +223,8 @@ | |||||
v-for="(item, index) in tablist" | v-for="(item, index) in tablist" | ||||
style="height: 32px" | style="height: 32px" | ||||
:key="index" | :key="index" | ||||
:class="{ 'el-button--primary': roleindex == index }" | |||||
@click="tapspagek(index)" | |||||
:class="{ 'el-button--primary': item.select }" | |||||
@click="tapspagek(item, index)" | |||||
>{{ item.name }} | >{{ item.name }} | ||||
</el-button> | </el-button> | ||||
</div> | </div> | ||||
@@ -244,7 +244,7 @@ | |||||
> | > | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div style="height: calc(100% - 100px);"> | |||||
<div style="height: calc(100% - 100px)"> | |||||
<div class="center2" id="center2"> | <div class="center2" id="center2"> | ||||
<div | <div | ||||
class="text" | class="text" | ||||
@@ -257,7 +257,7 @@ | |||||
}" | }" | ||||
:key="index" | :key="index" | ||||
:data-speaker="item.speaker" | :data-speaker="item.speaker" | ||||
v-if="roleindex == 0 || item.speaker == roleindex" | |||||
v-if="isShowRole(item)" | |||||
> | > | ||||
<div class="avatar"> | <div class="avatar"> | ||||
<div> | <div> | ||||
@@ -317,7 +317,16 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="topzuo-you" style="overflow-y: auto"> | <div class="topzuo-you" style="overflow-y: auto"> | ||||
<div style="padding: 0 10px; height: 100px;display: flex;flex-direction: column;justify-content: space-between; border-bottom: 1px solid #e0e0e0"> | |||||
<div | |||||
style=" | |||||
padding: 0 10px; | |||||
height: 100px; | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: space-between; | |||||
border-bottom: 1px solid #e0e0e0; | |||||
" | |||||
> | |||||
<div | <div | ||||
style=" | style=" | ||||
width: 100%; | width: 100%; | ||||
@@ -448,45 +457,58 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="topyou"> | <div class="topyou"> | ||||
<div style="padding: 0 10px; height: 100px;display: flex;flex-direction: column;justify-content: space-between; border-bottom: 1px solid #e0e0e0"> | |||||
<div | <div | ||||
style=" | style=" | ||||
width: 100%; | |||||
height: 44px; | |||||
padding: 0 10px; | |||||
height: 100px; | |||||
display: flex; | display: flex; | ||||
align-items: center; | |||||
flex-direction: column; | |||||
justify-content: space-between; | |||||
border-bottom: 1px solid #e0e0e0; | |||||
" | " | ||||
> | > | ||||
<div | <div | ||||
style="flex: 1; font-size: 16px; color: #333333; text-indent: 5%" | |||||
> | |||||
销讲执行 | |||||
</div> | |||||
</div> | |||||
<div class="pingfenbox"> | |||||
<el-button | |||||
:class="{ activecllasscet: zhixingcenterindex == 0 }" | |||||
type="" | |||||
style="height: 32px; border-right: none; border-radius: 5px 0 0 5px" | |||||
@click="recordclick(0)" | |||||
>销讲总执行率{{ userinformationlist.fraction || 0 }}%</el-button | |||||
> | |||||
<el-button | |||||
:class="{ activecllasscet: zhixingcenterindex == 1 }" | |||||
type="" | |||||
style=" | style=" | ||||
margin-left: 0px; | |||||
height: 32px; | |||||
width: 126.5px; | |||||
border-left: none; | |||||
border-radius: 0 5px 5px 0; | |||||
width: 100%; | |||||
height: 44px; | |||||
display: flex; | |||||
align-items: center; | |||||
" | " | ||||
@click="recordclick(1)" | |||||
>禁忌执行</el-button | |||||
> | > | ||||
<div | |||||
style="flex: 1; font-size: 16px; color: #333333; text-indent: 5%" | |||||
> | |||||
销讲执行 | |||||
</div> | |||||
</div> | |||||
<div class="pingfenbox"> | |||||
<el-button | |||||
:class="{ activecllasscet: zhixingcenterindex == 0 }" | |||||
type="" | |||||
style=" | |||||
height: 32px; | |||||
border-right: none; | |||||
border-radius: 5px 0 0 5px; | |||||
" | |||||
@click="recordclick(0)" | |||||
>销讲总执行率{{ userinformationlist.fraction || 0 }}%</el-button | |||||
> | |||||
<el-button | |||||
:class="{ activecllasscet: zhixingcenterindex == 1 }" | |||||
type="" | |||||
style=" | |||||
margin-left: 0px; | |||||
height: 32px; | |||||
width: 126.5px; | |||||
border-left: none; | |||||
border-radius: 0 5px 5px 0; | |||||
" | |||||
@click="recordclick(1)" | |||||
>禁忌执行</el-button | |||||
> | |||||
</div> | |||||
</div> | </div> | ||||
</div> | |||||
<div v-if="zhixingcenterindex == 0"> | <div v-if="zhixingcenterindex == 0"> | ||||
<div | <div | ||||
style=" | style=" | ||||
@@ -1114,15 +1136,7 @@ export default { | |||||
arr: [], //录音文件列表 | arr: [], //录音文件列表 | ||||
aplayerId: 0, | aplayerId: 0, | ||||
aplayerLength: 0, //文件个数 | aplayerLength: 0, //文件个数 | ||||
tablist: [ | |||||
{ name: "全部" }, | |||||
{ name: "A" }, | |||||
{ name: "b" }, | |||||
{ name: "c" }, | |||||
{ name: "c" }, | |||||
{ name: "c" }, | |||||
{ name: "c" }, | |||||
], | |||||
tablist: [], | |||||
roleindex: 0, | roleindex: 0, | ||||
itemIndex: 0, // 0 全部 | itemIndex: 0, // 0 全部 | ||||
zhixingcenterindex: 0, | zhixingcenterindex: 0, | ||||
@@ -1166,6 +1180,8 @@ export default { | |||||
outSpeechSkillList: [], // 导出话术列表 | outSpeechSkillList: [], // 导出话术列表 | ||||
isNum: false, | isNum: false, | ||||
searchText: "", | searchText: "", | ||||
roleSelectArr: [0], // 当前选中的角色标记点 | |||||
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -1191,6 +1207,23 @@ export default { | |||||
return value.onebest.match(this.searchText); | return value.onebest.match(this.searchText); | ||||
}); | }); | ||||
}, | }, | ||||
// 是否展示改角色 | |||||
isShowRole() { | |||||
return (data) => { | |||||
if (this.roleSelectArr.findIndex((item) => item == 0) != -1) { | |||||
return true; | |||||
} else { | |||||
let index = this.roleSelectArr.findIndex( | |||||
(item) => item == data.speaker | |||||
); | |||||
if (index != -1) { | |||||
return true; | |||||
} else { | |||||
return false; | |||||
} | |||||
} | |||||
}; | |||||
}, | |||||
}, | }, | ||||
destroyed() { | destroyed() { | ||||
this.aplayer.destroy(); | this.aplayer.destroy(); | ||||
@@ -2059,6 +2092,26 @@ export default { | |||||
}); | }); | ||||
} | } | ||||
}, | }, | ||||
// 生成角色列表 | |||||
creatTabList(num) { | |||||
for (var i = 0; i <= num; i++) { | |||||
if (i === 0) { | |||||
this.tablist.push({ | |||||
name: "全部", | |||||
select: true, | |||||
speaker: i, | |||||
}); | |||||
} else { | |||||
this.tablist.push({ | |||||
name: String.fromCharCode(i + 64), | |||||
select: false, | |||||
speaker: i, | |||||
}); | |||||
} | |||||
} | |||||
}, | |||||
//获取转写内容和播放列表 | //获取转写内容和播放列表 | ||||
Getsthetransliteratecontent() { | Getsthetransliteratecontent() { | ||||
this.$api.http.findByCusIdcusId({ cusId: this.fileId }).then((res) => { | this.$api.http.findByCusIdcusId({ cusId: this.fileId }).then((res) => { | ||||
@@ -2075,77 +2128,7 @@ export default { | |||||
if (this.userinformationlist.yon == 0) { | if (this.userinformationlist.yon == 0) { | ||||
this.isd = audopbj[this.AudioIdx].id; | this.isd = audopbj[this.AudioIdx].id; | ||||
console.log(audopbj[this.AudioIdx].speakerNum, "speakerNum"); | console.log(audopbj[this.AudioIdx].speakerNum, "speakerNum"); | ||||
for (var i = 0; i <= audopbj[this.AudioIdx].speakerNum; i++) { | |||||
if (i == 0) { | |||||
this.tablist.push({ | |||||
name: "全部", | |||||
}); | |||||
} else if (i == 1) { | |||||
this.tablist.push({ | |||||
name: "A", | |||||
}); | |||||
} else if (i == 2) { | |||||
this.tablist.push({ | |||||
name: "B", | |||||
}); | |||||
} else if (i == 3) { | |||||
this.tablist.push({ | |||||
name: "C", | |||||
}); | |||||
} else if (i == 4) { | |||||
this.tablist.push({ | |||||
name: "D", | |||||
}); | |||||
} else if (i == 5) { | |||||
this.tablist.push({ | |||||
name: "E", | |||||
}); | |||||
} else if (i == 6) { | |||||
this.tablist.push({ | |||||
name: "F", | |||||
}); | |||||
} else if (i == 7) { | |||||
this.tablist.push({ | |||||
name: "G", | |||||
}); | |||||
} else if (i == 8) { | |||||
this.tablist.push({ | |||||
name: "H", | |||||
}); | |||||
} else if (i == 9) { | |||||
this.tablist.push({ | |||||
name: "I", | |||||
}); | |||||
} else if (i == 10) { | |||||
this.tablist.push({ | |||||
name: "J", | |||||
}); | |||||
} else if (i == 11) { | |||||
this.tablist.push({ | |||||
name: "K", | |||||
}); | |||||
} else if (i == 12) { | |||||
this.tablist.push({ | |||||
name: "L", | |||||
}); | |||||
} else if (i == 13) { | |||||
this.tablist.push({ | |||||
name: "M", | |||||
}); | |||||
} else if (i == 14) { | |||||
this.tablist.push({ | |||||
name: "N", | |||||
}); | |||||
} else if (i == 15) { | |||||
this.tablist.push({ | |||||
name: "O", | |||||
}); | |||||
} else { | |||||
this.tablist.push({ | |||||
name: "P", | |||||
}); | |||||
} | |||||
} | |||||
this.creatTabList(audopbj[this.AudioIdx].speakerNum) | |||||
this.roleList = this.tablist.slice(1); | this.roleList = this.tablist.slice(1); | ||||
if (audopbj[this.AudioIdx].speaker == null) { | if (audopbj[this.AudioIdx].speaker == null) { | ||||
this.yibiaoji = "未标记"; | this.yibiaoji = "未标记"; | ||||
@@ -2168,10 +2151,37 @@ export default { | |||||
this.formatAudioList(); | this.formatAudioList(); | ||||
}); | }); | ||||
}, | }, | ||||
tapspagek(i) { | |||||
this.roleindex = i; | |||||
this.itemIndex = i; | |||||
tapspagek(data, index) { | |||||
// this.roleindex = i | |||||
if (index == 0) this.resetTabList(); | |||||
else this.resetAll(); | |||||
data.select = !data.select; | |||||
this.roleSelectArr = []; | |||||
if (index != 0) { | |||||
this.tablist.forEach((item) => { | |||||
if (item.select) { | |||||
this.roleSelectArr.push(item.speaker); | |||||
} | |||||
}); | |||||
} else { | |||||
this.roleSelectArr.push(0); | |||||
} | |||||
console.log(this.roleSelectArr); | |||||
}, | }, | ||||
// 选中全部时互斥全部选项与角色选项 | |||||
resetTabList() { | |||||
this.tablist.forEach((item) => { | |||||
item.select = false; | |||||
}); | |||||
}, | |||||
// 选中角色时将全部反选 | |||||
resetAll() { | |||||
this.tablist[0].select = false; | |||||
}, | |||||
//播放实例 | //播放实例 | ||||
bofangchushihua() { | bofangchushihua() { | ||||
var that = this; | var that = this; | ||||
@@ -8,7 +8,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -7,10 +7,11 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
selection: true, | selection: true, | ||||
tip: false, | |||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
delBtn: false, | delBtn: false, | ||||
addBtn: false, | addBtn: false, | ||||
@@ -0,0 +1,725 @@ | |||||
<template> | |||||
<div class="box"> | |||||
<div class="app-titel"> | |||||
<div | |||||
class="" | |||||
v-if="orgType != 3" | |||||
style="margin-bottom: 10px; display: flex; align-items: center" | |||||
> | |||||
<div class="">项目选择:</div> | |||||
<div style="margin-left: 8px"> | |||||
<el-select | |||||
v-model="pageParams.houseId" | |||||
@change="houseChange" | |||||
placeholder="请选择" | |||||
filterable | |||||
> | |||||
<el-option | |||||
v-for="item in houseList" | |||||
:key="item.id" | |||||
:label="item.propertyName" | |||||
:value="item.id" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</div> | |||||
</div> | |||||
<div class="toptimeqhuan"> | |||||
<div | |||||
:class="{ tophove: pageParams.dateType === 0 }" | |||||
@click="tabtimetap(0)" | |||||
> | |||||
今日 | |||||
</div> | |||||
<div | |||||
:class="{ tophove: pageParams.dateType == 1 }" | |||||
@click="tabtimetap(1)" | |||||
> | |||||
昨日 | |||||
</div> | |||||
<div | |||||
:class="{ tophove: pageParams.dateType == 2 }" | |||||
@click="tabtimetap(2)" | |||||
> | |||||
近一周 | |||||
</div> | |||||
</div> | |||||
<div style="margin-left: 26px"> | |||||
<el-date-picker | |||||
style="height: 32px; line-height: 32px; cursor: pointer" | |||||
@change="confirmtime()" | |||||
v-model="customtime" | |||||
type="daterange" | |||||
range-separator="-" | |||||
start-placeholder="开始日期" | |||||
end-placeholder="结束日期" | |||||
> | |||||
</el-date-picker> | |||||
</div> | |||||
<div style="width: 100%; display: flex; position: relative"> | |||||
<div class="items"> | |||||
团队: | |||||
<el-select v-model="pageParams.deptId" clearable placeholder="请选择"> | |||||
<el-option | |||||
v-for="item in deptList" | |||||
:key="item.deptId" | |||||
:label="item.name" | |||||
:value="item.deptId" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</div> | |||||
<div class="items"> | |||||
接待顾问: | |||||
<el-select | |||||
v-model="pageParams.accountId" | |||||
clearable | |||||
placeholder="请选择" | |||||
> | |||||
<el-option | |||||
v-for="item in accountList" | |||||
:key="item.agentId" | |||||
:label="item.name" | |||||
:value="item.agentId" | |||||
> | |||||
</el-option> | |||||
</el-select> | |||||
</div> | |||||
<div class="items"> | |||||
<el-button type="primary" @click="getorgCode">筛选</el-button> | |||||
<el-button type="text" @click="clear">清空筛选条件</el-button> | |||||
</div> | |||||
<p class="export"> | |||||
<el-button type="primary" @click="exportExcel">导出</el-button> | |||||
</p> | |||||
</div> | |||||
</div> | |||||
<div class="tabContainer"> | |||||
<div> | |||||
<avue-crud | |||||
ref="crud" | |||||
:page.sync="page" | |||||
:data="tableData" | |||||
:table-loading="tableLoading" | |||||
:option="tableOption" | |||||
:show-column.sync="showColumn" | |||||
@size-change="handleSizeChange" | |||||
@current-change="handleCurrentChange" | |||||
> | |||||
<template slot="menuLeft"> | |||||
<div class="title"> | |||||
<div class="youxiao">有效接待:{{ effectiveReceptionNum }}条</div> | |||||
</div> | |||||
</template> | |||||
</avue-crud> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
data() { | |||||
return { | |||||
tableIdName: "StatisticsAnalysisOfMarketingSpeech", // 当前页面需要的变量 | |||||
tableOption: this.$tableOption.StatisticsAnalysisOfMarketingSpeech, // 当前table配置项 | |||||
tableLoading: false, // 是否显示加载中 | |||||
showColumn: [], // 监听的显示列的变量 | |||||
page: { | |||||
total: 0, // 总页数 | |||||
currentPage: 1, // 当前页数 | |||||
pageSize: 10, // 每页显示多少条 | |||||
}, | |||||
customtime: [], | |||||
effectiveReceptionNum: 0, // 有效接待条数 | |||||
pageParams: { | |||||
// 获取echarts图标的接口入参 | |||||
houseId: "", // 楼盘id | |||||
deptId: "", // 部门id | |||||
accountId: "", // 经纪人id | |||||
statDateStart: "", // 开始时间 | |||||
statDateEnd: "", // 结束时间 | |||||
dateType: 2, // 时间类型 0 今天 ,1昨天,2近七天 | |||||
}, | |||||
deptList: [], // 部门/团队列表 | |||||
accountList: [], // 顾问列表 | |||||
objList: [ | |||||
{ | |||||
name: "客户来源渠道分布", | |||||
title: "接待总数", | |||||
matchKeywords: [], | |||||
id: "deptName", // echarts渲染的盒子id | |||||
total: 0, // 接待总数 | |||||
}, | |||||
{ | |||||
name: "客户等级分布", | |||||
title: "客户总数", | |||||
matchKeywords: [], | |||||
id: "accountName", // echarts渲染的盒子id | |||||
total: 0, // 客户总数 | |||||
}, | |||||
], // 数据合集包含 客户来源渠道分布 客户等级分布 | |||||
tableData: [], // 底部表格数据 | |||||
houseList: [], // 项目列表 | |||||
orgType: localStorage.getItem("orgType"), // 当前登录角色 | |||||
}; | |||||
}, | |||||
watch: { | |||||
showColumn(nowV) { | |||||
let params = { | |||||
tableIdName: this.tableIdName, | |||||
optionData: nowV, | |||||
}; | |||||
this.$db.upDate(params); | |||||
}, | |||||
}, | |||||
created() { | |||||
// 获取显隐的列表 | |||||
this.setTableOption(); | |||||
}, | |||||
mounted() { | |||||
this.pageParams.houseId = localStorage.getItem("houseId"); | |||||
if (this.orgType != 3) { | |||||
this.zkhousePage(); | |||||
} else { | |||||
this.initPage(); | |||||
} | |||||
}, | |||||
methods: { | |||||
// 导出excel | |||||
exportExcel() { | |||||
this.exportMethodPost( | |||||
"/autoSR/marketing/getResultsListExpor", | |||||
"销讲话术分析", | |||||
this.pageParams | |||||
); | |||||
}, | |||||
// 导出.Excel公用方法 | |||||
exportMethodPost(url, name, data = {}) { | |||||
axios({ | |||||
method: "get", | |||||
url: url, | |||||
params: data, | |||||
responseType: "blob", | |||||
}) | |||||
.then((res) => { | |||||
if (!res) { | |||||
this.$message.error("获取数据失败,请稍候再试"); | |||||
return; | |||||
} | |||||
let blob = new Blob([res], { type: "application/vnd.ms-excel" }); | |||||
let date = new Date(); | |||||
let time = date.toLocaleDateString(); | |||||
// console.log(time, "时间"); | |||||
if ("download" in document.createElement("a")) { | |||||
const link = document.createElement("a"); | |||||
link.style.display = "none"; | |||||
link.href = URL.createObjectURL(blob); | |||||
// link.download = res.headers['content-disposition'] //下载后文件名 | |||||
link.download = (name || "导出文件") + time + ".xlsx"; //下载的文件名 | |||||
document.body.appendChild(link); | |||||
link.click(); | |||||
document.body.removeChild(link); | |||||
} else { | |||||
// console.log("--------------------jingla") | |||||
let fileName = (name || "导出文件") + time + ".xlsx"; //下载的文件名 | |||||
navigator.msSaveBlob(blob, fileName); | |||||
} | |||||
}) | |||||
.catch((error) => { | |||||
// Message.error({ | |||||
// message: '网络连接错误' | |||||
// }) | |||||
console.log(error); | |||||
}); | |||||
}, | |||||
// 获取当前页面的显隐 | |||||
setTableOption() { | |||||
this.$db.getDataByKey(this.tableIdName).then((res) => { | |||||
if (res.tableIdName == this.tableIdName) { | |||||
this.showColumn = res.optionData; | |||||
} | |||||
}); | |||||
}, | |||||
// 获取项目列表 | |||||
zkhousePage() { | |||||
this.$api.api | |||||
.findHouseByUser({ | |||||
orgType: localStorage.getItem("orgType"), | |||||
}) | |||||
.then((res) => { | |||||
this.houseList = res.data; | |||||
if (localStorage.getItem("orgType") == 0) { | |||||
this.pageParams.houseId = res.data[0].id; | |||||
} | |||||
this.initPage(); | |||||
}); | |||||
}, | |||||
// 切换项目 | |||||
houseChange() { | |||||
this.resetPageTableDataObj(); | |||||
this.clear(); | |||||
this.initPage(); | |||||
}, | |||||
initPage() { | |||||
this.getAllDeptName(); | |||||
this.getAllAccountName(); | |||||
this.getorgCode(); | |||||
}, | |||||
// 重置分页条件 | |||||
resetPageTableDataObj() { | |||||
this.page.currentPage = 1; | |||||
}, | |||||
// 清空筛选条件 | |||||
clear() { | |||||
this.pageParams.deptId = ""; | |||||
this.pageParams.accountId = ""; | |||||
this.pageParams.statDateStart = ""; | |||||
this.pageParams.statDateEnd = ""; | |||||
this.pageParams.dateType = 2; | |||||
this.customtime = []; | |||||
}, | |||||
// 部门 | |||||
getAllDeptName() { | |||||
this.$api.api.getAllDeptName(this.pageParams.houseId).then((res) => { | |||||
if (res.code == 10000) { | |||||
this.deptList = res.data; | |||||
} | |||||
}); | |||||
}, | |||||
// 顾问 | |||||
getAllAccountName() { | |||||
this.$api.api.getAllAccountName(this.pageParams.houseId).then((res) => { | |||||
if (res.code == 10000) { | |||||
this.accountList = res.data; | |||||
} | |||||
}); | |||||
}, | |||||
tabtimetap(index) { | |||||
this.pageParams.dateType = index; | |||||
this.pageParams.statDateStart = ""; | |||||
this.pageParams.statDateEnd = ""; | |||||
this.customtime = []; | |||||
this.resetPageTableDataObj(); | |||||
this.getorgCode(); | |||||
}, | |||||
confirmtime() { | |||||
if (this.customtime) { | |||||
console.log(this.customtime) | |||||
this.pageParams.dateType = ""; | |||||
const d = new Date(this.customtime[0]); | |||||
this.pageParams.statDateStart = | |||||
d.getFullYear() + | |||||
"-" + | |||||
this.Zeropadding(d.getMonth() + 1) + | |||||
"-" + | |||||
this.Zeropadding(d.getDate()); | |||||
const c = new Date(this.customtime[1]); | |||||
this.pageParams.statDateEnd = | |||||
c.getFullYear() + | |||||
"-" + | |||||
this.Zeropadding(c.getMonth() + 1) + | |||||
"-" + | |||||
this.Zeropadding(c.getDate()) + | |||||
" 23:59:59"; | |||||
this.getorgCode(); | |||||
} | |||||
}, | |||||
//时间补0 | |||||
Zeropadding(s) { | |||||
return s < 10 ? "0" + s : s; | |||||
}, | |||||
// 话术关键词执行明细 | |||||
getorgCode() { | |||||
this.tableData = []; | |||||
this.$api.api | |||||
.getResultsList({ | |||||
...this.pageParams, | |||||
pageNum: this.page.currentPage, | |||||
pageSize: this.page.pageSize, | |||||
totalPage: this.page.total, | |||||
}) | |||||
.then((res) => { | |||||
if (res.code == 0) { | |||||
this.tableData = res.data.list.records; | |||||
this.page.total = res.data.list.total; | |||||
this.effectiveReceptionNum = res.data.total; | |||||
} | |||||
}); | |||||
}, | |||||
// 拼接需要传的参数 | |||||
getParams() { | |||||
return `?houseId=${this.pageParams.houseId}&deptId=${this.pageParams.deptId}&accountId=${this.pageParams.accountId}&statDateStart=${this.pageParams.statDateStart}&statDateEnd=${this.pageParams.statDateEnd}&dateType=${this.pageParams.dateType}`; | |||||
}, | |||||
backTop() { | |||||
$("html,body").animate({ scrollTop: 100 }, 800); | |||||
}, | |||||
// 上下页 | |||||
handleCurrentChange(e) { | |||||
console.log(e); | |||||
this.page.currentPage = e; | |||||
this.getorgCode(); | |||||
}, | |||||
// 页面数量修改 | |||||
handleSizeChange(e) { | |||||
this.page.pageSize = e; | |||||
this.getorgCode(); | |||||
}, | |||||
}, | |||||
}; | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.box { | |||||
padding: 0 20px; | |||||
} | |||||
.app-titel { | |||||
padding: 20px 24px; | |||||
width: 100%; | |||||
/*min-height: 80px;*/ | |||||
background: #ffffff; | |||||
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04); | |||||
border-radius: 8px; | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
} | |||||
.export { | |||||
position: absolute; | |||||
right: 0; | |||||
} | |||||
.app-titel .items { | |||||
margin: 20px 24px 0 0; | |||||
} | |||||
.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; | |||||
} | |||||
.tophove { | |||||
color: #ffffff; | |||||
background: #2671e2; | |||||
} | |||||
.app-box { | |||||
width: 100%; | |||||
padding-bottom: 20px; | |||||
background: #ffffff; | |||||
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04); | |||||
border-radius: 8px; | |||||
padding-top: 20px; | |||||
padding-left: 30px; | |||||
padding-right: 30px; | |||||
margin-top: 30px; | |||||
} | |||||
.conbox { | |||||
height: 18px; | |||||
font-size: 18px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
font-weight: 600; | |||||
color: #32363d; | |||||
line-height: 18px; | |||||
} | |||||
/*.con-bodeer-box{*/ | |||||
/* width: 100%;height: 113px;*/ | |||||
/* border-radius: 4px;border: 1px solid #E0E0E0;margin-top: 20px;*/ | |||||
/*}*/ | |||||
/*.con-bodeer-box .con-flex{*/ | |||||
/* width: 100%;height: 56px;display: flex;align-items: center;*/ | |||||
/*}*/ | |||||
/*.con-bodeer-box .con-flex div{*/ | |||||
/* flex: 1;text-align: center;line-height: 56px;font-size: 16px;*/ | |||||
/*}*/ | |||||
.box-forhtml { | |||||
width: 100%; | |||||
height: 400px; | |||||
background: #ffffff; | |||||
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04); | |||||
border-radius: 8px; | |||||
padding-top: 20px; | |||||
padding-left: 30px; | |||||
padding-right: 30px; | |||||
margin-top: 30px; | |||||
} | |||||
.box-forhtml-flex { | |||||
width: 100%; | |||||
display: flex; | |||||
margin-top: 20px; | |||||
} | |||||
.box-forhtml-flex .left { | |||||
width: 50%; | |||||
height: 320px; | |||||
} | |||||
.box-forhtml-flex .right { | |||||
width: 50%; | |||||
height: 330px; | |||||
display: flex; | |||||
justify-content: center; | |||||
} | |||||
.Templatetable { | |||||
width: 88%; | |||||
height: 100%; | |||||
margin: 0 auto; | |||||
overflow-y: auto; | |||||
} | |||||
.table-tit { | |||||
width: 100%; | |||||
height: 20px; | |||||
line-height: 20px; | |||||
display: flex; | |||||
} | |||||
.table-tit > div:nth-of-type(1) { | |||||
width: 10%; | |||||
text-align: center; | |||||
font-size: 16px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
font-weight: 600; | |||||
color: #606775; | |||||
} | |||||
.table-tit > div:nth-of-type(2) { | |||||
width: 40%; | |||||
text-align: center; | |||||
font-size: 16px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
font-weight: 600; | |||||
color: #606775; | |||||
} | |||||
.table-tit > div:nth-of-type(3) { | |||||
width: 20%; | |||||
text-align: center; | |||||
font-size: 16px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
font-weight: 600; | |||||
color: #606775; | |||||
} | |||||
.table-tit > div:nth-of-type(4) { | |||||
width: 20%; | |||||
text-align: center; | |||||
font-size: 16px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
font-weight: 600; | |||||
color: #606775; | |||||
} | |||||
.table-tit > div:nth-of-type(5) { | |||||
width: 10%; | |||||
text-align: center; | |||||
font-size: 16px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
font-weight: 600; | |||||
color: #606775; | |||||
} | |||||
.table-cent { | |||||
width: 100%; | |||||
height: 20px; | |||||
line-height: 20px; | |||||
display: flex; | |||||
margin-top: 18px; | |||||
} | |||||
.table-cent > div:nth-of-type(1) { | |||||
width: 10%; | |||||
text-align: center; | |||||
font-size: 14px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
color: #32363d; | |||||
} | |||||
.table-cent > div:nth-of-type(2) { | |||||
width: 40%; | |||||
text-align: center; | |||||
font-size: 14px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
color: #32363d; | |||||
overflow: hidden; | |||||
white-space: nowrap; | |||||
text-overflow: ellipsis; | |||||
} | |||||
.table-cent > div:nth-of-type(3) { | |||||
width: 20%; | |||||
text-align: center; | |||||
font-size: 14px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
color: #32363d; | |||||
} | |||||
.table-cent > div:nth-of-type(4) { | |||||
width: 20%; | |||||
text-align: center; | |||||
font-size: 14px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
color: #32363d; | |||||
} | |||||
.table-cent > div:nth-of-type(5) { | |||||
width: 10%; | |||||
text-align: center; | |||||
font-size: 14px; | |||||
font-family: PingFangSC-Semibold, PingFang SC; | |||||
color: #32363d; | |||||
} | |||||
.indeclass { | |||||
width: 20px; | |||||
height: 20px; | |||||
border-radius: 50%; | |||||
background: #ecf1ff; | |||||
color: #ffffff; | |||||
text-align: center; | |||||
line-height: 20px; | |||||
font-size: 14px; | |||||
} | |||||
.el-date-editor .el-range__icon { | |||||
line-height: 25px; | |||||
} | |||||
.el-date-editor .el-range-separator { | |||||
line-height: 25px; | |||||
} | |||||
.el-date-editor .el-range-input, | |||||
.el-date-editor .el-range-separator { | |||||
margin: 3px; | |||||
} | |||||
.con-bodeer-box { | |||||
width: 100%; | |||||
height: 113px; | |||||
border-radius: 4px; | |||||
border: 1px solid #e0e0e0; | |||||
margin-top: 20px; | |||||
} | |||||
.con-bodeer-box .con-flex { | |||||
width: 100%; | |||||
height: 56px; | |||||
display: flex; | |||||
align-items: center; | |||||
} | |||||
.con-bodeer-box .con-flex div { | |||||
flex: 1; | |||||
text-align: center; | |||||
line-height: 56px; | |||||
font-size: 16px; | |||||
} | |||||
.backTopbox { | |||||
width: 40px; | |||||
height: 40px; | |||||
border-radius: 50%; | |||||
background: #d0edff; | |||||
position: fixed; | |||||
bottom: 40px; | |||||
right: 40px; | |||||
border: none; | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
} | |||||
.backTop { | |||||
display: block; | |||||
width: 16px; | |||||
height: 20px; | |||||
} | |||||
.tabContainer { | |||||
margin: 20px 0 0 0; | |||||
width: 100%; | |||||
background: #fff; | |||||
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04); | |||||
border-radius: 8px; | |||||
} | |||||
.tabContainer .tables { | |||||
padding: 0 20px; | |||||
width: 100%; | |||||
height: 529px; | |||||
} | |||||
.tabContainer .title { | |||||
// padding: 10px 0; | |||||
width: 100%; | |||||
} | |||||
.p-title { | |||||
padding: 0 20px; | |||||
width: 100%; | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: space-between; | |||||
} | |||||
.youxiao { | |||||
padding: 10px 20px; | |||||
} | |||||
.btns { | |||||
width: 90px; | |||||
height: 40px; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
color: #fff; | |||||
background: #2671e2; | |||||
border-radius: 8px; | |||||
} | |||||
/deep/ .avue-crud__menu { | |||||
padding: 10px 0; | |||||
.avue-crud__right { | |||||
display: flex; | |||||
align-items: center; | |||||
} | |||||
} | |||||
</style> |
@@ -56,9 +56,8 @@ | |||||
> | > | ||||
</el-date-picker> | </el-date-picker> | ||||
</div> | </div> | ||||
</div> | |||||
<div class="app-titel"> | |||||
<div style="margin-left: 26px; margin-top: 12px" class="div-lab"> | |||||
<div style="margin-left: 26px;" class="div-lab"> | |||||
<div class="label">顾问:</div> | <div class="label">顾问:</div> | ||||
<el-select | <el-select | ||||
v-model="consultantlistid" | v-model="consultantlistid" | ||||
@@ -2,8 +2,8 @@ | |||||
<div class="box-center"> | <div class="box-center"> | ||||
<div class="app-top"> | <div class="app-top"> | ||||
<div class="app-titel" v-if="role != 3" style="margin-bottom: 10px"> | <div class="app-titel" v-if="role != 3" style="margin-bottom: 10px"> | ||||
<div class="titel-text">项目选择:</div> | |||||
<div style="margin-left: 26px"> | |||||
<div class="titel-text">项目选择:</div> | |||||
<div> | |||||
<el-select | <el-select | ||||
v-model="houseId" | v-model="houseId" | ||||
placeholder="请选择" | placeholder="请选择" | ||||
@@ -21,7 +21,7 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="app-titel"> | <div class="app-titel"> | ||||
<div class="titel-text">接待时间:</div> | |||||
<div class="titel-text">接待时间:</div> | |||||
<div class="toptimeqhuan"> | <div class="toptimeqhuan"> | ||||
<div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)"> | <div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)"> | ||||
近7天 | 近7天 | ||||
@@ -723,7 +723,6 @@ export default { | |||||
background: #ffffff; | background: #ffffff; | ||||
display: flex; | display: flex; | ||||
align-items: center; | align-items: center; | ||||
margin-left: 20px; | |||||
} | } | ||||
.toptimeqhuan div { | .toptimeqhuan div { | ||||
padding-left: 20px; | padding-left: 20px; | ||||
@@ -4,7 +4,7 @@ | |||||
<div class="app-top"> | <div class="app-top"> | ||||
<div v-if="orgType != 3" class="app-titel2" style="margin-bottom: 10px"> | <div v-if="orgType != 3" class="app-titel2" style="margin-bottom: 10px"> | ||||
<div class="titel-text">项目选择:</div> | <div class="titel-text">项目选择:</div> | ||||
<div style="margin-left: 26px"> | |||||
<div style=""> | |||||
<el-select | <el-select | ||||
v-model="houseId" | v-model="houseId" | ||||
filterable | filterable | ||||
@@ -23,8 +23,8 @@ | |||||
</div> | </div> | ||||
<div class="app-titel2"> | <div class="app-titel2"> | ||||
<div style="text-indent: 30px;">接待时间:</div> | |||||
<div style="margin-left: 20px;"> | |||||
<div style="text-indent: 30px;">接待时间:</div> | |||||
<div> | |||||
<el-button | <el-button | ||||
:class="{ 'el-button--primary': TimetoAhoose == 0 }" | :class="{ 'el-button--primary': TimetoAhoose == 0 }" | ||||
@click="tabtimetap(0)" | @click="tabtimetap(0)" | ||||
@@ -8,7 +8,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -8,7 +8,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -25,7 +25,6 @@ export default { | |||||
{ | { | ||||
label: "状态", | label: "状态", | ||||
prop: "status", | prop: "status", | ||||
width: "150px", | |||||
formatter: (data) => { | formatter: (data) => { | ||||
if(data.status == 0) return '启用' | if(data.status == 0) return '启用' | ||||
if(data.status == 1) return '停用' | if(data.status == 1) return '停用' | ||||
@@ -34,7 +33,6 @@ export default { | |||||
{ | { | ||||
label: "大类个数", | label: "大类个数", | ||||
prop: "count", | prop: "count", | ||||
width: "90px" | |||||
}, | }, | ||||
{ | { | ||||
@@ -52,7 +50,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -85,7 +83,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -15,18 +15,20 @@ | |||||
<!-- 表格 --> | <!-- 表格 --> | ||||
<div class="cen-tab"> | <div class="cen-tab"> | ||||
<el-table :header-cell-style="{background:'#F5F7FA',color:'#333333'}" :data="tableData" stripe style="width: 100%" height="390"> | |||||
<el-table :header-cell-style="{background:'#F5F7FA',color:'#333333'}" :data="tableData" stripe style="width: 100%" height="600"> | |||||
<el-table-column type="index" label="序号" width="50"> | <el-table-column type="index" label="序号" width="50"> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column prop="name" label="名称" align="center"> | <el-table-column prop="name" label="名称" align="center"> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column prop="permission" label="描述" align="center"> | <el-table-column prop="permission" label="描述" align="center"> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column prop="sort" label="排序" align="center"> | |||||
</el-table-column> | |||||
<!-- scope --> | <!-- scope --> | ||||
<el-table-column label="操作" align="center"> | <el-table-column label="操作" align="center"> | ||||
<template slot-scope="{ row }"> | <template slot-scope="{ row }"> | ||||
<el-button v-if="tem_ww_edit" type="text" @click="edit(row)">修改</el-button> | |||||
<el-button v-if="tem_ww_del" type="text" @click="del(row)">删除</el-button> | |||||
<el-button type="text" @click="edit(row)">修改</el-button> | |||||
<el-button type="text" @click="del(row)">删除</el-button> | |||||
</template> | </template> | ||||
</el-table-column> | </el-table-column> | ||||
</el-table> | </el-table> | ||||
@@ -49,9 +51,12 @@ | |||||
<el-form-item label="名称" prop="name"> | <el-form-item label="名称" prop="name"> | ||||
<el-input v-model="ruleForm.name"></el-input> | <el-input v-model="ruleForm.name"></el-input> | ||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="描述:" prop="permission"> | |||||
<el-form-item label="权限标识" prop="permission"> | |||||
<el-input type="textarea" v-model="ruleForm.permission"></el-input> | <el-input type="textarea" v-model="ruleForm.permission"></el-input> | ||||
</el-form-item> | </el-form-item> | ||||
<el-form-item label="排序" prop="sort"> | |||||
<el-input-number v-model="ruleForm.sort" controls-position="right" :min="0"/> | |||||
</el-form-item> | |||||
</el-form> | </el-form> | ||||
<div slot="footer" class="dialog-footer"> | <div slot="footer" class="dialog-footer"> | ||||
<el-button @click="dialogVisible = false">取 消</el-button> | <el-button @click="dialogVisible = false">取 消</el-button> | ||||
@@ -77,6 +82,8 @@ export default { | |||||
ruleForm: { | ruleForm: { | ||||
name: "", | name: "", | ||||
permission: "", | permission: "", | ||||
parentId: -1, | |||||
sort: 999, | |||||
}, | }, | ||||
searchForm: { | searchForm: { | ||||
correctWord: "", | correctWord: "", | ||||
@@ -152,7 +159,7 @@ export default { | |||||
// return; | // return; | ||||
if (this.editFlag) { | if (this.editFlag) { | ||||
console.log("编辑"); | console.log("编辑"); | ||||
this.$api.api.correctUpdate(this.ruleForm).then((res) => { | |||||
this.$api.api.menuApiSave(this.ruleForm).then((res) => { | |||||
console.log(res); | console.log(res); | ||||
if (res.code == 0) { | if (res.code == 0) { | ||||
this.dialogVisible = false; | this.dialogVisible = false; | ||||
@@ -165,10 +172,7 @@ export default { | |||||
console.log("添加"); | console.log("添加"); | ||||
// return; | // return; | ||||
this.$api.api | this.$api.api | ||||
.correctAdd({ | |||||
houseId: this.searchForm.houseId, | |||||
...this.ruleForm, | |||||
}) | |||||
.menuApiSave(this.ruleForm) | |||||
.then((res) => { | .then((res) => { | ||||
console.log(res); | console.log(res); | ||||
if (res.code == 0) { | if (res.code == 0) { | ||||
@@ -241,6 +241,7 @@ | |||||
<el-checkbox label="5">周报</el-checkbox> | <el-checkbox label="5">周报</el-checkbox> | ||||
<el-checkbox label="6">月报</el-checkbox> | <el-checkbox label="6">月报</el-checkbox> | ||||
<el-checkbox label="7">违禁提醒</el-checkbox> | <el-checkbox label="7">违禁提醒</el-checkbox> | ||||
<el-checkbox label="8">设备集体离线</el-checkbox> | |||||
</el-checkbox-group> | </el-checkbox-group> | ||||
</div> | </div> | ||||
@@ -867,6 +868,10 @@ export default { | |||||
</script> | </script> | ||||
<style lang="scss" scoped> | <style lang="scss" scoped> | ||||
/deep/ .dialog-main { | |||||
width: auto; | |||||
} | |||||
.el-dialog__wrapper { | .el-dialog__wrapper { | ||||
.el-dialog { | .el-dialog { | ||||
width: 61% !important; | width: 61% !important; | ||||
@@ -8,7 +8,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
selection: true, | selection: true, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
@@ -72,7 +72,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
selection: true, | selection: true, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
@@ -8,7 +8,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -25,21 +25,18 @@ export default { | |||||
{ | { | ||||
label: "代理商", | label: "代理商", | ||||
prop: "agentName", | prop: "agentName", | ||||
width: "120px", | |||||
hide: true, | hide: true, | ||||
showColumn: false, | showColumn: false, | ||||
}, | }, | ||||
{ | { | ||||
label: "公司", | label: "公司", | ||||
prop: "corporateName", | prop: "corporateName", | ||||
width: "120px", | |||||
hide: true, | hide: true, | ||||
showColumn: false, | showColumn: false, | ||||
}, | }, | ||||
{ | { | ||||
label: "项目地区", | label: "项目地区", | ||||
prop: "provinceName", | prop: "provinceName", | ||||
width: "120px", | |||||
formatter: (data) => { | formatter: (data) => { | ||||
return `${data.provinceName || '-'}${data.cityName || ''}` | return `${data.provinceName || '-'}${data.cityName || ''}` | ||||
} | } | ||||
@@ -47,7 +44,6 @@ export default { | |||||
{ | { | ||||
label: "联系人信息", | label: "联系人信息", | ||||
prop: "linkman", | prop: "linkman", | ||||
width: "110px", | |||||
formatter: (data) => { | formatter: (data) => { | ||||
return `${data.linkman}-${data.linkmanPhone}` | return `${data.linkman}-${data.linkmanPhone}` | ||||
} | } | ||||
@@ -55,7 +51,6 @@ export default { | |||||
{ | { | ||||
label: "管理员账号", | label: "管理员账号", | ||||
prop: "managerPhone", | prop: "managerPhone", | ||||
width: "110px", | |||||
}, | }, | ||||
{ | { | ||||
label: "运营人员", | label: "运营人员", | ||||
@@ -66,7 +61,6 @@ export default { | |||||
{ | { | ||||
label: "项目类型", | label: "项目类型", | ||||
prop: "houseType", | prop: "houseType", | ||||
width: "110px", | |||||
hide: true, | hide: true, | ||||
showColumn: false, | showColumn: false, | ||||
dicData: [{ | dicData: [{ | ||||
@@ -86,17 +80,14 @@ export default { | |||||
{ | { | ||||
label: "合同开始日期", | label: "合同开始日期", | ||||
prop: "startWorking", | prop: "startWorking", | ||||
width: "100px", | |||||
}, | }, | ||||
{ | { | ||||
label: "合同结束日期", | label: "合同结束日期", | ||||
prop: "endWorking", | prop: "endWorking", | ||||
width: "100px", | |||||
}, | }, | ||||
{ | { | ||||
label: "添加日期", | label: "添加日期", | ||||
prop: "createTime", | prop: "createTime", | ||||
width: "100px", | |||||
formatter: (data) => { | formatter: (data) => { | ||||
return data.createTime.substring(0, 10) | return data.createTime.substring(0, 10) | ||||
} | } | ||||
@@ -104,7 +95,6 @@ export default { | |||||
{ | { | ||||
label: "服务状态", | label: "服务状态", | ||||
prop: "residueTime", | prop: "residueTime", | ||||
width: "100px", | |||||
formatter: data => { | formatter: data => { | ||||
let str = '' | let str = '' | ||||
if (Number(data.residueTime) >= 0) { | if (Number(data.residueTime) >= 0) { | ||||
@@ -118,7 +108,6 @@ export default { | |||||
{ | { | ||||
label: "状态", | label: "状态", | ||||
prop: "lockFlag", | prop: "lockFlag", | ||||
width: "100px", | |||||
formatter: data => { | formatter: data => { | ||||
return data.lockFlag == 1 ? "禁用" : "启用" | return data.lockFlag == 1 ? "禁用" : "启用" | ||||
} | } | ||||
@@ -134,7 +123,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -8,7 +8,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -7,7 +7,7 @@ export default { | |||||
menuAlign: "center", | menuAlign: "center", | ||||
menuWidth: 146, | menuWidth: 146, | ||||
menu: true, | menu: true, | ||||
align: "center", | |||||
align: "left", | |||||
refreshBtn: false, | refreshBtn: false, | ||||
searchSize: "mini", | searchSize: "mini", | ||||
searchMenuSpan: 9, | searchMenuSpan: 9, | ||||
@@ -3,14 +3,14 @@ | |||||
* https://cli.vuejs.org/zh/config/ | * https://cli.vuejs.org/zh/config/ | ||||
*/ | */ | ||||
// const url = 'http://192.168.31.161:9999' //长龙 | // const url = 'http://192.168.31.161:9999' //长龙 | ||||
// const url = 'http://192.168.31.149:9999' // 胜浩 | |||||
const url = 'http://192.168.31.149:9999' // 胜浩 | |||||
// const url = 'http://127.0.0.1:9999' // 本地 | // const url = 'http://127.0.0.1:9999' // 本地 | ||||
const url = 'http://81.70.55.170:9999' // 测试服务器 | |||||
// const url = 'http://81.70.55.170: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 = 'http://82.156.35.22:9999' // 正式服务器2 | ||||
// const url = 'https://zanyong.hfju.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'] | ||||
module.exports = { | module.exports = { | ||||