You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

625 lines
15 KiB

  1. <template>
  2. <view class="cenbox">
  3. <view class="screeningtop">
  4. <view class="screeningview" @click="clickscreening(1)">
  5. <view>近一周</view>
  6. <view class="viewimg">
  7. <image v-if="screeningshow1==false" src="../../../../static/images/down1.png" mode=""></image>
  8. <image v-if="screeningshow1==true" src="../../../../static/images/down2.png" mode=""></image>
  9. </view>
  10. </view>
  11. <view class="screeningview" @click="clickscreening(2)">
  12. <view>客户</view>
  13. <view class="viewimg">
  14. <image v-if="screeningshow2==false" src="../../../../static/images/down1.png" mode=""></image>
  15. <image v-if="screeningshow2==true" src="../../../../static/images/down2.png" mode=""></image>
  16. </view>
  17. </view>
  18. <view class="screeningview" @click="clickscreening(3)">
  19. <view>置业顾问</view>
  20. <view class="viewimg">
  21. <image v-if="screeningshow3==false" src="../../../../static/images/down1.png" mode=""></image>
  22. <image v-if="screeningshow3==true" src="../../../../static/images/down2.png" mode=""></image>
  23. </view>
  24. </view>
  25. <view style="border: none;" class="screeningview" @click="clickscreening(4)">
  26. <view>语义词</view>
  27. <view class="viewimg">
  28. <image v-if="screeningshow4==false" src="../../../../static/images/down1.png" mode=""></image>
  29. <image v-if="screeningshow4==true" src="../../../../static/images/down2.png" mode=""></image>
  30. </view>
  31. </view>
  32. </view>
  33. <view class="zhuti">
  34. <view v-if="tadelist.length!=0" class="cenforview" v-for="(item,index) in tadelist" :key='index' @click="toinfo(item)">
  35. <view class="cenfortop">
  36. <view class="fortopzuo">
  37. <view class="topzuoimg">
  38. <image src="../../../../static/images/userorder.png" mode=""></image>
  39. </view>
  40. </view>
  41. <view class="fortopyou">
  42. <view class="topyouview1">
  43. <view class="youview1-1">{{item.agentName}}</view>
  44. <view class="youview1-2">接待开始时间:{{item.staTime}}</view>
  45. </view>
  46. <view class="topyouview2">客户姓名:{{item.name}}</view>
  47. </view>
  48. </view>
  49. <view class="cenforbottom">
  50. <view class="forbottomview">
  51. <view class="bottomview1">录音时长 (分钟)</view>
  52. <view class="bottomview2">{{item.mm}}分钟</view>
  53. </view>
  54. <view class="forbottomview">
  55. <view class="bottomview1">需求触达次数</view>
  56. <view class="bottomview2">{{item.total}}次</view>
  57. </view>
  58. <view class="forbottomview" style="border: none;">
  59. <view class="bottomview1">接访得分</view>
  60. <view class="bottomview2" v-if="item.fraction==null">0分</view>
  61. <view class="bottomview2" v-else>{{item.fraction}}分</view>
  62. </view>
  63. </view>
  64. </view>
  65. <view v-if="tadelist.length==0" style="width: 100%;height: 100%;display: flex;align-items: center;">
  66. <view style="width: 100%;background: #FFFFFF;padding-top: 200rpx;">
  67. <view style="width: 100%;text-align: center;">
  68. <image style="width: 200rpx;height: 200rpx;" src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
  69. </view>
  70. <view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
  71. </view>
  72. </view>
  73. </view>
  74. <!-- 1 -->
  75. <view v-if="screeningshow1==true" class="call_zhezhao" @click="allcancel()"></view>
  76. <view v-if="screeningshow1==true" class="timepick">
  77. <view class="tiempickbox">
  78. <view :class="{ timeactive: activetime == 0 }" @click="activetimetab(0)">今日</view>
  79. <view :class="{ timeactive: activetime == 1 }" @click="activetimetab(1)">昨日</view>
  80. <view :class="{ timeactive: activetime == 2 }" @click="activetimetab(2)">近一周</view>
  81. <view :class="{ timeactive: activetime == 3 }" @click="activetimetab(3)">本月</view>
  82. </view>
  83. <view class="tiempickzidingyi" @click="activetimetab(5)">
  84. <text v-if="Datesicing.length==0">自定义时间:请选择</text>
  85. <text v-else>{{Datesicing}}</text>
  86. </view>
  87. </view>
  88. <!-- 2 -->
  89. <view v-if="screeningshow2==true" class="call_zhezhao" @click="allcancel()"></view>
  90. <view v-if="screeningshow2==true" class="userinput">
  91. <view class="inputdlex">
  92. <view class="flexzuo">
  93. <input class="flexinput" @confirm="searchinfo()" v-model="name" type="text" placeholder="请输入客户名" />
  94. </view>
  95. <view class="flexyou" @click="searchinfo()">搜索</view>
  96. </view>
  97. </view>
  98. <!-- 3 -->
  99. <view v-if="screeningshow3==true" class="call_zhezhao" @click="allcancel()"></view>
  100. <view v-if="screeningshow3==true" class="userinput">
  101. <view class="inputdlex">
  102. <view class="flexzuo">
  103. <input class="flexinput" @confirm="searchinfo()" v-model="agentName" type="text" placeholder="请输入顾问名" />
  104. </view>
  105. <view class="flexyou" @click="searchinfo()">搜索</view>
  106. </view>
  107. </view>
  108. <!-- 4 -->
  109. <view v-if="screeningshow4==true" class="call_zhezhao" @click="allcancel()"></view>
  110. <view v-if="screeningshow4==true" class="yuyipick">
  111. <view class="inputdlex">
  112. <view :class="{ timeactive111: keywordsId == item.keywordsId }" @click="semantictap(index)"
  113. v-for="(item,index) in semanticlist" :key="index">{{item.name}}</view>
  114. </view>
  115. </view>
  116. <u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
  117. </view>
  118. </template>
  119. <script>
  120. var app = getApp();
  121. var util = require("../../../../utils/util.js");
  122. var config = require("../../../../config");
  123. export default {
  124. data() {
  125. return {
  126. screeningshow1:false,
  127. screeningshow2:false,
  128. screeningshow3:false,
  129. screeningshow4:false,
  130. activetime:2,
  131. totalTimeShow:false,
  132. Datesicing:'',
  133. Inthemiddletime:'',
  134. starttime:'',//开始时间
  135. endoftime:'',//结束时间
  136. keywordsId:'',//选中语义词id
  137. houseId:'',//楼盘id
  138. semanticlist:[],//语义词集合
  139. name:'',
  140. agentName:'',
  141. pageNum:1,
  142. pageSize:10,
  143. tadelist:[],
  144. totalpage:0
  145. };
  146. },
  147. onLoad(options) {
  148. console.log(options)
  149. if(options.datatype==3){
  150. this.activetime=5;
  151. this.starttime=options.starttime;
  152. this.endoftime=options.endoftime;
  153. this.Datesicing=this.starttime+'至'+this.endoftime;
  154. }else{
  155. this.activetime=options.datatype;
  156. this.starttime='';
  157. this.endoftime='';
  158. this.Datesicing='';
  159. }
  160. this.keywordsId=options.keywordsId
  161. this.houseId=uni.getStorageSync('buildingID').id;
  162. this.Accesstolevel()
  163. },
  164. onReachBottom() {
  165. console.log("4444444444444444444")
  166. if (this.totalpage < this.pageNum * this.pageSize) {
  167. return uni.showToast({
  168. title: "到底了",
  169. })
  170. }
  171. this.pageNum++;
  172. this.getinit();
  173. },
  174. methods: {
  175. toinfo(item){
  176. uni.navigateTo({
  177. url: `/pages/center/Piabodata/Customerportrait/Receivedetailabout?customerId=${item.id}`
  178. })
  179. },
  180. //搜索
  181. searchinfo(){
  182. this.totalpage=0;
  183. this.tadelist=[];
  184. this.pageNum=1;
  185. this.getinit()
  186. },
  187. //点击三级
  188. semantictap(index){
  189. this.keywordsId=this.semanticlist[index].keywordsId;
  190. this.allcancel()
  191. this.totalpage=0;
  192. this.tadelist=[];
  193. this.pageNum=1;
  194. this.getinit()
  195. },
  196. //获取列表数据
  197. getinit(){
  198. uni.showToast({
  199. title: '加载中',
  200. icon:'loading',
  201. duration: 1500
  202. });
  203. let datatype='';
  204. if(this.activetime==5){
  205. var parames={
  206. pageNum:this.pageNum,
  207. pageSize:this.pageSize,
  208. query:{
  209. staTime:this.starttime,
  210. endTime:this.endoftime,
  211. time:1,
  212. name:this.name,
  213. agentName:this.agentName,
  214. type:0,
  215. keywordsId:this.keywordsId,
  216. projectId:this.houseId,
  217. }
  218. }
  219. }else{
  220. datatype=this.activetime;
  221. var parames={
  222. pageNum:this.pageNum,
  223. pageSize:this.pageSize,
  224. query:{
  225. dateType:Number(datatype),
  226. staTime:this.starttime,
  227. endTime:this.endoftime,
  228. time:1,
  229. name:this.name,
  230. agentName:this.agentName,
  231. type:0,
  232. keywordsId:this.keywordsId,
  233. projectId:this.houseId,
  234. }
  235. }
  236. }
  237. this.$u.post("/matchKeywords/receptionRecord", parames).then(data => {
  238. if(data.results==null){
  239. console.log("没有")
  240. return
  241. }else{
  242. this.tadelist=[...this.tadelist, ...data.results];
  243. this.totalpage=data.totalRecord;
  244. }
  245. })
  246. },
  247. //获取三级
  248. Accesstolevel(){
  249. let datatype='';
  250. if(this.activetime==5){
  251. var parames={
  252. type:0,
  253. statDateStart:this.starttime,
  254. statDateEnd:this.endoftime,
  255. houseId:this.houseId
  256. }
  257. }else{
  258. datatype=this.activetime;
  259. var parames={
  260. type:0,
  261. dateType:Number(datatype),
  262. statDateStart:this.starttime,
  263. statDateEnd:this.endoftime,
  264. houseId:this.houseId
  265. }
  266. }
  267. this.$u.post("/matchKeywords/findKeywords", parames).then(data => {
  268. data.forEach(item=>{
  269. if(item.isInterval==0){
  270. item.name=item.name+item.unit+'-'+item.endName+item.unit
  271. }
  272. })
  273. this.semanticlist=data;
  274. this.getinit();
  275. })
  276. },
  277. //遮罩取消
  278. allcancel(){
  279. this.screeningshow1=false;
  280. this.screeningshow2=false;
  281. this.screeningshow3=false;
  282. this.screeningshow4=false;
  283. },
  284. //自定义时间确认
  285. totalTimeChange(e){
  286. this.Datesicing=e.startDate+'至'+e.endDate;
  287. this.starttime=e.startDate;
  288. this.endoftime=e.endDate;
  289. this.activetime=this.Inthemiddletime;
  290. this.totalTimeShow=false;
  291. this.tadelist=[]
  292. this.allcancel()
  293. this.Accesstolevel()
  294. },
  295. //时间选择
  296. activetimetab(index){
  297. if(index==5){
  298. this.Inthemiddletime=index;
  299. this.totalTimeShow=!this.totalTimeShow;
  300. }else{
  301. this.Datesicing='';
  302. this.activetime=index;
  303. this.tadelist=[]
  304. this.allcancel()
  305. this.Accesstolevel()
  306. }
  307. },
  308. //筛选弹框
  309. clickscreening(i){
  310. if(i==1){
  311. this.screeningshow1=!this.screeningshow1;
  312. this.screeningshow2=false;
  313. this.screeningshow3=false;
  314. this.screeningshow4=false;
  315. }else if(i==2){
  316. this.screeningshow2=!this.screeningshow2;
  317. this.screeningshow1=false;
  318. this.screeningshow3=false;
  319. this.screeningshow4=false;
  320. }else if(i==3){
  321. this.screeningshow3=!this.screeningshow3;
  322. this.screeningshow2=false;
  323. this.screeningshow1=false;
  324. this.screeningshow4=false;
  325. }else{
  326. this.screeningshow4=!this.screeningshow4;
  327. this.screeningshow2=false;
  328. this.screeningshow3=false;
  329. this.screeningshow1=false;
  330. }
  331. }
  332. }
  333. };
  334. </script>
  335. <style lang="scss" scoped>
  336. .timeactive111{
  337. color: #2671E2;
  338. }
  339. *{
  340. margin:0;
  341. padding:0;
  342. box-sizing:border-box;
  343. }
  344. .cenbox{
  345. width: 100%;
  346. height: 100%;
  347. background-color: #F8F8F8;
  348. display:flex;
  349. flex-direction:column;
  350. .screeningtop{
  351. width: 100%;
  352. height: 75rpx;
  353. background-color: #FFFFFF;
  354. border-bottom: 1px solid #E0E0E0;
  355. align-items: center;
  356. display: flex;
  357. align-items: center;
  358. position: relative;
  359. }
  360. .screeningview{
  361. flex: 1;
  362. height: 100%;
  363. display: flex;
  364. align-items: center;
  365. justify-content: center;
  366. border-right: 1px solid #E0E0E0;
  367. }
  368. .zhuti{
  369. flex:1;
  370. // soverflow:auto;
  371. }
  372. }
  373. .viewimg{
  374. width: 20rpx;
  375. height: 100%;
  376. line-height: 72rpx;
  377. margin-left: 10rpx;
  378. image{
  379. width: 20rpx;
  380. height: 12rpx;
  381. }
  382. }
  383. .cenforview{
  384. width: 100%;
  385. height: 275rpx;
  386. background: #FFFFFF;
  387. margin-top: 20rpx;
  388. .cenfortop{
  389. width: 100%;
  390. height: 146rpx;
  391. display: flex;
  392. // border-bottom: 1px solid #E0E0E0;
  393. .fortopzuo{
  394. width: 16%;
  395. padding-top: 30rpx;
  396. .topzuoimg{
  397. width: 60rpx;
  398. height: 60rpx;
  399. margin-left: 30rpx;
  400. border-radius: 50%;
  401. image{
  402. width: 100%;
  403. height: 100%;
  404. }
  405. }
  406. }
  407. .fortopyou{
  408. width: 84%;
  409. height: 146rpx;
  410. .topyouview1{
  411. width: 100%;
  412. margin-top: 28rpx;
  413. display: flex;
  414. .youview1-1{
  415. width: 25%;
  416. font-size: 28rpx;
  417. font-weight: 400;
  418. color: #333333;
  419. overflow: hidden;
  420. white-space:nowrap;
  421. text-overflow:ellipsis;
  422. }
  423. .youview1-2{
  424. width: 75%;
  425. font-size: 26rpx;
  426. font-weight: 400;
  427. color: #666666;
  428. }
  429. }
  430. .topyouview2{
  431. width: 100%;
  432. font-size: 28rpx;
  433. font-weight: 400;
  434. color: #333333;
  435. margin-top: 20rpx;
  436. }
  437. }
  438. }
  439. .cenforbottom{
  440. width: 100%;
  441. height: 128rpx;
  442. display: flex;
  443. align-items: center;
  444. .forbottomview{
  445. flex: 1;
  446. height: 128rpx;
  447. // border-right: 1px solid #E0E0E0;
  448. .bottomview1{
  449. width: 100%;
  450. height: 26rpx;
  451. font-size: 26rpx;
  452. font-weight: 400;
  453. color: #666666;
  454. line-height: 26rpx;
  455. text-align: center;
  456. margin-top: 24rpx;
  457. }
  458. .bottomview2{
  459. width: 100%;
  460. height: 30rpx;
  461. font-size: 30rpx;
  462. font-weight: 600;
  463. color: #333333;
  464. line-height: 30rpx;
  465. text-align: center;
  466. margin-top: 24rpx;
  467. }
  468. }
  469. }
  470. }
  471. .timepick{
  472. width: 100%;
  473. height: 210rpx;
  474. background: #FFFFFF;
  475. position: absolute;
  476. top: 74rpx;
  477. left: 0;
  478. z-index: 20;
  479. .tiempickbox{
  480. width: 94%;
  481. margin: 0 auto;
  482. height: 56rpx;
  483. display: flex;
  484. align-items: center;
  485. margin-top: 25rpx;
  486. }
  487. .tiempickbox>view:nth-of-type(1){
  488. width: 156rpx;
  489. height: 56rpx;
  490. border-radius: 4rpx;
  491. text-align: center;
  492. line-height: 56rpx;
  493. font-size: 28rpx;
  494. border: 1px solid #C9C9C9;
  495. }
  496. .tiempickbox>view:nth-of-type(2){
  497. width: 156rpx;
  498. height: 56rpx;
  499. border-radius: 4rpx;
  500. text-align: center;
  501. line-height: 56rpx;
  502. font-size: 28rpx;
  503. border: 1px solid #C9C9C9;
  504. margin-left: 28rpx;
  505. }
  506. .tiempickbox>view:nth-of-type(3){
  507. width: 156rpx;
  508. height: 56rpx;
  509. border-radius: 4rpx;
  510. text-align: center;
  511. line-height: 56rpx;
  512. font-size: 28rpx;
  513. border: 1px solid #C9C9C9;
  514. margin-left: 28rpx;
  515. }
  516. .tiempickbox>view:nth-of-type(4){
  517. width: 156rpx;
  518. height: 56rpx;
  519. border-radius: 4rpx;
  520. text-align: center;
  521. line-height: 56rpx;
  522. font-size: 28rpx;
  523. border: 1px solid #C9C9C9;
  524. margin-left: 28rpx;
  525. }
  526. .tiempickzidingyi{
  527. width: 94%;
  528. margin: 0 auto;
  529. margin-top: 28rpx;
  530. height: 60rpx;
  531. background: #FFFFFF;
  532. border-radius: 4rpx;
  533. border: 1px solid #C9C9C9;
  534. text-align: center;
  535. line-height: 60rpx;
  536. color: #666666;
  537. }
  538. }
  539. .call_zhezhao {
  540. position: fixed;
  541. width: 100%;
  542. height: 100%;
  543. top: 75rpx;
  544. left: 0rpx;
  545. opacity: 0.5;
  546. background-color: #666666;
  547. z-index: 10;
  548. }
  549. .timeactive{
  550. color: #FFFFFF;
  551. background-color: #2671E2;
  552. }
  553. .userinput{
  554. width: 100%;
  555. height: 126rpx;
  556. background: #FFFFFF;
  557. position: absolute;
  558. top: 74rpx;
  559. left: 0;
  560. z-index: 20;
  561. .inputdlex{
  562. width: 90%;
  563. margin: 0 auto;
  564. height: 56rpx;
  565. display: flex;
  566. align-items: center;
  567. margin-top: 30rpx;
  568. .flexzuo{
  569. width: 80%;
  570. .flexinput{
  571. width: 96%;
  572. height: 100%;
  573. border-radius: 20rpx;
  574. border: 1px solid #C9C9C9;
  575. padding-left: 20rpx;
  576. font-size: 24rpx;
  577. }
  578. }
  579. .flexyou{
  580. width: 20%;
  581. font-size: 28rpx;
  582. color: #2671E2;
  583. text-indent: 28rpx;
  584. }
  585. }
  586. }
  587. .yuyipick{
  588. width: 100%;
  589. min-height: 300rpx;
  590. max-height: 500rpx;
  591. background: #FFFFFF;
  592. overflow-y: auto;
  593. padding-bottom: 20rpx;
  594. position: absolute;
  595. top: 74rpx;
  596. left: 0;
  597. z-index: 20;
  598. .inputdlex{
  599. width: 90%;
  600. margin: 0 auto;
  601. display: flex;
  602. flex-wrap: wrap;
  603. margin-top: 30rpx;
  604. }
  605. .inputdlex view{
  606. width: 50%;
  607. font-size: 26rpx;
  608. font-weight: 400;
  609. text-align: center;
  610. margin-top: 26rpx;
  611. }
  612. }
  613. </style>