@@ -25,11 +25,16 @@ | |||
"codemirror": "^5.53.2", | |||
"core-js": "^2.6.12", | |||
"crypto-js": "^3.1.9-1", | |||
"docxtemplater": "^3.29.4", | |||
"echarts": "^4.2.1", | |||
"element-ui": "2.12.0", | |||
"file-saver": "^2.0.5", | |||
"js-cookie": "^2.2.0", | |||
"jszip": "^3.9.1", | |||
"jszip-utils": "^0.1.0", | |||
"less-loader": "^6.0.0", | |||
"nprogress": "^0.2.0", | |||
"pizzip": "^3.1.1", | |||
"quill": "^1.3.7", | |||
"script-loader": "^0.7.2", | |||
"sockjs-client": "1.0.0", | |||
@@ -241,8 +241,6 @@ | |||
style=" | |||
display: flex; | |||
flex-wrap: wrap; | |||
height: 290px; | |||
overflow-y: auto; | |||
width: 90%; | |||
margin: 0 auto; | |||
" | |||
@@ -311,8 +309,6 @@ | |||
<div class="tabbox" v-if="employeeExecutionRatelist.list.length != 0"> | |||
<div | |||
style=" | |||
overflow-y: auto; | |||
height: 230px; | |||
width: 94%; | |||
margin: 0 auto; | |||
" | |||
@@ -976,9 +972,8 @@ | |||
<el-table | |||
:header-cell-style="{ background: '#F2F4F5' }" | |||
:data="companyRank" | |||
height="320" | |||
style="width: 100%; font-size: 14px" | |||
>> | |||
> | |||
<el-table-column | |||
prop="companyName" | |||
:label="role == 2 ? '项目名称' : '公司名称'" | |||
@@ -1044,7 +1039,6 @@ | |||
<el-table | |||
:header-cell-style="{ background: '#F2F4F5' }" | |||
:data="houseRank" | |||
height="320" | |||
style="width: 100%; font-size: 14px" | |||
>> | |||
<el-table-column | |||
@@ -1616,6 +1610,7 @@ export default { | |||
padding-left: 30px; | |||
padding-right: 30px; | |||
margin-top: 20px; | |||
min-height: 320px; | |||
} | |||
} | |||
.el-row { | |||
@@ -1627,16 +1622,16 @@ export default { | |||
.app-box-san { | |||
width: 100%; | |||
height: 350px; | |||
min-height: 350px; | |||
display: flex; | |||
margin-top: 15px; | |||
.zuo { | |||
// flex: 1; | |||
height: 100%; | |||
padding: 0 0 20px 0 ; | |||
margin-right: 15px; | |||
background: #ffffff; | |||
border-radius: 4px; | |||
width: 48.7%; | |||
flex-grow: 1; | |||
.title { | |||
width: 100%; | |||
height: 55px; | |||
@@ -1653,7 +1648,7 @@ export default { | |||
} | |||
} | |||
.you { | |||
height: 100%; | |||
flex-grow: 1; | |||
width: 49%; | |||
background: #ffffff; | |||
border-radius: 4px; | |||
@@ -7,7 +7,7 @@ | |||
<div class="topbox"> | |||
<div class="topzuo"> | |||
<div class="title" style="display: flex"> | |||
<div style="flex: 1"> | |||
<div style="flex-grow: 1"> | |||
<span class="span1" | |||
>{{ | |||
userinformationlist.visitRecord == 1 | |||
@@ -21,7 +21,7 @@ | |||
}} | |||
</span> | |||
</div> | |||
<div style="width: 120px; display: flex; color: #2671e2"> | |||
<div style="flex-shrink: 0; display: flex; color: #2671e2"> | |||
<div v-if="rec_index_addJ" @click="Addtodigest()">加精</div> | |||
<div | |||
v-if="rec_index_receflag" | |||
@@ -30,6 +30,8 @@ | |||
> | |||
{{ userinformationlist.validInvalidName }} | |||
</div> | |||
<!-- 导出 --> | |||
<div v-if="permissions.cus_index_downLoad_word" class="outDownLoad" @click="exportWord">导出话术</div> | |||
</div> | |||
</div> | |||
<div class="title" style="margin-top: 6px"> | |||
@@ -160,7 +162,13 @@ | |||
</div> | |||
</div> | |||
<div v-if="rec_index_flag" class="headpade"> | |||
<div class="biaoji" @click="biaoji()" v-if="userinformationlist.merge==0">标记</div> | |||
<div | |||
class="biaoji" | |||
@click="biaoji()" | |||
v-if="userinformationlist.merge == 0" | |||
> | |||
标记 | |||
</div> | |||
</div> | |||
</div> | |||
<div style="width: 100%"> | |||
@@ -195,10 +203,17 @@ | |||
{{ item.bg | timestamp }} | |||
</div> | |||
<div class="textcontent"> | |||
<div class="content123s" | |||
:class="{ adjskdjroleindexclass: item.isShow == 1 }" | |||
v-html="item.onebest"></div> | |||
<img @click.stop="play(item)" src="../../../public/img/play.png" alt="" style="flex-shrink: 0;width: 24px;height: 24px;"> | |||
<div | |||
class="content123s" | |||
:class="{ adjskdjroleindexclass: item.isShow == 1 }" | |||
v-html="item.onebest" | |||
></div> | |||
<img | |||
@click.stop="play(item)" | |||
src="../../../public/img/play.png" | |||
alt="" | |||
style="flex-shrink: 0; width: 24px; height: 24px" | |||
/> | |||
</div> | |||
</div> | |||
</div> | |||
@@ -403,7 +418,11 @@ | |||
<el-input v-model="form.wrongWord" :disabled="isNum" maxlength="8" autocomplete="off"></el-input> | |||
</el-form-item> | |||
<el-form-item label="正确词" prop="correctWord"> | |||
<el-input v-model="form.correctWord" maxlength="8" autocomplete="off"></el-input> | |||
<el-input | |||
v-model="form.correctWord" | |||
maxlength="8" | |||
autocomplete="off" | |||
></el-input> | |||
</el-form-item> | |||
</el-form> | |||
<div slot="footer" class="dialog-footer"> | |||
@@ -735,6 +754,12 @@ import "aplayer/dist/APlayer.min.css"; | |||
import APlayer from "aplayer"; | |||
import { mapGetters } from "vuex"; | |||
import { getStore, setStore } from "@/util/store"; | |||
import docxtemplater from "docxtemplater"; | |||
import PizZip from "pizzip"; | |||
import JSZipUtils from "jszip-utils"; | |||
import { saveAs } from "file-saver"; | |||
export default { | |||
data() { | |||
return { | |||
@@ -816,7 +841,8 @@ export default { | |||
rec_index_todo: false, | |||
rec_index_receflag: false, | |||
rec_index_textyh: false, | |||
isNum:false | |||
isNum:false, | |||
outSpeechSkillList: [], // 导出话术列表 | |||
}; | |||
}, | |||
created() { | |||
@@ -827,6 +853,7 @@ export default { | |||
this.rec_index_todo = this.permissions["rec_index_todo"]; //禁忌 | |||
this.rec_index_receflag = this.permissions["rec_index_receflag"]; //接待标记 | |||
this.rec_index_textyh = this.permissions["rec_index_textyh"]; //文本优化 | |||
console.log(this.permissions) | |||
}, | |||
mounted() { | |||
this.fileId = this.$route.query.flag; | |||
@@ -871,6 +898,67 @@ export default { | |||
}, | |||
methods: { | |||
// 格式化话术内容 | |||
formatAudioList() { | |||
let list = this.arr[0].audioContent | |||
list = JSON.parse(list) | |||
console.log(list) | |||
list.map(item => { | |||
this.outSpeechSkillList.push({ | |||
id: this.$options.filters.toCapital(item.speaker), | |||
times: this.$options.filters.timestamp(item.bg), | |||
content: item.onebest.replace(/<.*?>/gi, "") | |||
}) | |||
}) | |||
console.log(this.outSpeechSkillList) | |||
}, | |||
// 导出word | |||
exportWord() { | |||
// 读取并获得模板文件的二进制内容 | |||
JSZipUtils.getBinaryContent("/model.docx", (error, content) => { | |||
console.log(error, content); | |||
// model.docx是模板。我们在导出的时候,会根据此模板来导出对应的数据 | |||
// 抛出异常 | |||
if (error) { | |||
throw error; | |||
} | |||
// 创建一个PizZip实例,内容为模板的内容 | |||
let zip = new PizZip(content); | |||
// 创建并加载docxtemplater实例对象 | |||
let doc = new docxtemplater().loadZip(zip); | |||
// 设置模板变量的值 | |||
doc.setData({ | |||
audioList: this.outSpeechSkillList, | |||
}); | |||
try { | |||
// 用模板变量的值替换所有模板变量 | |||
doc.render(); | |||
} catch (error) { | |||
// 抛出异常 | |||
let e = { | |||
message: error.message, | |||
name: error.name, | |||
stack: error.stack, | |||
properties: error.properties, | |||
}; | |||
console.log(JSON.stringify({ error: e })); | |||
throw error; | |||
} | |||
// 生成一个代表docxtemplater对象的zip文件(不是一个真实的文件,而是在内存中的表示) | |||
let out = doc.getZip().generate({ | |||
type: "blob", | |||
mimeType: | |||
"application/vnd.openxmlformats-officedocument.wordprocessingml.document", | |||
}); | |||
// 将目标文件对象保存为目标类型的文件,并命名 | |||
saveAs(out, "接待话术.docx"); | |||
}); | |||
}, | |||
// 返回颜色 | |||
spackerColor(index) { | |||
let obj = { | |||
@@ -1403,7 +1491,7 @@ export default { | |||
// 播放 | |||
play(item) { | |||
let num = parseInt(item.bg / 1000) | |||
let num = parseInt(item.bg / 1000); | |||
this.aplayer.seek(num); | |||
this.searchisshow = false; | |||
this.aplayer.play(); | |||
@@ -1653,6 +1741,7 @@ export default { | |||
this.aplayerLength = audopbj.length; | |||
this.arr = res.data; | |||
this.bofangchushihua(); | |||
this.formatAudioList() | |||
}); | |||
}, | |||
tapspagek(i) { | |||
@@ -1847,8 +1936,8 @@ export default { | |||
text-align: left; | |||
.textcontent { | |||
flex-direction: row-reverse; | |||
text-align: left; | |||
flex-direction: row-reverse; | |||
text-align: left; | |||
} | |||
} | |||
@@ -2101,6 +2190,10 @@ export default { | |||
margin-left: 2px; | |||
} | |||
} | |||
.outDownLoad { | |||
margin: 0 0 0 0.5em; | |||
} | |||
} | |||
.topyou { | |||
width: 24%; | |||
@@ -141,7 +141,7 @@ | |||
</div> | |||
</div> | |||
<div | |||
style="overflow-y: auto; height: 250px; width: 94%; margin: 0 auto" | |||
style="height: 300px; width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in objList1.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -170,7 +170,7 @@ | |||
</div> | |||
</div> | |||
<div | |||
style="overflow-y: auto; height: 250px; width: 94%; margin: 0 auto" | |||
style="height: 300px; width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in objList2.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -206,7 +206,7 @@ | |||
</div> | |||
</div> | |||
<div | |||
style="overflow-y: auto; height: 250px; width: 94%; margin: 0 auto" | |||
style="height: 300px; width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in objList3.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -239,7 +239,7 @@ | |||
</div> | |||
</div> | |||
<div | |||
style="overflow-y: auto; height: 250px; width: 94%; margin: 0 auto" | |||
style="height: 300px; width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in objList4.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -669,7 +669,7 @@ export default { | |||
.app-box-san { | |||
width: 100%; | |||
height: 400px; | |||
min-height: 400px; | |||
display: flex; | |||
margin-top: 15px; | |||
.zuo { | |||
@@ -98,7 +98,12 @@ | |||
</el-table-column> | |||
<el-table-column prop="deptName" label="归属团队" align="center"> | |||
</el-table-column> | |||
<el-table-column prop="activeCustomer" label="接待量" align="center" sortable> | |||
<el-table-column | |||
prop="activeCustomer" | |||
label="接待量" | |||
align="center" | |||
sortable | |||
> | |||
<template slot-scope="{ row }"> {{ row.activeCustomer }}次 </template> | |||
</el-table-column> | |||
<el-table-column | |||
@@ -190,7 +195,7 @@ | |||
</div> | |||
<div | |||
v-if="echarlist.length != 0" | |||
style="overflow-y: auto; height: 258px; width: 94%; margin: 0 auto" | |||
style="min-height: 258px; width: 94%; margin: 0 auto;padding: 0 0 20px 0;" | |||
> | |||
<div class="jinbox" v-for="(item, i) in echarlist" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -235,7 +240,7 @@ | |||
</div> | |||
<div | |||
v-if="echarlist2.length != 0" | |||
style="overflow-y: auto; height: 258px; width: 94%; margin: 0 auto" | |||
style="min-height: 258px; width: 94%; margin: 0 auto;padding: 0 0 20px 0;" | |||
> | |||
<div class="jinbox" v-for="(item, i) in echarlist2" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -294,7 +299,7 @@ | |||
</div> | |||
<div | |||
v-if="echarlist1.length != 0" | |||
style="overflow-y: auto; height: 258px; width: 94%; margin: 0 auto" | |||
style="min-height: 258px; width: 94%; margin: 0 auto;padding: 0 0 20px 0;" | |||
> | |||
<div class="jinbox" v-for="(item, i) in echarlist1" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -354,7 +359,7 @@ | |||
</div> | |||
<div | |||
v-if="echarlist3.length != 0" | |||
style="overflow-y: auto; height: 258px; width: 94%; margin: 0 auto" | |||
style="min-height: 258px; width: 94%; margin: 0 auto;padding: 0 0 20px 0;" | |||
> | |||
<div class="jinbox" v-for="(item, i) in echarlist3" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -387,7 +392,7 @@ import * as echarts from "echarts"; | |||
import { mapGetters } from "vuex"; | |||
import { exportMethodPost } from "@/util/util"; | |||
export default { | |||
name:"consultantBrand", | |||
name: "consultantBrand", | |||
data() { | |||
return { | |||
houseId: "", | |||
@@ -459,6 +464,9 @@ export default { | |||
statDateEnd: this.statDateEnd, | |||
deptId: this.deptId, | |||
dateType: this.dateType == 7 ? null : this.dateType, | |||
type: 1, | |||
current: 1, | |||
size: 1, | |||
}; | |||
// exportMethodPost() | |||
exportMethodPost( | |||
@@ -597,7 +605,7 @@ export default { | |||
this["num" + type] = res.data.num || 0; | |||
this["avg" + type] = res.data.avg || 0; | |||
let arr = []; | |||
let max = 0 | |||
let max = 0; | |||
let newarr = res.data.list || []; | |||
if (newarr.length != 0) { | |||
res.data.list.map((item) => { | |||
@@ -610,7 +618,7 @@ export default { | |||
obj.name = item.accountName; | |||
obj.zxl = Math.floor(item.sumDuration / 60); | |||
if (max < obj.zxl) { | |||
max = obj.zxl | |||
max = obj.zxl; | |||
} | |||
arr.push(obj); | |||
} else if (type == 3) { | |||
@@ -625,10 +633,10 @@ export default { | |||
}); | |||
} | |||
if(type == 2) { | |||
if (type == 2) { | |||
arr.forEach((item) => { | |||
item.percentage = (item.zxl/max)*100 | |||
}) | |||
item.percentage = (item.zxl / max) * 100; | |||
}); | |||
} | |||
if (type == 3) { | |||
@@ -636,7 +644,10 @@ export default { | |||
} | |||
if (type == 4) { | |||
console.log(arr, 'arr4,ajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjaksl') | |||
console.log( | |||
arr, | |||
"arr4,ajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjakslajdklsajkldjaskldjaksl" | |||
); | |||
arr = this.dealData(arr); | |||
} | |||
return arr; | |||
@@ -899,7 +910,7 @@ export default { | |||
.app-box-san { | |||
width: 100%; | |||
height: 400px; | |||
min-height: 400px; | |||
display: flex; | |||
margin-top: 15px; | |||
.zuo { | |||
@@ -273,8 +273,7 @@ | |||
<div | |||
v-if="ceratelist.list.length != 0" | |||
style=" | |||
overflow-y: auto; | |||
height: 320px; | |||
height: 360px; | |||
width: 94%; | |||
margin: 0 auto; | |||
margin-top: 15px; | |||
@@ -290,7 +289,7 @@ | |||
></div> | |||
</div> | |||
<div class="jinboxbott"> | |||
{{ item.zxl }}{{ activeName | company }} | |||
{{ item.zxl || 0 }}{{ activeName | company }} | |||
</div> | |||
</div> | |||
</div> | |||
@@ -336,8 +335,7 @@ | |||
<div | |||
v-if="systemList.list.length != 0" | |||
style=" | |||
overflow-y: auto; | |||
height: 320px; | |||
height: 360px; | |||
width: 94%; | |||
margin: 0 auto; | |||
margin-top: 15px; | |||
@@ -1336,7 +1334,7 @@ export default { | |||
str = "次"; | |||
break; | |||
case 1: | |||
str = "分钟"; | |||
str = ""; | |||
break; | |||
case 2: | |||
str = "次"; | |||
@@ -1619,4 +1617,8 @@ export default { | |||
.el-icon-caret-top { | |||
color: #FF0000; | |||
} | |||
.nulllist { | |||
height: 396px; | |||
} | |||
</style> |
@@ -1,98 +1,108 @@ | |||
<template> | |||
<div class="box-center"> | |||
<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"> | |||
<el-select v-model="houseId" placeholder="请选择" filterable @change="houseChange"> | |||
<el-select | |||
v-model="houseId" | |||
placeholder="请选择" | |||
filterable | |||
@change="houseChange" | |||
> | |||
<el-option | |||
v-for="item in houseList" | |||
:key="item.id" | |||
:label="item.propertyName" | |||
:value="item.id"> | |||
:value="item.id" | |||
> | |||
</el-option> | |||
</el-select> | |||
</div> | |||
</div> | |||
<div class="app-titel"> | |||
<div style="text-indent: 30px;">接待时间:</div> | |||
<div class="toptimeqhuan"> | |||
<div :class="{ tophove: dateType == 4 }" @click="tabtimetap(4)"> | |||
近7天 | |||
<div class="app-titel"> | |||
<div style="text-indent: 30px">接待时间:</div> | |||
<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 :class="{ tophove: dateType == 5 }" @click="tabtimetap(5)"> | |||
近15天 | |||
</div> | |||
<div :class="{ tophove: dateType == 6 }" @click="tabtimetap(6)"> | |||
近30天 | |||
<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 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" style="margin-top: 15px"> | |||
<div class="div-lab"> | |||
<div style="margin-right: 20px" 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" | |||
<div class="app-titel" style="margin-top: 15px"> | |||
<div class="div-lab"> | |||
<div style="margin-right: 20px" class="label">团队:</div> | |||
<el-select | |||
v-model="deptId" | |||
filterable | |||
@change="deptChange" | |||
placeholder="请选择" | |||
class="div-inp" | |||
> | |||
</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 | |||
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> | |||
</el-select> | |||
</div> | |||
<div style="margin-left: 20px"> | |||
<el-button type="primary" size="small" @click="screen()" | |||
>查询</el-button | |||
<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 | |||
style="margin-left: auto; margin-right: 10px" | |||
v-if="sta_rec_downLoad" | |||
> | |||
<el-button type="primary" size="small" @click="reset()">清空</el-button> | |||
</div> | |||
<div style="margin-left: auto;margin-right:10px;" v-if="sta_rec_downLoad"> | |||
<el-button @click="downLoad">导出</el-button> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<!-- 表格 --> | |||
<div class="cen-tab"> | |||
<el-table :data="tableData" style="width: 100%"> | |||
<el-table :data="tableData" style="width: 100%"> | |||
<el-table-column prop="batchId" label="序号" align="center"> | |||
<template slot-scope="scope"> | |||
{{ | |||
@@ -102,7 +112,12 @@ | |||
}} | |||
</template> | |||
</el-table-column> | |||
<el-table-column width='90px' prop="accountName" label="日期" align="center"> | |||
<el-table-column | |||
width="90px" | |||
prop="accountName" | |||
label="日期" | |||
align="center" | |||
> | |||
<template slot-scope="scope"> | |||
{{ | |||
scope.$index == tableData.length - 1 | |||
@@ -111,18 +126,30 @@ | |||
}} | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="receptionCount" label="接待量" align="center" sortable> | |||
<template slot-scope="{row}"> | |||
{{row.receptionCount}}次 | |||
</template> | |||
<el-table-column | |||
prop="receptionCount" | |||
label="接待量" | |||
align="center" | |||
sortable | |||
> | |||
<template slot-scope="{ row }"> {{ row.receptionCount }}次 </template> | |||
</el-table-column> | |||
<el-table-column prop="accountNum" label="接待顾问" align="center" sortable width="100"> | |||
<el-table-column | |||
prop="accountNum" | |||
label="接待顾问" | |||
align="center" | |||
sortable | |||
width="100" | |||
> | |||
</el-table-column> | |||
<el-table-column prop="activeCustomer" label="有效接待" align="center" sortable width="100"> | |||
<template slot-scope="{row}"> | |||
{{row.activeCustomer}}次 | |||
</template> | |||
<el-table-column | |||
prop="activeCustomer" | |||
label="有效接待" | |||
align="center" | |||
sortable | |||
width="100" | |||
> | |||
<template slot-scope="{ row }"> {{ row.activeCustomer }}次 </template> | |||
</el-table-column> | |||
<el-table-column | |||
prop="prohibitedCustomer" | |||
@@ -132,7 +159,13 @@ | |||
width="120" | |||
> | |||
</el-table-column> | |||
<el-table-column prop="sumDuration" label="接待时长(分)" align="center" sortable width="120"> | |||
<el-table-column | |||
prop="sumDuration" | |||
label="接待时长(分)" | |||
align="center" | |||
sortable | |||
width="120" | |||
> | |||
<template slot-scope="{ row }"> | |||
{{ Math.floor(row.sumDuration / 60) }}分钟 | |||
</template> | |||
@@ -144,14 +177,16 @@ | |||
width="150" | |||
sortable | |||
> | |||
<template slot-scope="{row}"> | |||
{{row.prohibitedZb}}% | |||
</template> | |||
<template slot-scope="{ row }"> {{ row.prohibitedZb }}% </template> | |||
</el-table-column> | |||
<el-table-column prop="fraction" label="平均执行率" align="center" sortable width="110"> | |||
<template slot-scope="{row}"> | |||
{{row.fraction}}% | |||
</template> | |||
<el-table-column | |||
prop="fraction" | |||
label="平均执行率" | |||
align="center" | |||
sortable | |||
width="110" | |||
> | |||
<template slot-scope="{ row }"> {{ row.fraction }}% </template> | |||
</el-table-column> | |||
<el-table-column | |||
v-for="(item, idx) in tablist" | |||
@@ -162,9 +197,7 @@ | |||
sortable | |||
width="100" | |||
> | |||
<template slot-scope="{row}"> | |||
{{row[item.props]}}% | |||
</template> | |||
<template slot-scope="{ row }"> {{ row[item.props] }}% </template> | |||
</el-table-column> | |||
<el-table-column label="操作" align="center"> | |||
<template slot-scope="scope"> | |||
@@ -192,12 +225,7 @@ | |||
</div> | |||
</div> | |||
<el-dialog | |||
title="详情" | |||
:visible.sync="dialogVisible" | |||
width="80%" | |||
> | |||
<el-dialog title="详情" :visible.sync="dialogVisible" width="80%"> | |||
<div class="cen-tab"> | |||
<el-table | |||
max-height="300" | |||
@@ -271,14 +299,13 @@ | |||
</el-pagination> | |||
</div> | |||
</div> | |||
</el-dialog> | |||
</div> | |||
</template> | |||
<script> | |||
import { mapGetters } from "vuex"; | |||
import { exportMethodPost} from "@/util/util"; | |||
import { exportMethodPost } from "@/util/util"; | |||
export default { | |||
data() { | |||
return { | |||
@@ -315,52 +342,54 @@ export default { | |||
teamAllLeve2: [], | |||
statDate: "", | |||
dialogVisible: false, | |||
houseList:[], | |||
role:'' | |||
houseList: [], | |||
role: "", | |||
}; | |||
}, | |||
computed: { | |||
...mapGetters(["permissions"]), | |||
}, | |||
created() { | |||
this.sta_rec_downLoad = this.permissions["sta_rec_downLoad"]; | |||
}, | |||
mounted() { | |||
this.role=localStorage.getItem("orgType"); | |||
if(this.role==3){ | |||
this.role = localStorage.getItem("orgType"); | |||
if (this.role == 3) { | |||
this.houseId = localStorage.getItem("houseId"); | |||
this.tabtimetap(4); | |||
this.deptFindList(); | |||
}else{ | |||
this.zkhousePage() | |||
} else { | |||
this.zkhousePage(); | |||
} | |||
}, | |||
methods: { | |||
downLoad(){ | |||
downLoad() { | |||
let obj = { | |||
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 | |||
houseId: this.houseId, | |||
statDateStart: this.statDateStart, | |||
statDateEnd: this.statDateEnd, | |||
type: 1, | |||
current: 1, | |||
size: 1, | |||
deptId: this.deptId, | |||
accountId: this.accountId, | |||
dateType: this.dateType == 7 ? null : this.dateType, | |||
}; | |||
exportMethodPost('autoSR/cusStageStatistics/receptionStatisticsExport','接待统计',obj) | |||
exportMethodPost( | |||
"autoSR/cusStageStatistics/receptionStatisticsExport", | |||
"接待统计", | |||
obj | |||
); | |||
}, | |||
houseChange(){ | |||
this.customtime=[]; | |||
this.TimetoAhoose=4; | |||
this.statDateStart= ''; | |||
this.deptId='' | |||
this.accountId='' | |||
this.statDateEnd= ''; | |||
this.tabtimetap(4); | |||
houseChange() { | |||
this.customtime = []; | |||
this.TimetoAhoose = 4; | |||
this.statDateStart = ""; | |||
this.deptId = ""; | |||
this.accountId = ""; | |||
this.statDateEnd = ""; | |||
this.tabtimetap(4); | |||
this.deptFindList(); | |||
}, | |||
zkhousePage() { | |||
this.$api.api | |||
@@ -370,8 +399,8 @@ export default { | |||
.then((res) => { | |||
this.houseList = res.data; | |||
this.houseId = res.data[0].id; | |||
this.tabtimetap(4); | |||
this.deptFindList(); | |||
this.tabtimetap(4); | |||
this.deptFindList(); | |||
}); | |||
}, | |||
toDetail(row) { | |||
@@ -390,7 +419,7 @@ export default { | |||
size: this.size, | |||
deptId: this.deptId, | |||
accountId: this.accountId, | |||
type:2 | |||
type: 2, | |||
}) | |||
.then((res) => { | |||
this.detailData = res.data.records; | |||
@@ -419,27 +448,27 @@ export default { | |||
}, | |||
deptFindList() { | |||
// 获取团队 | |||
this.$api.http.overviewfindList({ | |||
this.$api.http | |||
.overviewfindList({ | |||
houseId: this.houseId, | |||
}) | |||
.then((res) => { | |||
let userinfo=JSON.parse(sessionStorage.getItem("zk-userInfo")) | |||
if(userinfo.content.deptType==1){ | |||
this.options.push(...res.data); | |||
this.deptId= this.options[0].deptId | |||
}else{ | |||
this.options = [ | |||
let userinfo = JSON.parse(sessionStorage.getItem("zk-userInfo")); | |||
if (userinfo.content.deptType == 1) { | |||
this.options.push(...res.data); | |||
this.deptId = this.options[0].deptId; | |||
} else { | |||
this.options = [ | |||
{ | |||
name: "全部", | |||
deptId: "", | |||
}, | |||
]; | |||
this.options.push(...res.data); | |||
this.deptId='' | |||
this.deptId = ""; | |||
} | |||
this.receptionStatisticsAllAccount(); | |||
this.accountRank(); | |||
}); | |||
}, | |||
deptChange() { | |||
@@ -474,7 +503,7 @@ export default { | |||
deptId: this.deptId, | |||
accountId: this.accountId, | |||
dateType: this.dateType == 7 ? null : this.dateType, | |||
type:1 | |||
type: 1, | |||
}) | |||
.then((res) => { | |||
this.tableData = res.data.records; | |||
@@ -547,7 +576,7 @@ export default { | |||
this.statDateStart = ""; | |||
this.statDateEnd = ""; | |||
this.dateType = index; | |||
this.customtime=[]; | |||
this.customtime = []; | |||
this.init(); | |||
}, | |||
dealData(arr) { | |||
@@ -604,13 +633,13 @@ export default { | |||
// min-width: 100px; | |||
text-align: right; | |||
} | |||
.titel-text { | |||
height: 100%; | |||
font-size: 16px; | |||
font-weight: 600; | |||
color: #32363d; | |||
text-indent: 30px; | |||
} | |||
.titel-text { | |||
height: 100%; | |||
font-size: 16px; | |||
font-weight: 600; | |||
color: #32363d; | |||
text-indent: 30px; | |||
} | |||
.toptimeqhuan { | |||
height: 30px; | |||
background: #ffffff; | |||
@@ -117,7 +117,7 @@ | |||
</div> | |||
<div | |||
v-if="teamobj1.list.length != 0" | |||
style="overflow-y: auto; height: 350px; width: 94%; margin: 0 auto" | |||
style="width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in teamobj1.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -132,7 +132,6 @@ | |||
</div> | |||
<div | |||
class="nulllist" | |||
style="height: 300px" | |||
v-if="teamobj1.list.length == 0" | |||
> | |||
<div class="imgboxc"> | |||
@@ -159,7 +158,7 @@ | |||
</div> | |||
<div | |||
v-if="teamobj2.list.length != 0" | |||
style="overflow-y: auto; height: 350px; width: 94%; margin: 0 auto" | |||
style="width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in teamobj2.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -174,7 +173,6 @@ | |||
</div> | |||
<div | |||
class="nulllist" | |||
style="height: 300px" | |||
v-if="teamobj2.list.length == 0" | |||
> | |||
<div class="imgboxc"> | |||
@@ -218,7 +216,7 @@ | |||
</div> | |||
<div | |||
v-if="teamobj3.list.length != 0" | |||
style="overflow-y: auto; height: 350px; width: 94%; margin: 0 auto" | |||
style="width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in teamobj3.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -233,7 +231,6 @@ | |||
</div> | |||
<div | |||
class="nulllist" | |||
style="height: 300px" | |||
v-if="teamobj3.list.length == 0" | |||
> | |||
<div class="imgboxc"> | |||
@@ -249,9 +246,9 @@ | |||
<div | |||
id="main" | |||
v-if="isshowcd2 == true" | |||
style="height: 350px; width: 94%; margin: 0 auto" | |||
style="width: 94%; margin: 0 auto" | |||
></div> | |||
<div class="nulllist" style="height: 300px" v-if="isshowcd2 == false"> | |||
<div class="nulllist" v-if="isshowcd2 == false"> | |||
<div class="imgboxc"> | |||
<img class="imgboxc-img" src="/img/nullnull.png" alt="" /> | |||
<div class="nulltext">暂无数据</div> | |||
@@ -293,7 +290,7 @@ | |||
</div> | |||
<div | |||
v-if="teamobj5.list.length != 0" | |||
style="overflow-y: auto; height: 350px; width: 94%; margin: 0 auto" | |||
style="width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in teamobj5.list" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -308,7 +305,6 @@ | |||
</div> | |||
<div | |||
class="nulllist" | |||
style="height: 300px" | |||
v-if="teamobj5.list.length == 0" | |||
> | |||
<div class="imgboxc"> | |||
@@ -324,9 +320,9 @@ | |||
<div | |||
v-if="isshowcd == true" | |||
id="main2" | |||
style="height: 350px; width: 94%; margin: 0 auto" | |||
style="width: 94%; margin: 0 auto" | |||
></div> | |||
<div class="nulllist" style="height: 300px" v-if="isshowcd == false"> | |||
<div class="nulllist" v-if="isshowcd == false"> | |||
<div class="imgboxc"> | |||
<img class="imgboxc-img" src="/img/nullnull.png" alt="" /> | |||
<div class="nulltext">暂无数据</div> | |||
@@ -926,7 +922,6 @@ tbody { | |||
display: block; | |||
// width: 100%; | |||
// overflow-x: auto; | |||
// overflow-y: auto; | |||
height: 220px; | |||
} | |||
tbody tr { | |||
@@ -993,12 +988,11 @@ tbody tr { | |||
.app-box-san { | |||
width: 100%; | |||
height: 400px; | |||
min-height: 400px; | |||
display: flex; | |||
margin-top: 15px; | |||
.zuo { | |||
flex: 1; | |||
height: 100%; | |||
margin-right: 15px; | |||
background: #ffffff; | |||
border-radius: 4px; | |||
@@ -1025,7 +1019,6 @@ tbody tr { | |||
} | |||
} | |||
.you { | |||
height: 100%; | |||
flex: 1; | |||
background: #ffffff; | |||
border-radius: 4px; | |||
@@ -1050,6 +1043,13 @@ tbody tr { | |||
align-items: center; | |||
} | |||
} | |||
#main { | |||
height: calc(400px - 55px); | |||
} | |||
#main2 { | |||
height: calc(400px - 55px); | |||
} | |||
} | |||
} | |||
@@ -1114,4 +1114,8 @@ tbody tr { | |||
font-size: 16px; | |||
color: #32363d; | |||
} | |||
.nulllist { | |||
flex: 1; | |||
} | |||
</style> |
@@ -786,13 +786,13 @@ export default { | |||
}; | |||
if (this.timeType == -1) { | |||
pamaet.timeType = null; | |||
pamaet.timeType = -1; | |||
} else { | |||
pamaet.timeType = this.timeType; | |||
} | |||
if (this.checked == true) { | |||
pamaet.showStatus = 1; | |||
pamaet.timeType = null; | |||
pamaet.timeType = -1; | |||
} else { | |||
pamaet.showStatus = 0; | |||
} | |||
@@ -478,13 +478,11 @@ export default { | |||
.box-forhtml { | |||
width: 100%; | |||
height: 400px; | |||
min-height: 400px; | |||
background: #ffffff; | |||
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.04); | |||
border-radius: 4px; | |||
padding-top: 20px; | |||
padding-left: 30px; | |||
padding-right: 30px; | |||
padding: 20px 30px; | |||
margin-top: 20px; | |||
} | |||
.box-forhtml-flex { | |||
@@ -494,11 +492,11 @@ export default { | |||
} | |||
.box-forhtml-flex .left { | |||
width: 50%; | |||
height: 320px; | |||
min-height: 320px; | |||
} | |||
.box-forhtml-flex .right { | |||
width: 50%; | |||
height: 330px; | |||
min-height: 330px; | |||
display: flex; | |||
justify-content: center; | |||
} | |||
@@ -115,7 +115,7 @@ | |||
<div class="title"> | |||
<div class="text1">目标分析</div> | |||
</div> | |||
<div style="height: 350px; width: 94%; margin: 0 auto"> | |||
<div style="min-height: 350px;padding: 0 0 20px 0;width: 94%; margin: 0 auto"> | |||
<div id="data1" style="min-height: 350px"></div> | |||
</div> | |||
</div> | |||
@@ -144,7 +144,7 @@ | |||
</div> | |||
</div> | |||
<div | |||
style="overflow-y: auto; height: 350px; width: 94%; margin: 0 auto" | |||
style="min-height: 350px;padding: 0 0 20px 0; width: 94%; margin: 0 auto;" | |||
> | |||
<div class="jinbox" v-for="(item, i) in objList" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -164,7 +164,7 @@ | |||
<div class="title"> | |||
<div class="text1">对比上月分析</div> | |||
</div> | |||
<div style="height: 350px; width: 94%; margin: 0 auto"> | |||
<div style="min-height: 350px;padding: 0 0 20px 0;width: 94%; margin: 0 auto"> | |||
<div id="data2" style="min-height: 350px"></div> | |||
</div> | |||
</div> | |||
@@ -200,7 +200,7 @@ | |||
</div> | |||
</div> | |||
<div | |||
style="overflow-y: auto; height: 350px; width: 94%; margin: 0 auto" | |||
style="min-height: 350px;padding: 0 0 20px 0;width: 94%; margin: 0 auto" | |||
> | |||
<div class="jinbox" v-for="(item, i) in objList1" :key="i"> | |||
<div class="jinboxtit">{{ item.name }}</div> | |||
@@ -312,7 +312,7 @@ | |||
<el-dialog title="趋势图" :visible.sync="dialogVisible"> | |||
<div class="houseSize">项目: {{houseName||''}} 运营:{{operationStaffName||'暂无'}}</div> | |||
<div style="height: 350px; width: 94%; margin: 0 auto"> | |||
<div style="min-height: 350px;padding: 0 0 20px 0;width: 94%; margin: 0 auto"> | |||
<div id="line" style="min-height: 350px"></div> | |||
</div> | |||
<!-- <div slot="footer" class="dialog-footer"> | |||
@@ -1,16 +1,404 @@ | |||
<template> | |||
<div> | |||
违禁记录 | |||
</div> | |||
<div class="box-center"> | |||
<!-- 头 --> | |||
<div class="app-top"> | |||
<div class="app-titel" v-if="orgType != 3"> | |||
<div | |||
class="label" | |||
style="color: #32363d; font-weight: 400; font-size: 16px" | |||
> | |||
项目选择: | |||
</div> | |||
<div style="margin-left: 8px"> | |||
<el-select | |||
v-model="searchForm.projectId" | |||
@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="app-titel" style="margin-top: 1em"> | |||
<div class="label">接待时间:</div> | |||
<div class="toptimeqhuan"> | |||
<div | |||
v-for="(data, index) in timeToAhouseList" | |||
:key="index" | |||
:class="{ tophove: TimetoAhoose == data.id }" | |||
@click="tabtimetap(data.id)" | |||
> | |||
{{ data.title }} | |||
</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="app-titel" style="margin-top: 1em"> | |||
<div class="div-lab"> | |||
<div class="label">违禁标识:</div> | |||
<el-select | |||
clearable | |||
filterable | |||
v-model="searchForm.tag" | |||
placeholder="请选择" | |||
class="div-inp" | |||
> | |||
<el-option | |||
v-for="item in prohibitedSignsList" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.value" | |||
> | |||
</el-option> | |||
</el-select> | |||
</div> | |||
<div class="div-lab"> | |||
<div class="label">处理状态:</div> | |||
<el-select | |||
clearable | |||
filterable | |||
v-model="searchForm.status" | |||
placeholder="请选择" | |||
class="div-inp" | |||
> | |||
<el-option | |||
v-for="item in processingStatusList" | |||
:key="item.value" | |||
:label="item.label" | |||
:value="item.value" | |||
> | |||
</el-option> | |||
</el-select> | |||
</div> | |||
<div class="div-lab"> | |||
<div class="label">置业顾问:</div> | |||
<div> | |||
<el-input | |||
maxlength="10" | |||
clearable | |||
v-model="searchForm.name" | |||
></el-input> | |||
</div> | |||
</div> | |||
</div> | |||
<!-- 筛选 --> | |||
<div class="app-titel" style="margin-top: 1em; padding-left: 100px"> | |||
<el-button type="primary">筛选</el-button> | |||
<el-link style="margin-left: 1em" :underline="false" type="primary" | |||
>清空筛选条件</el-link | |||
> | |||
</div> | |||
</div> | |||
<!-- 表格 --> | |||
<div class="cen-tab"> | |||
<el-table :data="tableData" stripe style="width: 100%"> | |||
<el-table-column prop="batchId" label="序号" width="70" align="center"> | |||
<template slot-scope="scope"> | |||
<span> {{ scope.$index + 1 }}</span> | |||
</template> | |||
</el-table-column> | |||
<el-table-column prop="houseName" label="接待编号" align="center"> | |||
</el-table-column> | |||
<el-table-column | |||
prop="accountNum" | |||
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" | |||
width="140" | |||
> | |||
</el-table-column> | |||
<el-table-column | |||
prop="sumDuration" | |||
label="处理状态" | |||
align="center" | |||
width="100" | |||
> | |||
<template slot-scope="scope"> | |||
{{ scope.row.sumDuration }} | |||
</template> | |||
</el-table-column> | |||
<el-table-column | |||
prop="fraction" | |||
label="处理人" | |||
align="center" | |||
width="110" | |||
> | |||
</el-table-column> | |||
<el-table-column | |||
prop="prohibitedZb" | |||
label="违禁标识" | |||
align="center" | |||
width="100" | |||
> | |||
</el-table-column> | |||
<el-table-column | |||
prop="addtodigestCount" | |||
label="无效原因" | |||
align="center" | |||
width="140" | |||
></el-table-column> | |||
<el-table-column label="操作" align="center" width="100"> | |||
<template slot-scope="{ row }"> | |||
<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="page" | |||
:page-sizes="[10, 30, 50]" | |||
:page-size="pagesize" | |||
layout="total, sizes, prev, pager, next, jumper" | |||
:total="total" | |||
> | |||
</el-pagination> | |||
</div> | |||
</div> | |||
</div> | |||
</template> | |||
<script> | |||
export default { | |||
data() { | |||
return { | |||
houseList: [], // 可切换的项目列表 | |||
orgType: localStorage.getItem("orgType"), // 组织类型 | |||
prohibitedSignsList: [ | |||
// 违禁标识 | |||
{ | |||
label: "全部", | |||
value: 0, | |||
}, | |||
{ | |||
label: "有效违禁", | |||
value: 1, | |||
}, | |||
{ | |||
label: "无效违禁", | |||
value: 2, | |||
}, | |||
], | |||
processingStatusList: [ | |||
// 违禁处理状态 | |||
{ | |||
label: "全部", | |||
value: "", | |||
}, | |||
{ | |||
label: "待处理", | |||
value: "1", | |||
}, | |||
{ | |||
label: "已处理", | |||
value: "2", | |||
}, | |||
], | |||
} | |||
searchForm: { | |||
projectId: "", | |||
tag: "", // 选中违禁标识id (暂时使用) | |||
status: "", // 处理状态筛选id (暂时使用) | |||
name: "", // 置业顾问名称 (暂时使用) | |||
}, | |||
timeToAhouseList: [ | |||
// 筛选时间数组 | |||
{ | |||
title: "近7天", | |||
id: 4, | |||
}, | |||
{ | |||
title: "近15天", | |||
id: 5, | |||
}, | |||
{ | |||
title: "近30天", | |||
id: 6, | |||
}, | |||
], | |||
TimetoAhoose: 4, // 选中时间的下表 | |||
customtime: [], // 自定义时间选择数据 | |||
tableData: [], // 表格数据 | |||
}; | |||
}, | |||
created() { | |||
this.zkhousePage(); | |||
if (this.$route.query.date) { | |||
this.time = this.$route.query.date.split(","); | |||
this.searchForm.staDate = this.time[0]; | |||
this.searchForm.endDate = this.time[1]; | |||
console.log("时间"); | |||
} | |||
}, | |||
methods: { | |||
// 重置入参 | |||
resetParams() { | |||
// this.searchForm | |||
}, | |||
// 获取可以选择的项目 | |||
zkhousePage() { | |||
this.$api.api | |||
.findHouseByUser({ | |||
orgType: this.orgType, | |||
}) | |||
.then((res) => { | |||
// console.log(res) | |||
this.houseList = res.data; | |||
if (this.orgType == 3) { | |||
this.searchForm.projectId = localStorage.getItem("houseId"); | |||
} else { | |||
this.searchForm.projectId = res.data[0].id; | |||
} | |||
this.houseChange(); | |||
}); | |||
}, | |||
// 项目选择改变的时候 | |||
houseChange() {}, | |||
// 固定类型时间选择 | |||
tabtimetap(index) {}, | |||
// 自定义时间选择 | |||
confirmtime() {}, | |||
}, | |||
}; | |||
</script> | |||
<style lang="" scoped > | |||
<style lang="scss" scoped> | |||
.box-center { | |||
width: 100%; | |||
padding: 15px; | |||
min-width: 1000px; | |||
padding-bottom: 100px; | |||
.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; | |||
flex-wrap: wrap; | |||
.label { | |||
font-size: 14px; | |||
font-weight: 400; | |||
color: #32363d; | |||
line-height: 32px; | |||
margin-left: 15px; | |||
min-width: 100px; | |||
text-align: right; | |||
} | |||
.toptimeqhuan { | |||
height: 30px; | |||
background: #ffffff; | |||
display: flex; | |||
align-items: center; | |||
div { | |||
padding-left: 20px; | |||
padding-right: 20px; | |||
text-align: center; | |||
line-height: 30px; | |||
font-size: 14px; | |||
border-radius: 4px; | |||
border: 1px solid #e0e0e0; | |||
} | |||
.btn { | |||
padding-left: 20px; | |||
padding-right: 20px; | |||
text-align: center; | |||
font-size: 14px; | |||
margin-right: 15px; | |||
border-radius: 4px; | |||
border: 1px solid #e0e0e0; | |||
} | |||
} | |||
.div-lab { | |||
display: flex; | |||
margin: 5px; | |||
} | |||
} | |||
} | |||
.cen-tab { | |||
width: 100%; | |||
padding: 15px; | |||
background: #ffffff; | |||
margin-top: 15px; | |||
} | |||
.tophove { | |||
color: #ffffff; | |||
background: #409eff; | |||
border-color: #409eff; | |||
} | |||
.div-inp { | |||
width: 250px; | |||
} | |||
} | |||
</style> |
@@ -10,8 +10,9 @@ | |||
// const url = 'http://62.234.122.43:9999' //正式 | |||
// const url = 'http://81.70.55.170:9999' // 新测试服务器IP | |||
// const url = 'http://192.168.31.89:9999' //sh | |||
// const url = 'https://zanyong.hfju.com' // 正式域名 | |||
const url = 'http://81.70.55.170:9999' // 新测试 | |||
const url = 'https://zanyong.hfju.com' // 正式域名 | |||
// const url = 'http://81.70.55.170:9999' // 新测试 | |||
// const url = 'http://82.156.35.22:9999' // 新正式ip | |||
const CompressionWebpackPlugin = require('compression-webpack-plugin') | |||
const productionGzipExtensions = ['js', 'css'] | |||
module.exports = { | |||