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.
 
 
 

1510 lines
37 KiB

  1. <template>
  2. <view class="box">
  3. <view class="top-search">
  4. <view class="search-box">
  5. <view class="search" @click="goSearch">
  6. <view class="search-img">
  7. <image
  8. class="search-img1"
  9. src="../../../static/images/search.png"
  10. mode=""
  11. ></image>
  12. </view>
  13. <view class="search-text">输入客户姓名/手机号</view>
  14. </view>
  15. </view>
  16. <image
  17. class="filter-icon"
  18. @click="screenShow = true"
  19. src="https://static.quhouse.com/f4feade4a19d413085b591612179457f.png"
  20. mode=""
  21. />
  22. </view>
  23. <!-- 选择器 -->
  24. <view class="boxtittab" style="border: none">
  25. <view class="tabbox" @click="soltishow = true">
  26. {{ sortFilter }}
  27. <u-icon
  28. name="arrow-down"
  29. size="24"
  30. style="padding-left: 12rpx"
  31. ></u-icon>
  32. </view>
  33. <view class="tabbox" @click="timeshow = true">
  34. {{ arriveFilter }}
  35. <u-icon
  36. name="arrow-down"
  37. size="24"
  38. style="padding-left: 12rpx"
  39. ></u-icon>
  40. </view>
  41. <view class="tabbox" @click="selectshow = true">
  42. {{ receptionDuration }}
  43. <u-icon
  44. name="arrow-down"
  45. size="24"
  46. style="padding-left: 12rpx"
  47. ></u-icon>
  48. </view>
  49. <view class="tabbox" @click="huaxiangShow = true">
  50. 画像标签<u-icon
  51. name="arrow-down"
  52. size="24"
  53. style="padding-left: 12rpx"
  54. ></u-icon>
  55. </view>
  56. </view>
  57. <view class="count" v-if="recordList.length > 0">
  58. 筛选结果:<text>{{ totalRecords }} </text>条
  59. </view>
  60. <view class="content">
  61. <view
  62. v-if="recordList.length == 0"
  63. style="width: 100%; height: 100%; display: flex; align-items: center"
  64. >
  65. <view style="width: 100%; padding-top: 200rpx; background: #ffffff">
  66. <view style="width: 100%; text-align: center">
  67. <image
  68. style="width: 220rpx; height: 200rpx"
  69. src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png"
  70. mode=""
  71. ></image>
  72. </view>
  73. <view
  74. style="
  75. text-align: center;
  76. width: 100%;
  77. margin-top: 20rpx;
  78. color: #999999;
  79. "
  80. >暂无数据</view
  81. >
  82. </view>
  83. </view>
  84. <view
  85. v-if="recordList.length != 0"
  86. class="content-tips"
  87. v-for="(item, index) in recordList"
  88. :key="index"
  89. @click="gotoDetail(item.id)"
  90. >
  91. <view class="content-first">
  92. <view class="left">
  93. <view v-if="item.level.length == 0"></view>
  94. <view class="img" v-else-if="item.level == 1">A</view>
  95. <view class="img" v-else-if="item.level == 2">B</view>
  96. <view class="img" v-else-if="item.level == 3">C</view>
  97. <view class="img" v-else-if="item.level == 4">D</view>
  98. <view class="test">{{ item.name }}</view>
  99. </view>
  100. <view class="right">
  101. <view class="test"
  102. >销讲执行:<text class="blue"
  103. >{{ item.fraction || 0 }}%</text
  104. ></view
  105. >
  106. </view>
  107. </view>
  108. <view class="content-sec">
  109. <view class="content-sec-lab">
  110. <view class="content-sec-lab1"
  111. >手机号码:{{ item.phone || "--" }}</view
  112. >
  113. <view class="content-sec-lab1" style="width: 44%"
  114. >到访次数:{{ item.visitRecord || "--" }}次/{{
  115. item.mm || 0
  116. }}min</view
  117. >
  118. </view>
  119. <view class="content-sec-lab">
  120. <view class="content-sec-lab1"
  121. >需求挖掘:{{ item.wordFraction || 0 }}%</view
  122. >
  123. <view class="content-sec-lab1" style="width: 44%"
  124. >画像标签:<text style="font-weight: 600">{{
  125. item.demand.cusSemanticWordsList.length || 0
  126. }}</text></view
  127. >
  128. </view>
  129. <!-- <view class="content-sec-lab" style="line-height: 46rpx;">
  130. 客户标签:
  131. <text v-if="item.demand.cusSemanticWordsList==null">暂无</text>
  132. <view v-else class="content-sec-tips" v-for="(che,ind) in item.demand.cusSemanticWordsList"
  133. :key='ind'>{{che.name}}</view>
  134. </view> -->
  135. <view class="content-sec-lab">
  136. <view class="content-sec-lab1"
  137. >所属顾问:{{ item.agentName || "--" }}</view
  138. >
  139. <view class="content-sec-lab1" style="width: 44%"
  140. >客户阶段:{{ item.agentName || "--" }}</view
  141. >
  142. </view>
  143. <view class="content-sec-lab">
  144. <view class="content-sec-lab1"
  145. >上次到访:{{ item.createTime || "--" }}</view
  146. >
  147. </view>
  148. </view>
  149. <view class="content-last" v-if="item.isshow">
  150. <view class="content-last-tab">
  151. <!-- <image class="icon" src="https://static.quhouse.com/5daebdec0aad4f63a62d3720437034bc.png" mode="" />
  152. 添加提醒 -->
  153. </view>
  154. <view class="content-last-tab">
  155. <!-- <image class="icon" src="https://static.quhouse.com/b867df5efc72480f8c1f3bc9399c7d6c.png" mode="" />
  156. 拨打电话 -->
  157. </view>
  158. <view class="content-last-tab" @click.stop="gotoFollowUp(item.id)">
  159. <image
  160. class="icon"
  161. src="https://static.quhouse.com/3730fc3a185c4d65ae6a1821601038ab.png"
  162. mode=""
  163. />
  164. 写跟进</view
  165. >
  166. </view>
  167. </view>
  168. </view>
  169. <!-- 更多筛选 -->
  170. <u-popup v-model="screenShow" mode="top" height="850">
  171. <view class="screen">
  172. <scroll-view scroll-y="true" style="height: 700rpx;">
  173. <!-- 咨询业务 -->
  174. <view class="screen-record">
  175. <view class="screen-record-text" @click="zixunArrow = !zixunArrow">
  176. 咨询业务<image
  177. v-if="zixunArrow"
  178. class="arrow"
  179. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  180. mode=""
  181. />
  182. <image
  183. v-else
  184. class="arrow"
  185. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  186. mode=""
  187. />
  188. </view>
  189. <view class="screen-record-tab" v-if="zixunArrow">
  190. <block v-for="(item, index) in zixunList" :key="index">
  191. <view
  192. class="screen-record-item"
  193. :class="[
  194. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  195. ]"
  196. @click="choice(item)"
  197. >
  198. {{ item.label }}
  199. </view>
  200. </block>
  201. </view>
  202. </view>
  203. <!-- 接待时长 -->
  204. <view class="screen-record">
  205. <view class="screen-record-text" @click="jiedaiArrow = !jiedaiArrow">
  206. 接待时长<image
  207. v-if="jiedaiArrow"
  208. class="arrow"
  209. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  210. mode=""
  211. />
  212. <image
  213. v-else
  214. class="arrow"
  215. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  216. mode=""
  217. />
  218. </view>
  219. <view class="screen-record-tab" v-if="jiedaiArrow">
  220. <block v-for="(item, index) in jiedaiList" :key="index">
  221. <view
  222. class="screen-record-item"
  223. :class="[
  224. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  225. ]"
  226. @click="choice(item)"
  227. >
  228. {{ item.label }}
  229. </view>
  230. </block>
  231. </view>
  232. </view>
  233. <!-- 客户等级 -->
  234. <view class="screen-record">
  235. <view class="screen-record-text" @click="levelArrow = !levelArrow">
  236. 客户等级<image
  237. v-if="levelArrow"
  238. class="arrow"
  239. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  240. mode=""
  241. />
  242. <image
  243. v-else
  244. class="arrow"
  245. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  246. mode=""
  247. />
  248. </view>
  249. <view class="screen-record-tab" v-if="levelArrow">
  250. <block v-for="(item, index) in levelList" :key="index">
  251. <view
  252. class="screen-record-item"
  253. :class="[
  254. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  255. ]"
  256. @click="choice(item)"
  257. >
  258. {{ item.label }}
  259. </view>
  260. </block>
  261. </view>
  262. </view>
  263. <!-- 客户阶段 -->
  264. <view class="screen-record">
  265. <view
  266. class="screen-record-text"
  267. @click="jieduanArrow = !jieduanArrow"
  268. >
  269. 客户阶段<image
  270. v-if="jieduanArrow"
  271. class="arrow"
  272. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  273. mode=""
  274. />
  275. <image
  276. v-else
  277. class="arrow"
  278. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  279. mode=""
  280. />
  281. </view>
  282. <view class="screen-record-tab" v-if="jieduanArrow">
  283. <block v-for="(item, index) in stageList" :key="index">
  284. <view
  285. class="screen-record-item"
  286. :class="[
  287. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  288. ]"
  289. @click="choice(item)"
  290. >
  291. {{ item.label }}
  292. </view>
  293. </block>
  294. </view>
  295. </view>
  296. <!-- 需求挖掘率 -->
  297. <view class="screen-record">
  298. <view class="screen-record-text" @click="wajueArrow = !wajueArrow">
  299. 需求挖掘率<image
  300. v-if="wajueArrow"
  301. class="arrow"
  302. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  303. mode=""
  304. />
  305. <image
  306. v-else
  307. class="arrow"
  308. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  309. mode=""
  310. />
  311. </view>
  312. <view class="screen-record-tab" v-if="wajueArrow">
  313. <block v-for="(item, index) in wajueList" :key="index">
  314. <view
  315. class="screen-record-item"
  316. :class="[
  317. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  318. ]"
  319. @click="choice(item)"
  320. >
  321. {{ item.label }}
  322. </view>
  323. </block>
  324. </view>
  325. </view>
  326. <!-- 销讲执行率 -->
  327. <view class="screen-record">
  328. <view
  329. class="screen-record-text"
  330. @click="xiaojiangArrow = !xiaojiangArrow"
  331. >
  332. 销讲执行率
  333. <image
  334. v-if="xiaojiangArrow"
  335. class="arrow"
  336. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  337. mode=""
  338. />
  339. <image
  340. v-else
  341. class="arrow"
  342. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  343. mode=""
  344. />
  345. </view>
  346. <view class="screen-record-tab" v-if="xiaojiangArrow">
  347. <block v-for="(item, index) in xiaojiangList" :key="index">
  348. <view
  349. class="screen-record-item"
  350. :class="[
  351. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  352. ]"
  353. @click="choice(item)"
  354. >
  355. {{ item.label }}
  356. </view>
  357. </block>
  358. </view>
  359. </view>
  360. <!-- 到访次数 -->
  361. <view class="screen-record">
  362. <view class="screen-record-text" @click="visitArrow = !visitArrow">
  363. 到访次数<image
  364. v-if="visitArrow"
  365. class="arrow"
  366. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  367. mode=""
  368. />
  369. <image
  370. v-else
  371. class="arrow"
  372. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  373. mode=""
  374. />
  375. </view>
  376. <view class="screen-record-tab" v-if="visitArrow">
  377. <block v-for="(item, index) in visitList" :key="index">
  378. <view
  379. class="screen-record-item"
  380. :class="[
  381. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  382. ]"
  383. @click="choice(item)"
  384. >
  385. {{ item.label }}
  386. </view>
  387. </block>
  388. </view>
  389. </view>
  390. </scroll-view>
  391. <!-- <view class="screen-counselor">
  392. <view class="screen-text">
  393. 客户标签
  394. </view>
  395. <view class="screen-sel" @click="selectTipshow = true">
  396. <u-input v-model="screen.cunsumerTips" type="text" placeholder='请选择' class="screen-inp"
  397. disabled />
  398. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  399. </view>
  400. </view> -->
  401. <!-- <view class="screen-counselor">
  402. <view class="screen-text">
  403. 客户阶段
  404. </view>
  405. <view class="screen-sel" @click="selectPhaseShow = true">
  406. <u-input v-model="screen.clientStageName" type="text" placeholder='请选择' class="screen-inp"
  407. disabled />
  408. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  409. </view>
  410. </view> -->
  411. <view class="screen-foot">
  412. <view class="screen-foot-reset" @click="reset"> 重置 </view>
  413. <view class="screen-foot-sure" @click="screensure"> 确定 </view>
  414. </view>
  415. </view>
  416. </u-popup>
  417. <!-- 选择顾问的选择框 -->
  418. <u-select
  419. v-model="selectshow"
  420. :list="freeList"
  421. @confirm="actionSelectCallback"
  422. ></u-select>
  423. <!-- 客户标签 -->
  424. <u-select
  425. v-model="selectTipshow"
  426. :list="findKeywordsList"
  427. @confirm="selectCallback"
  428. ></u-select>
  429. <!-- 客户阶段 -->
  430. <u-select
  431. v-model="selectPhaseShow"
  432. :list="phaseList"
  433. @confirm="selectPhase"
  434. ></u-select>
  435. <u-calendar
  436. v-model="totalTimeShow"
  437. mode="range"
  438. @change="totalTimeChange"
  439. ></u-calendar>
  440. <!-- 到访时间 -->
  441. <u-popup v-model="timeshow" mode="bottom">
  442. <view
  443. class="timeview"
  444. :style="{ color: activeTotal == 5 ? '#2B6EFF' : '#333333' }"
  445. @click="tabtimetap(5, '到访时间')"
  446. >
  447. 全部</view
  448. >
  449. <view
  450. class="timeview"
  451. :style="{ color: activeTotal == 0 ? '#2B6EFF' : '#333333' }"
  452. @click="tabtimetap(0, '今天')"
  453. >
  454. 今天</view
  455. >
  456. <view
  457. class="timeview"
  458. :style="{ color: activeTotal == 1 ? '#2B6EFF' : '#333333' }"
  459. @click="tabtimetap(1, '昨天')"
  460. >
  461. 昨天</view
  462. >
  463. <view
  464. class="timeview"
  465. :style="{ color: activeTotal == 2 ? '#2B6EFF' : '#333333' }"
  466. @click="tabtimetap(2, '近7天')"
  467. >
  468. 近7天</view
  469. >
  470. <view
  471. class="timeview"
  472. :style="{ color: activeTotal == 3 ? '#2B6EFF' : '#333333' }"
  473. @click="tabtimetap(3, '近30天')"
  474. >
  475. 近30天</view
  476. >
  477. <view
  478. class="timeview"
  479. :style="{ color: activeTotal == 4 ? '#2B6EFF' : '#333333' }"
  480. @click="tabtimetap(4)"
  481. >
  482. 自定义</view
  483. >
  484. </u-popup>
  485. <u-popup v-model="huaxiangShow" mode="top" height="850">
  486. <view class="screen">
  487. <scroll-view scroll-y="true" style="height: 700rpx;">
  488. <view class="screen-record">
  489. <view class="screen-record-text" @click="zixunArrow = !zixunArrow">
  490. 咨询业务<image
  491. v-if="zixunArrow"
  492. class="arrow"
  493. src="https://static.quhouse.com/6cf38a2b82694392a7ab6eea24ce76b1.png"
  494. mode=""
  495. />
  496. <image
  497. v-else
  498. class="arrow"
  499. src="https://static.quhouse.com/17d69984ec7c4830b43f712016f06807.png"
  500. mode=""
  501. />
  502. </view>
  503. <view class="screen-record-tab" v-if="zixunArrow">
  504. <block v-for="(item, index) in zixunList" :key="index">
  505. <view
  506. class="screen-record-item"
  507. :class="[
  508. item.isShow ? 'screen-record-chose' : 'screen-record-nochose',
  509. ]"
  510. @click="choice(item)"
  511. >
  512. {{ item.label }}
  513. </view>
  514. </block>
  515. </view>
  516. </view>
  517. </scroll-view>
  518. <view class="screen-foot">
  519. <view class="screen-foot-reset" @click="reset"> 重置 </view>
  520. <view class="screen-foot-sure" @click="screensure"> 确定 </view>
  521. </view>
  522. </view>
  523. </u-popup>
  524. <u-select
  525. v-model="soltishow"
  526. :list="orderBylist"
  527. @confirm="selectCallback2"
  528. ></u-select>
  529. <!-- 加载组件 -->
  530. <loading v-model="LOADING"></loading>
  531. </view>
  532. </template>
  533. <script>
  534. import loading from "@/components/loading/index.vue";
  535. export default {
  536. components: {
  537. loading,
  538. },
  539. data() {
  540. return {
  541. huaxiangShow: false,
  542. wajueArrow: false,
  543. jieduanArrow: false,
  544. levelArrow: false,
  545. zixunArrow: true,
  546. jiedaiArrow: false,
  547. luyinArrow: false,
  548. visitArrow: false,
  549. xiaojiangArrow: false,
  550. orderBylist: [
  551. {
  552. label: "全部",
  553. value: "0",
  554. },
  555. {
  556. label: "创建时间倒序",
  557. value: "1",
  558. },
  559. {
  560. label: "创建时间正序",
  561. value: "2",
  562. },
  563. {
  564. label: "接待时间倒序",
  565. value: "3",
  566. },
  567. {
  568. label: "接待时间正序",
  569. value: "4",
  570. },
  571. {
  572. label: "执行率正序",
  573. value: "5",
  574. },
  575. {
  576. label: "执行率倒序",
  577. value: "6",
  578. },
  579. {
  580. label: "接访次数正序",
  581. value: "7",
  582. },
  583. {
  584. label: "接访次数倒序",
  585. value: "8",
  586. },
  587. {
  588. label: "需求挖掘率正序",
  589. value: "9",
  590. },
  591. {
  592. label: "需求挖掘率倒序",
  593. value: "10",
  594. },
  595. ],
  596. zixunList: [
  597. {
  598. label: "一期住宅",
  599. value: 1,
  600. isShow: false,
  601. },
  602. {
  603. label: "二期住宅",
  604. value: 2,
  605. isShow: false,
  606. },
  607. {
  608. label: "三期住宅",
  609. value: 3,
  610. isShow: false,
  611. },
  612. {
  613. label: "商铺",
  614. value: 4,
  615. isShow: false,
  616. },
  617. ],
  618. jiedaiList: [
  619. {
  620. label: "0~15min",
  621. value: 1,
  622. isShow: false,
  623. },
  624. {
  625. label: "15~30min",
  626. value: 2,
  627. isShow: false,
  628. },
  629. {
  630. label: "30~60min",
  631. value: 3,
  632. isShow: false,
  633. },
  634. {
  635. label: "60~90min",
  636. value: 4,
  637. isShow: false,
  638. },
  639. {
  640. label: "90min以上",
  641. value: 5,
  642. isShow: false,
  643. },
  644. ],
  645. wajueList: [
  646. {
  647. label: "30%以下",
  648. value: 1,
  649. isShow: false,
  650. },
  651. {
  652. label: "30%~50%",
  653. value: 2,
  654. isShow: false,
  655. },
  656. {
  657. label: "50%~70%",
  658. value: 3,
  659. isShow: false,
  660. },
  661. {
  662. label: "70%以上",
  663. value: 4,
  664. isShow: false,
  665. },
  666. ],
  667. xiaojiangList: [
  668. {
  669. label: "30%以下",
  670. value: 1,
  671. isShow: false,
  672. },
  673. {
  674. label: "30%~50%",
  675. value: 2,
  676. isShow: false,
  677. },
  678. {
  679. label: "50%~70%",
  680. value: 3,
  681. isShow: false,
  682. },
  683. {
  684. label: "70%以上",
  685. value: 4,
  686. isShow: false,
  687. },
  688. ],
  689. value: "",
  690. screenShow: false,
  691. selectshow: false,
  692. selectTipshow: false,
  693. selectPhaseShow: false,
  694. buildingID: "",
  695. screen: {
  696. agentId: "",
  697. agentIdtext: "",
  698. visitRecord: [],
  699. record: [],
  700. cunsumerTips: "",
  701. cunsumerTipsid: "",
  702. clientStage: "",
  703. clientStageName: "",
  704. },
  705. stageList: [
  706. {
  707. label: "未知",
  708. value: 1,
  709. isShow: false,
  710. },
  711. {
  712. label: "到访",
  713. value: 2,
  714. isShow: false,
  715. },
  716. {
  717. label: "意向",
  718. value: 3,
  719. isShow: false,
  720. },
  721. {
  722. label: "定金",
  723. value: 4,
  724. isShow: false,
  725. },
  726. {
  727. label: "成交",
  728. value: 5,
  729. isShow: false,
  730. },
  731. ],
  732. recordList: [],
  733. nextPage: 1,
  734. totalRecord: "",
  735. freeList: [],
  736. userInfo: {},
  737. findKeywordsList: [],
  738. phaseList: [],
  739. isnorefresh: "",
  740. activeTotal: 5,
  741. activeTotal2: 0,
  742. totalTimeShow: false,
  743. timeshow: false,
  744. timetushow: false,
  745. soltishow: false,
  746. staTime: "",
  747. endtime: "",
  748. orderBy: "",
  749. totalRecords: "",
  750. visitList: [
  751. {
  752. label: "首次到访",
  753. value: 1,
  754. isShow: false,
  755. },
  756. {
  757. label: "2次到访",
  758. value: 2,
  759. isShow: false,
  760. },
  761. {
  762. label: "3次到访",
  763. value: 3,
  764. isShow: false,
  765. },
  766. {
  767. label: "3次以上",
  768. value: 4,
  769. isShow: false,
  770. },
  771. ],
  772. levelList: [
  773. {
  774. label: "A",
  775. value: 1,
  776. isShow: false,
  777. },
  778. {
  779. label: "B",
  780. value: 2,
  781. isShow: false,
  782. },
  783. {
  784. label: "C",
  785. value: 3,
  786. isShow: false,
  787. },
  788. {
  789. label: "D",
  790. value: 4,
  791. isShow: false,
  792. },
  793. ],
  794. isRefresh: false,
  795. // 筛选文字展示
  796. sortFilter: "排序",
  797. arriveFilter: "到访时间",
  798. receptionDuration: "所属顾问",
  799. };
  800. },
  801. onLoad(options) {
  802. this.LOADING = true;
  803. this.isnorefresh = options.refresh;
  804. },
  805. onShow() {
  806. if (this.isnorefresh == "refresh") {
  807. this.buildingID = uni.getStorageSync("buildingID").id;
  808. this.nextPage = 1;
  809. this.recordList = [];
  810. this.isRefresh = false;
  811. this.getMyCustom();
  812. this.getFreeList();
  813. this.getfindKeywordsList();
  814. this.getCustomPhase();
  815. this.isnorefresh = "";
  816. }
  817. },
  818. onPullDownRefresh() {
  819. this.resetFilter();
  820. this.isRefresh = true;
  821. this.nextPage = 1;
  822. this.getMyCustom();
  823. setTimeout(() => {
  824. uni.stopPullDownRefresh();
  825. }, 1000);
  826. },
  827. onReachBottom() {
  828. if (this.totalRecord == this.nextPage) {
  829. uni.showToast({
  830. icon: "none",
  831. title: "到底了",
  832. duration: 2000,
  833. });
  834. return;
  835. } else {
  836. this.nextPage += 1;
  837. this.isRefresh = false;
  838. this.getMyCustom();
  839. }
  840. },
  841. methods: {
  842. // 过滤
  843. resetFilter() {
  844. this.sortFilter = "排序";
  845. this.orderBy = null;
  846. this.arriveFilter = "到访时间";
  847. this.staTime = "";
  848. this.endtime = "";
  849. this.nextPage = 1;
  850. this.activeTotal = 5;
  851. this.recordList = [];
  852. this.receptionDuration = "所属顾问";
  853. this.activeTotal2 = 0;
  854. },
  855. choice(item) {
  856. item.isShow = !item.isShow;
  857. },
  858. //选择标签
  859. selectCallback2(e) {
  860. this.sortFilter = e[0].label;
  861. this.orderBy = e[0].value;
  862. this.nextPage = 1;
  863. this.recordList = [];
  864. this.isRefresh = false;
  865. this.getMyCustom();
  866. },
  867. //选择录音时长
  868. timetap(index, text) {
  869. if (text) this.receptionDuration = text;
  870. this.timetushow = false;
  871. this.activeTotal2 = index;
  872. this.nextPage = 1;
  873. this.recordList = [];
  874. this.isRefresh = false;
  875. this.getMyCustom();
  876. },
  877. //时间选择
  878. tabtimetap(index, text) {
  879. this.timeshow = false;
  880. if (text) this.arriveFilter = text;
  881. if (index == 4) {
  882. this.totalTimeShow = true;
  883. } else {
  884. this.activeTotal = index;
  885. this.staTime = "";
  886. this.endtime = "";
  887. this.nextPage = 1;
  888. this.recordList = [];
  889. this.isRefresh = false;
  890. this.getMyCustom();
  891. }
  892. },
  893. //自定义时间
  894. totalTimeChange(e) {
  895. this.staTime = e.startDate;
  896. this.endtime = e.endDate;
  897. this.activeTotal = 4;
  898. this.nextPage = 1;
  899. this.recordList = [];
  900. this.isRefresh = false;
  901. this.getMyCustom();
  902. },
  903. recordclick(i) {
  904. if (this.screen.record == i) {
  905. this.screen.record = null;
  906. } else {
  907. this.screen.record = i;
  908. }
  909. },
  910. screenvisitRecord(i) {
  911. if (this.screen.visitRecord == i) {
  912. this.screen.visitRecord = "";
  913. } else {
  914. this.screen.visitRecord = i;
  915. }
  916. },
  917. // 字典表接口
  918. getListByType() {
  919. this.$u
  920. .get("/matchKeywords/findPersonalMatchData", {
  921. customerId: this.customerId,
  922. })
  923. .then((res) => {
  924. // console.log(res)
  925. res.forEach((item1) => {
  926. item1.children.map((item) => {
  927. if (item.isInterval == 0) {
  928. item.label =
  929. item.name + item.unit + "-" + item.endName + item.unit;
  930. } else {
  931. item.label = item.name;
  932. }
  933. item.value = item.id;
  934. });
  935. });
  936. // console.log(res)
  937. this.allList = res;
  938. });
  939. },
  940. // 客户详情
  941. gotoDetail(id) {
  942. uni.navigateTo({
  943. url: `/pages/center/consumer/consumerDetail?id=${id}`,
  944. });
  945. },
  946. getMyCustom() {
  947. let dateType = 0;
  948. let recDurationInterval = 0;
  949. let orderBy = 0;
  950. if (this.activeTotal == 5) {
  951. dateType = null;
  952. } else if (this.activeTotal == 4) {
  953. dateType = null;
  954. } else {
  955. dateType = this.activeTotal;
  956. }
  957. if (this.activeTotal2 == 0) {
  958. recDurationInterval = null;
  959. } else {
  960. recDurationInterval = this.activeTotal2;
  961. }
  962. if (this.orderBy == 0) {
  963. orderBy = null;
  964. } else {
  965. orderBy = this.orderBy;
  966. }
  967. var parames = {
  968. pageNum: this.nextPage,
  969. pageSize: 10,
  970. query: {
  971. projectId: this.buildingID,
  972. keywordsId: this.screen.cunsumerTipsid,
  973. clientStage: this.screen.clientStage,
  974. agentId: this.screen.agentId,
  975. dateType: dateType,
  976. staTime: this.staTime,
  977. endtime: this.endtime,
  978. recDurationInterval: recDurationInterval,
  979. orderBy: orderBy,
  980. },
  981. };
  982. if (this.screen.visitRecord.length > 0) {
  983. parames.query.visitRecords = this.screen.visitRecord.join(",");
  984. }
  985. if (this.screen.record.length > 0) {
  986. parames.query.level = this.screen.record.join(",");
  987. }
  988. // if(this.screen.record==0){
  989. // parames.query.levels= ["1"]
  990. // }else if(this.screen.record==1){
  991. // parames.query.levels= ["2"]
  992. // }else if(this.screen.record==2){
  993. // parames.query.levels= ["3"]
  994. // }else if(this.screen.record==3){
  995. // parames.query.levels= ["4"]
  996. // }else{
  997. // parames.query.levels=''
  998. // }
  999. this.userInfo = uni.getStorageSync("weapp_session_userInfo_data");
  1000. this.$u
  1001. .post("/customer/customerManagement", parames)
  1002. .then((data) => {
  1003. this.LOADING = false;
  1004. if (this.staTime && this.endtime) {
  1005. this.arriveFilter = `${this.staTime}-${this.endtime}`;
  1006. }
  1007. var list = data.results || [];
  1008. list.forEach((item) => {
  1009. if (this.userInfo.dataCode == 6) {
  1010. item.isshow = true;
  1011. } else {
  1012. item.isshow = false;
  1013. }
  1014. });
  1015. list.forEach((item) => {
  1016. if (item.demand.cusSemanticWordsList != null) {
  1017. item.demand.cusSemanticWordsList.forEach((che) => {
  1018. if (che.isInterval == 0) {
  1019. che.name = che.name + che.unit + "-" + che.endName + che.unit;
  1020. }
  1021. });
  1022. }
  1023. });
  1024. if (this.isRefresh) {
  1025. this.recordList = list;
  1026. } else {
  1027. this.recordList = [...this.recordList, ...list];
  1028. }
  1029. this.totalRecord = data.totalPage;
  1030. this.totalRecords = data.totalRecord;
  1031. })
  1032. .catch((e) => {
  1033. this.LOADING = false;
  1034. });
  1035. },
  1036. //获取顾问列表
  1037. getFreeList() {
  1038. this.freeList = [];
  1039. this.$u
  1040. .post("/cusLvStatistics/selectAllAccountIdByHouseId", {
  1041. houseId: this.buildingID,
  1042. })
  1043. .then((res) => {
  1044. this.freeList = res;
  1045. this.freeList.forEach((item) => {
  1046. item.label = item.name;
  1047. item.value = item.accountId;
  1048. });
  1049. });
  1050. },
  1051. //获取客户标签
  1052. getfindKeywordsList() {
  1053. this.findKeywordsList = [];
  1054. this.$u
  1055. .post("/customer/findKeywords", {
  1056. houseId: this.buildingID,
  1057. })
  1058. .then((res) => {
  1059. res.forEach((item) => {
  1060. if (item.isInterval == 0) {
  1061. item.label =
  1062. item.name + item.unit + "-" + item.endName + item.unit;
  1063. } else {
  1064. item.label = item.name;
  1065. }
  1066. item.value = item.id;
  1067. });
  1068. this.findKeywordsList = res;
  1069. });
  1070. },
  1071. getCustomPhase() {
  1072. this.phaseList = [];
  1073. this.$u
  1074. .post("/customer/lifeTrackDefineList", {
  1075. houseId: this.buildingID,
  1076. })
  1077. .then((res) => {
  1078. let tempArr = [];
  1079. res.forEach((item) => {
  1080. let tempObj = {};
  1081. tempObj.label = item.stageName;
  1082. tempObj.value = item.id;
  1083. tempArr.push(tempObj);
  1084. });
  1085. this.phaseList = tempArr;
  1086. });
  1087. },
  1088. //选择顾问
  1089. actionSelectCallback(e) {
  1090. this.screen.agentId = e[0].value;
  1091. this.receptionDuration = e[0].label;
  1092. },
  1093. //选择标签
  1094. selectCallback(e) {
  1095. this.screen.cunsumerTips = e[0].label;
  1096. this.screen.cunsumerTipsid = e[0].value;
  1097. },
  1098. selectPhase(e) {
  1099. this.screen.clientStageName = e[0].label;
  1100. this.screen.clientStage = e[0].value;
  1101. },
  1102. //重置
  1103. reset() {
  1104. this.screen = {
  1105. agentId: "",
  1106. agentIdtext: "",
  1107. visitRecord: [],
  1108. record: [],
  1109. cunsumerTips: "",
  1110. cunsumerTipsid: "",
  1111. clientStage: "",
  1112. clientStageName: "",
  1113. };
  1114. this.zixunList.map((i) => {
  1115. i.isShow = false;
  1116. });
  1117. this.wajueList.map((i) => {
  1118. i.isShow = false;
  1119. });
  1120. this.stageList.map((i) => {
  1121. i.isShow = false;
  1122. });
  1123. this.jiedaiList.map((i) => {
  1124. i.isShow = false;
  1125. });
  1126. this.xiaojiangList.map((i) => {
  1127. i.isShow = false;
  1128. });
  1129. this.visitList.map((i) => {
  1130. i.isShow = false;
  1131. });
  1132. this.levelList.map((i) => {
  1133. i.isShow = false;
  1134. });
  1135. this.nextPage = 1;
  1136. this.recordList = [];
  1137. // this.screenShow = false;
  1138. this.isRefresh = false;
  1139. this.getMyCustom();
  1140. },
  1141. //筛选确认
  1142. screensure() {
  1143. this.nextPage = 1;
  1144. this.recordList = [];
  1145. this.screenShow = false;
  1146. this.isRefresh = false;
  1147. this.getMyCustom();
  1148. },
  1149. goSearch() {
  1150. uni.navigateTo({
  1151. url: "/pages/center/consumer/consumerSearch",
  1152. });
  1153. },
  1154. gotoFollowUp(id) {
  1155. uni.navigateTo({
  1156. url: `/pages/center/consumer/newFollowup/newFollowup?id=${id}`,
  1157. });
  1158. },
  1159. },
  1160. };
  1161. </script>
  1162. <style lang="scss" scoped>
  1163. .box {
  1164. width: 100%;
  1165. height: 100%;
  1166. background: #f8f8f8;
  1167. }
  1168. .count {
  1169. width: 100%;
  1170. height: 60rpx;
  1171. display: flex;
  1172. align-items: center;
  1173. justify-content: center;
  1174. background-color: #fff;
  1175. border-top: 1px solid #e0e0e0;
  1176. text {
  1177. color: #f71616;
  1178. }
  1179. }
  1180. .timeview {
  1181. height: 80rpx;
  1182. line-height: 80rpx;
  1183. width: 100%;
  1184. text-align: center;
  1185. border-bottom: 1px solid #f8f8f8;
  1186. }
  1187. //时间切换的样式
  1188. .boxtittab {
  1189. position: sticky;
  1190. top: var(--window-top);
  1191. z-index: 999;
  1192. width: 100;
  1193. height: 92rpx;
  1194. background: #ffffff;
  1195. display: flex;
  1196. align-items: center;
  1197. .tabbox {
  1198. flex: 1;
  1199. height: 100%;
  1200. text-align: center;
  1201. line-height: 92rpx;
  1202. color: #666666;
  1203. font-size: 28rpx;
  1204. overflow: hidden;
  1205. text-overflow: ellipsis;
  1206. display: -webkit-box;
  1207. /* 将对象作为弹性伸缩盒子模型显示 */
  1208. -webkit-line-clamp: 1;
  1209. /* 控制最多显示几行 */
  1210. -webkit-box-orient: vertical;
  1211. /* 设置或检索伸缩盒对象的子元素的排列方式 */
  1212. }
  1213. }
  1214. .top-search {
  1215. display: flex;
  1216. align-items: center;
  1217. justify-content: space-between;
  1218. background: #fff;
  1219. padding-right: 30rpx;
  1220. .filter-icon {
  1221. width: 40rpx;
  1222. height: 40rpx;
  1223. padding: 15rpx;
  1224. }
  1225. .search-box {
  1226. width: 670rpx;
  1227. height: 102rpx;
  1228. background: #ffffff;
  1229. display: flex;
  1230. align-items: center;
  1231. justify-content: center;
  1232. .search {
  1233. width: 94%;
  1234. height: 70rpx;
  1235. display: flex;
  1236. align-items: center;
  1237. background: #f8f8f8;
  1238. border-radius: 33rpx;
  1239. .search-img {
  1240. width: 26rpx;
  1241. height: 30rpx;
  1242. margin-left: 20rpx;
  1243. .search-img1 {
  1244. width: 100%;
  1245. height: 100%;
  1246. margin-top: 2rpx;
  1247. }
  1248. }
  1249. .search-text {
  1250. font-size: 28rpx;
  1251. font-weight: 400;
  1252. color: #999999;
  1253. margin-left: 10rpx;
  1254. }
  1255. }
  1256. .search-screen {
  1257. width: 40rpx;
  1258. height: 40rpx;
  1259. margin-left: 30rpx;
  1260. .search-screen1 {
  1261. width: 100%;
  1262. height: 100%;
  1263. }
  1264. }
  1265. }
  1266. }
  1267. .content {
  1268. overflow: hidden;
  1269. .content-tips {
  1270. background: #fff;
  1271. margin-top: 20rpx;
  1272. overflow: hidden;
  1273. padding-bottom: 30rpx;
  1274. .content-first {
  1275. padding: 19rpx 30rpx;
  1276. display: flex;
  1277. justify-content: space-between;
  1278. box-sizing: border-box;
  1279. font-weight: 400;
  1280. color: #292929;
  1281. height: 90rpx;
  1282. font-size: 30rpx;
  1283. line-height: 30rpx;
  1284. .left {
  1285. display: flex;
  1286. .img {
  1287. width: 52rpx;
  1288. height: 52rpx;
  1289. border-radius: 50%;
  1290. text-align: center;
  1291. line-height: 50rpx;
  1292. margin-right: 20rpx;
  1293. color: #fff;
  1294. font-size: 30rpx;
  1295. background: #9f61c8;
  1296. }
  1297. .test {
  1298. margin-top: 11rpx;
  1299. font-weight: 500;
  1300. color: #333333;
  1301. }
  1302. }
  1303. .right {
  1304. display: flex;
  1305. .test {
  1306. margin-top: 11rpx;
  1307. .blue {
  1308. font-size: 32rpx;
  1309. font-family: PingFangSC-Medium, PingFang SC;
  1310. font-weight: 500;
  1311. color: #2671e2;
  1312. }
  1313. }
  1314. }
  1315. }
  1316. .content-sec {
  1317. border-top: 1px solid #e0e0e0;
  1318. padding: 0 30rpx;
  1319. // padding-bottom: 30rpx;
  1320. position: relative;
  1321. .content-sec-lab {
  1322. margin-top: 28rpx;
  1323. display: flex;
  1324. justify-content: space-between;
  1325. font-size: 30rpx;
  1326. font-weight: 400;
  1327. color: #666666;
  1328. line-height: 42rpx;
  1329. .content-sec-lab1 {
  1330. color: #333333;
  1331. }
  1332. .content-sec-tips {
  1333. max-width: 160rpx;
  1334. height: 46rpx;
  1335. background: #f2f2f2;
  1336. border-radius: 6rpx;
  1337. text-align: center;
  1338. line-height: 26rpx;
  1339. overflow: hidden;
  1340. text-overflow: ellipsis;
  1341. white-space: nowrap;
  1342. font-size: 26rpx;
  1343. font-weight: 400;
  1344. color: #333333;
  1345. margin-right: 20rpx;
  1346. box-sizing: border-box;
  1347. padding: 10rpx 24rpx;
  1348. }
  1349. }
  1350. .content-sec-num {
  1351. position: absolute;
  1352. width: 200rpx;
  1353. height: 90rpx;
  1354. background: #f4f8fd;
  1355. border-radius: 12rpx;
  1356. font-weight: 400;
  1357. color: #2671e2;
  1358. line-height: 45rpx;
  1359. bottom: 30rpx;
  1360. right: 30rpx;
  1361. text-align: center;
  1362. }
  1363. }
  1364. .content-last {
  1365. display: flex;
  1366. height: 42rpx;
  1367. margin-top: 30rpx;
  1368. .content-last-tab {
  1369. width: 33.4%;
  1370. text-align: center;
  1371. font-size: 30rpx;
  1372. font-weight: 400;
  1373. color: #333333;
  1374. line-height: 78rpx;
  1375. display: flex;
  1376. align-items: center;
  1377. justify-content: center;
  1378. .icon {
  1379. width: 40rpx;
  1380. height: 40rpx;
  1381. margin-right: 12rpx;
  1382. }
  1383. }
  1384. }
  1385. }
  1386. }
  1387. // 这是弹出层
  1388. .screen {
  1389. .screen-record {
  1390. overflow: hidden;
  1391. padding: 0 30rpx;
  1392. box-sizing: border-box;
  1393. border-bottom: 1px solid #e0e0e0;
  1394. .screen-record-text {
  1395. font-weight: 600;
  1396. padding: 30rpx 0;
  1397. font-size: 30rpx;
  1398. color: #333333;
  1399. line-height: 30rpx;
  1400. display: flex;
  1401. align-items: center;
  1402. justify-content: space-between;
  1403. .arrow {
  1404. width: 30rpx;
  1405. height: 14rpx;
  1406. }
  1407. }
  1408. .screen-record-tab {
  1409. margin-top: 30rpx;
  1410. padding-bottom: 10rpx;
  1411. display: flex;
  1412. flex-wrap: wrap;
  1413. .screen-record-item {
  1414. min-width: 150rpx;
  1415. padding: 0 14rpx;
  1416. height: 60rpx;
  1417. border-radius: 8rpx;
  1418. text-align: center;
  1419. line-height: 60rpx;
  1420. margin: 0 22rpx 22rpx 0;
  1421. &:nth-child(4n) {
  1422. margin-right: 0;
  1423. }
  1424. }
  1425. .screen-record-chose {
  1426. background: #f1f6fd;
  1427. color: #2671e2;
  1428. }
  1429. .screen-record-nochose {
  1430. background: #f7f8fa;
  1431. color: #333;
  1432. }
  1433. }
  1434. }
  1435. .screen-foot {
  1436. width: 100%;
  1437. height: 78rpx;
  1438. display: flex;
  1439. margin: 30rpx 30rpx 0;
  1440. .screen-foot-reset {
  1441. width: 176rpx;
  1442. height: 78rpx;
  1443. line-height: 78rpx;
  1444. background: #FFFFFF;
  1445. border-radius: 8rpx;
  1446. border: 1px solid #2671E2;
  1447. margin-right: 30rpx;
  1448. font-size: 30rpx;
  1449. font-family: PingFangSC-Regular, PingFang SC;
  1450. font-weight: 400;
  1451. color: #2671E2;
  1452. text-align: center;
  1453. }
  1454. .screen-foot-sure {
  1455. width: 484rpx;
  1456. height: 78rpx;
  1457. line-height: 78rpx;
  1458. background: #2671E2;
  1459. border: 1px solid #2671E2;
  1460. border-radius: 8rpx;
  1461. font-size: 30rpx;
  1462. font-family: PingFangSC-Regular, PingFang SC;
  1463. font-weight: 400;
  1464. color: #FFFFFF;
  1465. text-align: center;
  1466. }
  1467. }
  1468. }
  1469. </style>