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