No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

index.vue 26 KiB

hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 2 años
hace 3 años
hace 3 años
hace 3 años
hace 3 años
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075
  1. <template>
  2. <view class="box">
  3. <view>
  4. <view class="search-box">
  5. <view class="search" @click="goSearch">
  6. <view class="search-img">
  7. <image class="search-img1" src="../../../static/images/search.png" mode=""></image>
  8. </view>
  9. <view class="search-text">输入客户姓名/手机号</view>
  10. </view>
  11. </view>
  12. </view>
  13. <!-- 选择器 -->
  14. <view class="boxtittab">
  15. <view class="tabbox" @click="tapsoltishow">
  16. {{ sortFilter }}
  17. <u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon>
  18. </view>
  19. <view class="tabbox" @click="taptimeisshow">
  20. {{ arriveFilter }}
  21. <u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon>
  22. </view>
  23. <view class="tabbox" @click="taptimetuisshow">
  24. {{ receptionDuration }}
  25. <u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon>
  26. </view>
  27. <view class="tabbox" @click="screenshow">
  28. 更多筛选<u-icon name="arrow-down" size="24" style="padding-left: 12rpx;"></u-icon>
  29. </view>
  30. </view>
  31. <view class="count" v-if="recordList.length > 0">
  32. 筛选结果:<text>{{totalRecords}} </text>条
  33. </view>
  34. <view class="content">
  35. <view v-if="recordList.length==0" style="width: 100%;height: 100%;display: flex;align-items: center;">
  36. <view style="width: 100%;padding-top: 200rpx;background: #FFFFFF;">
  37. <view style="width: 100%;text-align: center;">
  38. <image style="width: 220rpx;height: 200rpx;"
  39. src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
  40. </view>
  41. <view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
  42. </view>
  43. </view>
  44. <view v-if="recordList.length!=0" class="content-tips" v-for="(item,index) in recordList" :key='index'
  45. @click="gotoDetail(item.id)">
  46. <view class="content-first">
  47. <view class="left">
  48. <view v-if="item.level.length==0"></view>
  49. <view class="img" v-else-if="item.level==1">A</view>
  50. <view class="img" v-else-if="item.level==2">B</view>
  51. <view class="img" v-else-if="item.level==3">C</view>
  52. <view class="img" v-else-if="item.level==4">D</view>
  53. <view class="test">{{item.name}}</view>
  54. </view>
  55. <!-- <view class="right">
  56. <view class="point"></view>
  57. <view class="test">定金</view>
  58. </view> -->
  59. </view>
  60. <view class="content-sec">
  61. <view class="content-sec-lab">
  62. 手机号码:<view class="content-sec-lab1">{{item.phone || '--'}}</view>
  63. </view>
  64. <view class="content-sec-lab" style="line-height: 46rpx;">
  65. 客户标签:
  66. <text v-if="item.demand.cusSemanticWordsList==null">暂无</text>
  67. <view v-else class="content-sec-tips" v-for="(che,ind) in item.demand.cusSemanticWordsList"
  68. :key='ind'>{{che.name}}</view>
  69. </view>
  70. <view class="content-sec-lab">
  71. 顾问姓名:<view class="content-sec-lab1">{{item.agentName}}</view>
  72. </view>
  73. <view class="content-sec-lab">
  74. 添加时间:<view class="content-sec-lab1">{{item.createTime}}</view>
  75. </view>
  76. <view class="content-sec-num">
  77. <view class="">{{item.visitRecord || '--'}}次到访</view>
  78. <view class="">{{item.fraction || '0'}}% | {{item.mm || '0'}}<text
  79. style="font-size: 24rpx;">min</text></view>
  80. </view>
  81. </view>
  82. <view class="content-last" v-if="item.isshow==true">
  83. <!-- <view class="content-last-tab">添加提醒</view>
  84. <view class="content-last-tab">拨打电话</view> -->
  85. <view class="content-last-tab" @click.stop="gotoFollowUp(item.id)">写跟进</view>
  86. </view>
  87. </view>
  88. </view>
  89. <u-popup v-model="screenShow" mode="top">
  90. <view class="screen">
  91. <!-- 顾问选择 -->
  92. <view class="screen-counselor">
  93. <view class="screen-text">
  94. 所属顾问
  95. </view>
  96. <view class="screen-sel" @click="selectshow = true">
  97. <u-input v-model="screen.agentIdtext" type="text" placeholder='请选择' class="screen-inp"
  98. disabled />
  99. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  100. </view>
  101. </view>
  102. <view class="screen-counselor">
  103. <view class="screen-text">
  104. 客户标签
  105. </view>
  106. <view class="screen-sel" @click="selectTipshow = true">
  107. <u-input v-model="screen.cunsumerTips" type="text" placeholder='请选择' class="screen-inp"
  108. disabled />
  109. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  110. </view>
  111. </view>
  112. <view class="screen-counselor">
  113. <view class="screen-text">
  114. 客户阶段
  115. </view>
  116. <view class="screen-sel" @click="selectPhaseShow = true">
  117. <u-input v-model="screen.clientStageName" type="text" placeholder='请选择' class="screen-inp"
  118. disabled />
  119. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  120. </view>
  121. </view>
  122. <!-- 录音标示 -->
  123. <view class="screen-record">
  124. <view class="screen-record-text">
  125. 客户等级
  126. </view>
  127. <view class="screen-record-tab">
  128. <block v-for="(item,index) in levelList" :key="index">
  129. <view :class="[item.isShow?'screen-record-chose':'screen-record-nochose']"
  130. @click="choiceLevel(index,item.value)">
  131. {{item.label}}
  132. </view>
  133. </block>
  134. <!-- <view :class="[screen.record==0?'screen-record-chose':'screen-record-nochose']" @click="recordclick(0)">
  135. A
  136. </view>
  137. <view :class="[screen.record==1?'screen-record-chose':'screen-record-nochose']" @click="recordclick(1)">
  138. B
  139. </view>
  140. <view :class="[screen.record==2?'screen-record-chose':'screen-record-nochose']" @click="recordclick(2)">
  141. C
  142. </view>
  143. <view :class="[screen.record==3?'screen-record-chose':'screen-record-nochose']" @click="recordclick(3)">
  144. D
  145. </view> -->
  146. </view>
  147. </view>
  148. <!-- <view class="screen-record">
  149. <view class="screen-record-text">
  150. 客户阶段
  151. </view>
  152. <view class="screen-record-tab">
  153. <view v-for="(item,index) in stageList" :key="index">
  154. <view :class="[screen.stage==index?'screen-record-chose':'screen-record-nochose']" @click="screen.stage=index" style="width: 120rpx;">
  155. {{item}}
  156. </view>
  157. </view>
  158. </view>
  159. </view> -->
  160. <view class="screen-record">
  161. <view class="screen-record-text">
  162. 到访次数
  163. </view>
  164. <view class="screen-record-tab">
  165. <block v-for="(item,index) in visitList" :key="index">
  166. <view :class="[item.isShow?'screen-record-chose':'screen-record-nochose']"
  167. @click="choice(index,item.value)">
  168. {{item.label}}
  169. </view>
  170. </block>
  171. <!-- <view :class="[screen.visitRecord==1?'screen-record-chose':'screen-record-nochose']" @click="screenvisitRecord(1)">
  172. 首次到访
  173. </view>
  174. <view :class="[screen.visitRecord==2?'screen-record-chose':'screen-record-nochose']" @click="screenvisitRecord(2)">
  175. 2次到访
  176. </view>
  177. <view :class="[screen.visitRecord==3?'screen-record-chose':'screen-record-nochose']" @click="screenvisitRecord(3)">
  178. 3次到访
  179. </view>
  180. <view :class="[screen.visitRecord==4?'screen-record-chose':'screen-record-nochose']" @click="screenvisitRecord(4)">
  181. 3次以上
  182. </view> -->
  183. </view>
  184. </view>
  185. <view class="screen-foot">
  186. <view class="screen-foot-reset" @click="reset">
  187. 重置
  188. </view>
  189. <view class="screen-foot-sure" @click="screensure">
  190. 确定
  191. </view>
  192. </view>
  193. </view>
  194. </u-popup>
  195. <!-- 选择顾问的选择框 -->
  196. <u-select v-model="selectshow" :list="freeList" @confirm="actionSelectCallback"></u-select>
  197. <!-- 客户标签 -->
  198. <u-select v-model="selectTipshow" :list="findKeywordsList" @confirm="selectCallback"></u-select>
  199. <!-- 客户阶段 -->
  200. <u-select v-model="selectPhaseShow" :list="phaseList" @confirm="selectPhase"></u-select>
  201. <u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
  202. <u-popup v-model="timeshow" mode="bottom">
  203. <view class="timeview" :style="{ color: activeTotal == 5 ? '#2B6EFF' : '#333333' }"
  204. @click="tabtimetap(5, '到访时间')">
  205. 全部</view>
  206. <view class="timeview" :style="{ color: activeTotal == 0 ? '#2B6EFF' : '#333333' }"
  207. @click="tabtimetap(0, '今天')">
  208. 今天</view>
  209. <view class="timeview" :style="{ color: activeTotal == 1 ? '#2B6EFF' : '#333333' }"
  210. @click="tabtimetap(1, '昨天')">
  211. 昨天</view>
  212. <view class="timeview" :style="{ color: activeTotal == 2 ? '#2B6EFF' : '#333333' }"
  213. @click="tabtimetap(2, '近7天')">
  214. 近7天</view>
  215. <view class="timeview" :style="{ color: activeTotal == 3 ? '#2B6EFF' : '#333333' }"
  216. @click="tabtimetap(3, '近30天')">
  217. 近30天</view>
  218. <view class="timeview" :style="{ color: activeTotal == 4 ? '#2B6EFF' : '#333333' }" @click="tabtimetap(4)">
  219. 自定义</view>
  220. </u-popup>
  221. <u-popup v-model="timetushow" mode="bottom">
  222. <view class="timeview" :style="{ color: activeTotal2 == 0 ? '#2B6EFF' : '#333333' }"
  223. @click="timetap(0, '接待时长')">全部
  224. </view>
  225. <view class="timeview" :style="{ color: activeTotal2 == 1 ? '#2B6EFF' : '#333333' }"
  226. @click="timetap(1, '0~15min')">
  227. 0~15min</view>
  228. <view class="timeview" :style="{ color: activeTotal2 == 2 ? '#2B6EFF' : '#333333' }"
  229. @click="timetap(2, '15~30min')">
  230. 15~30min</view>
  231. <view class="timeview" :style="{ color: activeTotal2 == 3 ? '#2B6EFF' : '#333333' }"
  232. @click="timetap(3, '30~60min')">
  233. 30~60min</view>
  234. <view class="timeview" :style="{ color: activeTotal2 == 4 ? '#2B6EFF' : '#333333' }"
  235. @click="timetap(4, '60~90min')">
  236. 60~90min</view>
  237. <view class="timeview" :style="{ color: activeTotal2 == 5 ? '#2B6EFF' : '#333333' }"
  238. @click="timetap(5, '90min以上')">
  239. 90min以上</view>
  240. </u-popup>
  241. <u-select v-model="soltishow" :list="orderBylist" @confirm="selectCallback2"></u-select>
  242. </view>
  243. </template>
  244. <script>
  245. export default {
  246. data() {
  247. return {
  248. orderBylist: [{
  249. label: '全部',
  250. value: '0'
  251. },
  252. {
  253. label: '创建时间倒序',
  254. value: '1'
  255. },
  256. {
  257. label: '创建时间正序',
  258. value: '2'
  259. },
  260. {
  261. label: '接待时间倒序',
  262. value: '3'
  263. },
  264. {
  265. label: '接待时间正序',
  266. value: '4'
  267. },
  268. {
  269. label: '执行率正序',
  270. value: '5'
  271. },
  272. {
  273. label: '执行率倒序',
  274. value: '6'
  275. },
  276. {
  277. label: '接访次数正序',
  278. value: '7'
  279. },
  280. {
  281. label: '接访次数倒序',
  282. value: '8'
  283. },
  284. ],
  285. value: '',
  286. screenShow: false,
  287. selectshow: false,
  288. selectTipshow: false,
  289. selectPhaseShow: false,
  290. buildingID: '',
  291. screen: {
  292. agentId: '',
  293. agentIdtext: '',
  294. visitRecord: [],
  295. record: [],
  296. cunsumerTips: '',
  297. cunsumerTipsid: '',
  298. clientStage: '',
  299. clientStageName: ''
  300. },
  301. stageList: ['未知', '到访', '意向', '定金', '成交'],
  302. recordList: [],
  303. nextPage: 1,
  304. totalRecord: '',
  305. freeList: [],
  306. userInfo: {},
  307. findKeywordsList: [],
  308. phaseList: [],
  309. isnorefresh: '',
  310. activeTotal: 5,
  311. activeTotal2: 0,
  312. totalTimeShow: false,
  313. timeshow: false,
  314. timetushow: false,
  315. soltishow: false,
  316. staTime: '',
  317. endtime: '',
  318. orderBy: '',
  319. totalRecords: '',
  320. visitList: [{
  321. label: '首次到访',
  322. value: 1,
  323. isShow: false,
  324. }, {
  325. label: '2次到访',
  326. value: 2,
  327. isShow: false,
  328. }, {
  329. label: '3次到访',
  330. value: 3,
  331. isShow: false,
  332. }, {
  333. label: '3次以上',
  334. value: 4,
  335. isShow: false,
  336. }, ],
  337. levelList: [{
  338. label: 'A',
  339. value: 1,
  340. isShow: false,
  341. }, {
  342. label: 'B',
  343. value: 2,
  344. isShow: false,
  345. }, {
  346. label: 'C',
  347. value: 3,
  348. isShow: false,
  349. }, {
  350. label: 'D',
  351. value: 4,
  352. isShow: false,
  353. }, ],
  354. isRefresh: false,
  355. // 筛选文字展示
  356. sortFilter: '排序',
  357. arriveFilter: '到访时间',
  358. receptionDuration: '接待时长',
  359. }
  360. },
  361. onLoad(options) {
  362. this.isnorefresh = options.refresh;
  363. },
  364. onShow() {
  365. if (this.isnorefresh == 'refresh') {
  366. this.buildingID = uni.getStorageSync('buildingID').id;
  367. this.nextPage = 1;
  368. this.recordList = []
  369. this.isRefresh = false;
  370. this.getMyCustom()
  371. this.getFreeList()
  372. this.getfindKeywordsList()
  373. this.getCustomPhase()
  374. this.isnorefresh = '';
  375. }
  376. },
  377. onPullDownRefresh() {
  378. this.resetFilter()
  379. this.isRefresh = true;
  380. this.nextPage = 1;
  381. this.getMyCustom()
  382. setTimeout(() => {
  383. uni.stopPullDownRefresh()
  384. }, 1000)
  385. },
  386. onReachBottom() {
  387. if (this.totalRecord == this.nextPage) {
  388. uni.showToast({
  389. icon: 'none',
  390. title: '到底了',
  391. duration: 2000
  392. });
  393. return
  394. } else {
  395. this.nextPage += 1;
  396. this.isRefresh = false;
  397. this.getMyCustom();
  398. }
  399. },
  400. methods: {
  401. // 过滤
  402. resetFilter() {
  403. this.sortFilter = '排序';
  404. this.orderBy = null;
  405. this.arriveFilter = '到访时间';
  406. this.staTime = '';
  407. this.endtime = '';
  408. this.nextPage = 1;
  409. this.activeTotal = 5;
  410. this.recordList = [];
  411. this.receptionDuration = '接待时长';
  412. this.activeTotal2 = 0;
  413. },
  414. choice(index, e) {
  415. if (this.visitList[index].isShow == true) {
  416. this.visitList[index].isShow = false;
  417. for (var i = 0; i < this.screen.visitRecord.length; i++) {
  418. if (this.screen.visitRecord[i] === e) {
  419. this.screen.visitRecord.splice(i, 1);
  420. }
  421. }
  422. } else {
  423. this.visitList[index].isShow = true;
  424. this.screen.visitRecord.push(e)
  425. }
  426. },
  427. choiceLevel(index, e) {
  428. if (this.levelList[index].isShow == true) {
  429. this.levelList[index].isShow = false;
  430. for (var i = 0; i < this.screen.record.length; i++) {
  431. if (this.screen.record[i] === e) {
  432. this.screen.record.splice(i, 1);
  433. }
  434. }
  435. } else {
  436. this.levelList[index].isShow = true;
  437. this.screen.record.push(e)
  438. }
  439. },
  440. tapsoltishow() {
  441. this.soltishow = true;
  442. },
  443. taptimetuisshow() {
  444. this.timetushow = true;
  445. },
  446. taptimeisshow() {
  447. this.timeshow = true;
  448. },
  449. //选择标签
  450. selectCallback2(e) {
  451. this.sortFilter = e[0].label;
  452. this.orderBy = e[0].value;
  453. this.nextPage = 1;
  454. this.recordList = [];
  455. this.isRefresh = false;
  456. this.getMyCustom();
  457. },
  458. //选择录音时长
  459. timetap(index, text) {
  460. if (text) this.receptionDuration = text
  461. this.timetushow = false;
  462. this.activeTotal2 = index;
  463. this.nextPage = 1;
  464. this.recordList = [];
  465. this.isRefresh = false;
  466. this.getMyCustom();
  467. },
  468. //时间选择
  469. tabtimetap(index, text) {
  470. this.timeshow = false;
  471. if (text) this.arriveFilter = text
  472. if (index == 4) {
  473. this.totalTimeShow = true;
  474. } else {
  475. this.activeTotal = index;
  476. this.staTime = '';
  477. this.endtime = '';
  478. this.nextPage = 1;
  479. this.recordList = [];
  480. this.isRefresh = false;
  481. this.getMyCustom();
  482. }
  483. },
  484. //自定义时间
  485. totalTimeChange(e) {
  486. this.staTime = e.startDate;
  487. this.endtime = e.endDate;
  488. this.activeTotal = 4;
  489. this.nextPage = 1;
  490. this.recordList = [];
  491. this.isRefresh = false;
  492. this.getMyCustom();
  493. },
  494. recordclick(i) {
  495. if (this.screen.record == i) {
  496. this.screen.record = null
  497. } else {
  498. this.screen.record = i
  499. }
  500. },
  501. screenvisitRecord(i) {
  502. if (this.screen.visitRecord == i) {
  503. this.screen.visitRecord = ''
  504. } else {
  505. this.screen.visitRecord = i
  506. }
  507. },
  508. // 客户详情
  509. gotoDetail(id) {
  510. uni.navigateTo({
  511. url: `/pages/center/consumer/consumerDetail?id=${id}`
  512. })
  513. },
  514. getMyCustom() {
  515. let dateType = 0;
  516. let recDurationInterval = 0;
  517. let orderBy = 0;
  518. if (this.activeTotal == 5) {
  519. dateType = null;
  520. } else if (this.activeTotal == 4) {
  521. dateType = null;
  522. } else {
  523. dateType = this.activeTotal;
  524. }
  525. if (this.activeTotal2 == 0) {
  526. recDurationInterval = null
  527. } else {
  528. recDurationInterval = this.activeTotal2
  529. }
  530. if (this.orderBy == 0) {
  531. orderBy = null;
  532. } else {
  533. orderBy = this.orderBy;
  534. }
  535. var parames = {
  536. pageNum: this.nextPage,
  537. pageSize: 10,
  538. query: {
  539. projectId: this.buildingID,
  540. keywordsId: this.screen.cunsumerTipsid,
  541. clientStage: this.screen.clientStage,
  542. agentId: this.screen.agentId,
  543. dateType: dateType,
  544. staTime: this.staTime,
  545. endtime: this.endtime,
  546. recDurationInterval: recDurationInterval,
  547. orderBy: orderBy
  548. }
  549. };
  550. if (this.screen.visitRecord.length > 0) {
  551. parames.query.visitRecords = this.screen.visitRecord.join(',');
  552. }
  553. if (this.screen.record.length > 0) {
  554. parames.query.level = this.screen.record.join(',');
  555. }
  556. // if(this.screen.record==0){
  557. // parames.query.levels= ["1"]
  558. // }else if(this.screen.record==1){
  559. // parames.query.levels= ["2"]
  560. // }else if(this.screen.record==2){
  561. // parames.query.levels= ["3"]
  562. // }else if(this.screen.record==3){
  563. // parames.query.levels= ["4"]
  564. // }else{
  565. // parames.query.levels=''
  566. // }
  567. this.userInfo = uni.getStorageSync('weapp_session_userInfo_data');
  568. this.$u.post("/customer/customerManagement", parames).then(data => {
  569. if(this.staTime && this.endtime) {
  570. this.arriveFilter = `${this.staTime}-${this.endtime}`
  571. }
  572. var list = data.results || [];
  573. list.forEach(item => {
  574. if (this.userInfo.dataCode == 6) {
  575. item.isshow = true;
  576. } else {
  577. item.isshow = false;
  578. }
  579. })
  580. list.forEach(item => {
  581. if (item.demand.cusSemanticWordsList != null) {
  582. item.demand.cusSemanticWordsList.forEach(che => {
  583. if (che.isInterval == 0) {
  584. che.name = che.name + che.unit + '-' + che.endName + che.unit;
  585. }
  586. })
  587. }
  588. })
  589. if (this.isRefresh) {
  590. this.recordList = list;
  591. } else {
  592. this.recordList = [...this.recordList, ...list];
  593. }
  594. this.totalRecord = data.totalPage;
  595. this.totalRecords = data.totalRecord;
  596. })
  597. },
  598. //获取顾问列表
  599. getFreeList() {
  600. this.freeList = []
  601. this.$u.post("/cusLvStatistics/selectAllAccountIdByHouseId", {
  602. houseId: this.buildingID
  603. }).then(res => {
  604. this.freeList = res;
  605. this.freeList.forEach(item => {
  606. item.label = item.name;
  607. item.value = item.accountId
  608. })
  609. })
  610. },
  611. //获取客户标签
  612. getfindKeywordsList() {
  613. this.findKeywordsList = []
  614. this.$u.post("/customer/findKeywords", {
  615. houseId: this.buildingID
  616. }).then(res => {
  617. res.forEach(item => {
  618. if (item.isInterval == 0) {
  619. item.label = item.name + item.unit + '-' + item.endName + item.unit;
  620. } else {
  621. item.label = item.name
  622. }
  623. item.value = item.id;
  624. })
  625. this.findKeywordsList = res;
  626. })
  627. },
  628. getCustomPhase() {
  629. this.phaseList = []
  630. this.$u.post("/customer/lifeTrackDefineList", {
  631. houseId: this.buildingID
  632. }).then(res => {
  633. let tempArr = []
  634. res.forEach(item => {
  635. let tempObj = {}
  636. tempObj.label = item.stageName;
  637. tempObj.value = item.id;
  638. tempArr.push(tempObj)
  639. })
  640. this.phaseList = tempArr;
  641. })
  642. },
  643. // 筛选
  644. screenshow() {
  645. this.screenShow = true
  646. },
  647. //选择顾问
  648. actionSelectCallback(e) {
  649. this.screen.agentId = e[0].value;
  650. this.screen.agentIdtext = e[0].label;
  651. },
  652. //选择标签
  653. selectCallback(e) {
  654. this.screen.cunsumerTips = e[0].label;
  655. this.screen.cunsumerTipsid = e[0].value;
  656. },
  657. selectPhase(e) {
  658. this.screen.clientStageName = e[0].label;
  659. this.screen.clientStage = e[0].value;
  660. },
  661. //重置
  662. reset() {
  663. this.screen = {
  664. agentId: '',
  665. agentIdtext: '',
  666. visitRecord: [],
  667. record: [],
  668. cunsumerTips: '',
  669. cunsumerTipsid: '',
  670. clientStage: '',
  671. clientStageName: ''
  672. }
  673. this.visitList.map(i => {
  674. i.isShow = false
  675. })
  676. this.levelList.map(i => {
  677. i.isShow = false
  678. })
  679. this.nextPage = 1;
  680. this.recordList = [];
  681. // this.screenShow = false;
  682. this.isRefresh = false;
  683. this.getMyCustom();
  684. },
  685. //筛选确认
  686. screensure() {
  687. this.nextPage = 1;
  688. this.recordList = [];
  689. this.screenShow = false;
  690. this.isRefresh = false;
  691. this.getMyCustom();
  692. },
  693. goSearch() {
  694. uni.navigateTo({
  695. url: '/pages/center/consumer/consumerSearch'
  696. });
  697. },
  698. gotoFollowUp(id) {
  699. uni.navigateTo({
  700. url: `/pages/center/consumer/newFollowup/newFollowup?id=${id}`
  701. })
  702. },
  703. }
  704. }
  705. </script>
  706. <style lang="scss" scoped>
  707. .box {
  708. width: 100%;
  709. height: 100%;
  710. background: #F8F8F8;
  711. }
  712. .count {
  713. width: 100%;
  714. height: 90rpx;
  715. display: flex;
  716. align-items: center;
  717. justify-content: center;
  718. background-color: #FBE4E4;
  719. text {
  720. color: #F71616;
  721. }
  722. }
  723. .timeview {
  724. height: 80rpx;
  725. line-height: 80rpx;
  726. width: 100%;
  727. text-align: center;
  728. border-bottom: 1px solid #F8F8F8;
  729. }
  730. //时间切换的样式
  731. .boxtittab {
  732. position: sticky;
  733. top: var(--window-top);
  734. z-index: 999;
  735. width: 100;
  736. height: 92rpx;
  737. background: #FFFFFF;
  738. border: 1px solid #E0E0E0;
  739. display: flex;
  740. align-items: center;
  741. .tabbox {
  742. flex: 1;
  743. height: 100%;
  744. text-align: center;
  745. line-height: 92rpx;
  746. color: #666666;
  747. font-size: 28rpx;
  748. overflow: hidden;
  749. text-overflow: ellipsis;
  750. display: -webkit-box;
  751. /* 将对象作为弹性伸缩盒子模型显示 */
  752. -webkit-line-clamp: 1;
  753. /* 控制最多显示几行 */
  754. -webkit-box-orient: vertical;
  755. /* 设置或检索伸缩盒对象的子元素的排列方式 */
  756. }
  757. }
  758. .search-box {
  759. width: 100%;
  760. height: 102rpx;
  761. background: #FFFFFF;
  762. display: flex;
  763. align-items: center;
  764. justify-content: center;
  765. .search {
  766. width: 94%;
  767. height: 70rpx;
  768. display: flex;
  769. align-items: center;
  770. background: #F8F8F8;
  771. border-radius: 33rpx;
  772. .search-img {
  773. width: 26rpx;
  774. height: 30rpx;
  775. margin-left: 20rpx;
  776. .search-img1 {
  777. width: 100%;
  778. height: 100%;
  779. margin-top: 2rpx;
  780. }
  781. }
  782. .search-text {
  783. font-size: 28rpx;
  784. font-weight: 400;
  785. color: #999999;
  786. margin-left: 10rpx;
  787. }
  788. }
  789. .search-screen {
  790. width: 40rpx;
  791. height: 40rpx;
  792. margin-left: 30rpx;
  793. .search-screen1 {
  794. width: 100%;
  795. height: 100%;
  796. }
  797. }
  798. }
  799. .content {
  800. // height: 1000rpx;/
  801. overflow: hidden;
  802. border-top: 1px solid #E0E0E0;
  803. .content-tips {
  804. background: #fff;
  805. // box-sizing: border-box;
  806. margin-top: 20rpx;
  807. overflow: hidden;
  808. .content-first {
  809. padding: 19rpx 30rpx;
  810. display: flex;
  811. justify-content: space-between;
  812. box-sizing: border-box;
  813. // border-top: 1px solid #E0E0E0;
  814. font-weight: 400;
  815. color: #292929;
  816. height: 90rpx;
  817. font-size: 30rpx;
  818. line-height: 30rpx;
  819. .left {
  820. display: flex;
  821. .img {
  822. // margin-top: 19rpx;
  823. width: 52rpx;
  824. height: 52rpx;
  825. border: 1px solid #E0E0E0;
  826. border-radius: 50%;
  827. text-align: center;
  828. line-height: 50rpx;
  829. margin-right: 20rpx;
  830. }
  831. .test {
  832. margin-top: 11rpx;
  833. // margin-left: 20rpx;
  834. font-weight: 500;
  835. color: #333333;
  836. }
  837. }
  838. .right {
  839. display: flex;
  840. .point {
  841. width: 12rpx;
  842. height: 12rpx;
  843. background: #2B6EFF;
  844. border-radius: 50%;
  845. margin-right: 9rpx;
  846. margin-top: 20rpx;
  847. }
  848. .test {
  849. margin-top: 11rpx;
  850. }
  851. }
  852. }
  853. .content-sec {
  854. border-top: 1px solid #E0E0E0;
  855. padding: 0 30rpx;
  856. padding-bottom: 30rpx;
  857. // height: 270rpx;
  858. position: relative;
  859. .content-sec-lab {
  860. margin-top: 30rpx;
  861. display: flex;
  862. font-size: 30rpx;
  863. font-weight: 400;
  864. color: #666666;
  865. line-height: 46rpx;
  866. .content-sec-lab1 {
  867. color: #333333;
  868. }
  869. .content-sec-tips {
  870. max-width: 160rpx;
  871. height: 46rpx;
  872. background: #F2F2F2;
  873. border-radius: 6rpx;
  874. text-align: center;
  875. line-height: 26rpx;
  876. overflow: hidden;
  877. text-overflow: ellipsis;
  878. white-space: nowrap;
  879. font-size: 26rpx;
  880. font-weight: 400;
  881. color: #333333;
  882. margin-right: 20rpx;
  883. box-sizing: border-box;
  884. padding: 10rpx 24rpx;
  885. }
  886. }
  887. .content-sec-num {
  888. position: absolute;
  889. width: 200rpx;
  890. height: 90rpx;
  891. background: #F4F8FD;
  892. border-radius: 12rpx;
  893. font-weight: 400;
  894. color: #2671E2;
  895. line-height: 45rpx;
  896. bottom: 30rpx;
  897. right: 30rpx;
  898. text-align: center;
  899. }
  900. }
  901. .content-last {
  902. display: flex;
  903. border-top: 1px solid #E0E0E0;
  904. // padding: 0 30rpx;
  905. height: 78rpx;
  906. .content-last-tab {
  907. width: 33.4%;
  908. text-align: center;
  909. font-size: 30rpx;
  910. font-weight: 400;
  911. color: #333333;
  912. line-height: 78rpx;
  913. border-right: 1px solid #E0E0E0;
  914. }
  915. }
  916. }
  917. }
  918. // 这是弹出层
  919. .screen {
  920. // box-sizing: border-box;
  921. // padding: 0 30rpx;
  922. .screen-counselor {
  923. display: flex;
  924. height: 106rpx;
  925. // padding: 40rpx 30rpx 36rpx 30rpx;
  926. padding: 0 30rpx;
  927. box-sizing: border-box;
  928. border-bottom: 1px solid #E0E0E0;
  929. .screen-text {
  930. margin: 40rpx 0 36rpx 0;
  931. font-size: 30rpx;
  932. font-weight: 400;
  933. color: #333333;
  934. line-height: 30rpx;
  935. }
  936. .screen-sel {
  937. display: flex;
  938. justify-content: space-between;
  939. width: 500rpx;
  940. margin-left: 60rpx;
  941. .screen-sel-img {
  942. margin: 40rpx 0 36rpx 0;
  943. width: 14rpx;
  944. height: 30rpx;
  945. }
  946. .screen-inp {
  947. margin-top: 20rpx;
  948. }
  949. }
  950. }
  951. .screen-record {
  952. height: 192rpx;
  953. // width: 100%;
  954. overflow: hidden;
  955. padding: 0 30rpx;
  956. box-sizing: border-box;
  957. border-bottom: 1px solid #E0E0E0;
  958. .screen-record-text {
  959. margin-top: 36rpx;
  960. font-size: 30rpx;
  961. font-weight: 400;
  962. color: #333333;
  963. line-height: 30rpx;
  964. }
  965. .screen-record-tab {
  966. margin-top: 30rpx;
  967. display: flex;
  968. // justify-content: space-around;
  969. .screen-record-chose {
  970. width: 156rpx;
  971. height: 60rpx;
  972. background: #2671E2;
  973. border-radius: 4rpx;
  974. border: 1px solid #2671E2;
  975. text-align: center;
  976. line-height: 60rpx;
  977. margin-right: 22rpx;
  978. color: #FFFFFF;
  979. }
  980. .screen-record-nochose {
  981. width: 156rpx;
  982. height: 60rpx;
  983. background: #FFFFFF;
  984. border-radius: 4rpx;
  985. border: 1px solid #C9C9C9;
  986. text-align: center;
  987. line-height: 60rpx;
  988. margin-right: 22rpx;
  989. }
  990. }
  991. }
  992. .screen-foot {
  993. width: 100%;
  994. height: 88rpx;
  995. display: flex;
  996. .screen-foot-reset {
  997. width: 50%;
  998. text-align: center;
  999. height: 88rpx;
  1000. line-height: 88rpx;
  1001. font-size: 30rpx;
  1002. font-weight: 400;
  1003. color: #666666;
  1004. }
  1005. .screen-foot-sure {
  1006. width: 50%;
  1007. text-align: center;
  1008. line-height: 88rpx;
  1009. height: 88rpx;
  1010. font-size: 30rpx;
  1011. font-weight: 400;
  1012. color: #FFFFFF;
  1013. background: #2671E2;
  1014. }
  1015. }
  1016. }
  1017. </style>