AI销管
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

1519 行
41 KiB

  1. <template>
  2. <view>
  3. <view class="timetabct">
  4. <view class="timetabctview">
  5. <view :class="{ activecllasscet: activeTotal == 0 }" @click="tabtimetap(0)">7天</view>
  6. </view>
  7. <view class="timetabctview">
  8. <view :class="{ activecllasscet: activeTotal == 1 }" @click="tabtimetap(1)">15天</view>
  9. </view>
  10. <view class="timetabctview">
  11. <view :class="{ activecllasscet: activeTotal == 2 }" @click="tabtimetap(2)">30天</view>
  12. </view>
  13. </view>
  14. <view class="timepick">
  15. <view class="timepicktime">
  16. <view @click="tabtimetap(3)">{{sheartime1}}
  17. <image class="Underimg" src="../../../static/images/down.png" mode=""></image>
  18. </view>
  19. </view>
  20. <view class="timepickpick" @click="checkboxChange()">
  21. <image v-if="timepickpickisshow" style="width: 30rpx;height: 30rpx;"
  22. src="../../../static/images/xuanzhong.png" mode=""></image>
  23. <view v-else style="width: 30rpx;height:30rpx;border: 1px solid #E0E0E0;box-sizing:border-box;"></view>
  24. <view style="font-size:26rpx;text-indent: 12rpx;">对比</view>
  25. </view>
  26. <view class="timepicktime" v-if="timepickpickisshow">
  27. <view @click="tabtimetap(4)">{{sheartime2}}
  28. <image class="Underimg" src="../../../static/images/down.png" mode=""></image>
  29. </view>
  30. </view>
  31. </view>
  32. <view class="timeduibi">
  33. <view class="timeshow">数据起始时间:<text style="color: #333333;">{{kanbanlist.kaishitime}}</text></view>
  34. <view class="timeshow" v-if="kanbanlist.duibitime.length!=0">
  35. 数据对比时间:
  36. <text style="color: #333333;">{{kanbanlist.duibitime}}</text>
  37. </view>
  38. </view>
  39. <view class="boxzonglan" style="min-height: 100rpx;">
  40. <view class="zonglantit">简报</view>
  41. <view class="zonglanbox">
  42. <view class="grid" v-for="(item,index) in numlist" :key="index">
  43. <view class="audonum">
  44. <view class="circle"></view>
  45. {{item.name}}
  46. </view>
  47. <view class="num u-flex" v-if="item.name==='平均执行率'">
  48. {{item.num}}%
  49. <!-- <image style="margin-left: 2rpx;width: 28rpx;height: 14rpx" src="../../../static/images/excute.png" mode="" /> -->
  50. </view>
  51. <view class="num" v-else-if="item.name==='有效接待'">{{item.num||'--'}}</view>
  52. <view class="num" v-else-if="item.name==='平均接待时长'">{{item.num}}分</view>
  53. <view class="num" v-else>{{item.num||0}}</view>
  54. <view class="comparesize" v-if="compareFlag&&timepickpickisshow">
  55. <text style="margin-right: 50rpx;">对比:{{item.name==='平均执行率'?item.num1+'%':item.num1}}</text>
  56. <text :style="{color:item.num2*1>0?'red':'green'}">
  57. {{item.num2}}
  58. <template v-if="item.name==='平均执行率'">
  59. %
  60. </template>
  61. {{(item.num2*1) > 0 ? '↑' : '↓'}}</text>
  62. </view>
  63. </view>
  64. </view>
  65. </view>
  66. <view class="boxtittab" style="border: none;height: 82rpx;">
  67. <view class="tabbox">
  68. <view :class="{ activecllasscet2: newactiveTotal == 0 }" @click="tabxuanxiangtap(0)">项目</view>
  69. </view>
  70. <view class="tabbox">
  71. <view :class="{ activecllasscet2: newactiveTotal == 1 }" @click="tabxuanxiangtap(1)">顾问</view>
  72. </view>
  73. <view class="tabbox">
  74. <view :class="{ activecllasscet2: newactiveTotal == 2 }" @click="tabxuanxiangtap(2)">团队</view>
  75. </view>
  76. <view class="tabbox">
  77. <view :class="{ activecllasscet2: newactiveTotal == 3 }" @click="tabxuanxiangtap(3)">销讲一级</view>
  78. </view>
  79. <view class="tabbox">
  80. <view :class="{ activecllasscet2: newactiveTotal == 4 }" @click="tabxuanxiangtap(4)">销讲二级</view>
  81. </view>
  82. </view>
  83. <view class="chart">
  84. <view style="display: flex;padding: 0 0 40rpx 0;justify-content: center;">
  85. <view class="marketingBusiness">
  86. <view class="marketingBusinesstext" style="min-width: 50rpx;" @click="showMarketingBusiness = true">
  87. {{ marketingBusinessText }}
  88. <image class="righttochoose" src="../../../static/images/righttochoose.png" mode=""></image>
  89. </view>
  90. </view>
  91. <view
  92. style="display: flex;justify-content:center;padding-left: 30rpx;padding-right: 30rpx;margin-top: 0rpx;"
  93. v-if="guwenshow&&lopanobj.name" @click="oninputtap()">
  94. <view class="title2-che u-flex" style="width: 220rpx;">{{lopanobj.name}}
  95. <image class="righttochoose" src="../../../static/images/down.png" mode=""></image>
  96. </view>
  97. </view>
  98. </view>
  99. <view style="padding: 30rpx;padding-bottom: 20rpx;align-items: center;" v-if="Selectlevel">
  100. <view style="display: flex;align-items: center;border-bottom: 1px solid #C9C9C9;height: 80rpx;">
  101. <view>选择一级:</view>
  102. <view style="width:75%;">
  103. <input @click="oninputtap2()" v-model="Selectlevelobj.name" type="text" disabled="true"
  104. :border="border" placeholder="请选择" />
  105. </view>
  106. <view>
  107. <image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/qf/more.png"
  108. style="width:12rpx;height:23rpx;margin-left: 16rpx;">
  109. </view>
  110. </view>
  111. <view style="display: flex;align-items: center;border-bottom: 1px solid #C9C9C9;height: 80rpx;">
  112. <view>选择二级:</view>
  113. <view style="width:75%;">
  114. <input @click="oninputtap3()" v-model="erSelectlevelobj.name" type="text" disabled="true"
  115. :border="border" placeholder="请选择" />
  116. </view>
  117. <view>
  118. <image src="https://qufang.oss-cn-beijing.aliyuncs.com/upload/icon/xcx/jjycrm/qf/more.png"
  119. style="width:12rpx;height:23rpx;margin-left: 16rpx;">
  120. </view>
  121. <!-- <view style="display: flex;justify-content:center;padding-left: 30rpx;padding-right: 30rpx;margin-top: 16rpx;"
  122. v-if="erSelectlevelobj.name" @click="oninputtap3()">
  123. <view class="title2-che" style="width: 220rpx;">{{erSelectlevelobj.name}}
  124. <image class="righttochoose" src="../../../static/images/righttochoose.png" mode=""></image>
  125. </view>
  126. </view> -->
  127. </view>
  128. </view>
  129. <view style="display: flex;align-items: center;height: 80rpx;justify-content: center;"
  130. v-if="Selecttuandui&&Selecttuanduiobj.name" @click="oninputtap4()">
  131. <view class="title2-che u-flex" style="width: 220rpx;">{{Selecttuanduiobj.name}}
  132. <image class="righttochoose" src="../../../static/images/down.png" mode=""></image>
  133. </view>
  134. </view>
  135. <view class="single">
  136. <view class="danwei" style="margin: 20rpx 0" v-if="newactiveTotal==0||newactiveTotal==4">单位(%)</view>
  137. <view class="uchaserbox" v-if="lineOptsect.series.length!=0">
  138. <qiun-data-charts :style="!showCanvas?'display:none':''" :type="linetype" :opts="opts"
  139. :chartData="lineOptsect" background="none" :ontouch="true"
  140. canvasId="wangxiaohuaerlingeryilingwuyibao" :canvas2d="true" />
  141. </view>
  142. <view v-else style="width: 100%;">
  143. <view style="width: 100%;text-align: center;">
  144. <image style="width: 200rpx;height: 200rpx;"
  145. src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
  146. </view>
  147. <view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
  148. </view>
  149. </view>
  150. </view>
  151. <view class="single" v-if="timepickpickisshow">
  152. <view class="title">
  153. <view class="title1">对比报表</view>
  154. </view>
  155. <view class="table" v-if="!guwenFlag">
  156. <view v-for="(item,index) in tableDate" :key="index">
  157. <view class="tr">
  158. <view v-for="(item1,index1) in item" :key="index" style="width: 100%;">
  159. <view v-if="index1<item.length-1||index==0" class="td"
  160. style="border-right:1px solid #E0E0E0;">{{item1}}</view>
  161. <view v-if="index>0 && index1==item.length-1" class="td"
  162. style="border-right:1px solid #E0E0E0;" :style="{color:item1*1>0?'red':'green'}">
  163. {{item1==0?'--':item1+'%'}}{{item1*1>0?'↑':item1*1<0?'↓':''}}
  164. </view>
  165. </view>
  166. </view>
  167. </view>
  168. </view>
  169. <view class="table" v-if="guwenFlag" style="width: 100%;">
  170. <scroll-view scroll-x="true" style="white-space: nowrap;">
  171. <view v-for="(item,index) in tableDate" :key="index"
  172. :style="{display:index==0?'inline-block':'block'}">
  173. <view class="tr" style="display: inline-block;">
  174. <view v-for="(item1,index1) in item" :key="index1" class="trd"
  175. style="display: inline-block;">
  176. <view v-if="index==1&&index1>0" class="td" :style="{color:item1*1>0?'red':'green'}"
  177. style="border-right:1px solid #E0E0E0;">
  178. {{item1==0?'--':item1+'%'}}{{item1*1>0?'↑':item1*1<0?'↓':''}}
  179. </view>
  180. <view v-else-if="index>1&&index1>0" class="td" style="border-right:1px solid #E0E0E0;">
  181. {{item1+'%'}}
  182. </view>
  183. <view v-else class="td" style="border-right:1px solid #E0E0E0;">{{item1}}</view>
  184. </view>
  185. </view>
  186. </view>
  187. </scroll-view>
  188. </view>
  189. </view>
  190. <u-select v-model="Showhiddenunits" mode="single-column" :list="selectlist" @confirm="confirm"
  191. :default-value="selindexList">
  192. </u-select>
  193. <u-select v-model="Showhiddenunits2" mode="single-column" :list="selectlist2" @confirm="confirm2"
  194. :default-value="selindex">
  195. </u-select>
  196. <u-select v-model="Showhiddenunits3" mode="single-column" :list="selectlist3" @confirm="confirm3"
  197. :default-value="selindex">
  198. </u-select>
  199. <u-select v-model="Showhiddenunits4" mode="single-column" :list="selectlist4" @confirm="confirm4"
  200. :default-value="selindex">
  201. </u-select>
  202. <u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
  203. <newcalendar v-model="totalTimeShow2" :planNum='intervaltime' mode="date" @change="totalTimeChange2">
  204. </newcalendar>
  205. <u-select v-model="showMarketingBusiness" mode="single-column" :list="showMarketingList"
  206. label-name="templateName" value-name="id" @confirm="selectMarketingBusiness"></u-select>
  207. <!-- 加载组件 -->
  208. <u-loadings v-model="LOADING"></u-loadings>
  209. </view>
  210. </template>
  211. <script>
  212. import newcalendar from '@/components/newcalendar/newcalendar.vue';
  213. var config = require(".../../../config");
  214. export default {
  215. data() {
  216. return {
  217. selindexList: [0], // 默认选中第一项
  218. compareFlag: false,
  219. numlist: [{
  220. name: '平均执行率',
  221. num: '10',
  222. num1: '0',
  223. num2: '0'
  224. },
  225. {
  226. name: '平均接待时长',
  227. num: '10',
  228. num1: '0',
  229. num2: '0'
  230. },
  231. {
  232. name: '接待量',
  233. num: '10',
  234. num1: '0',
  235. num2: '0'
  236. },
  237. {
  238. name: '有效接待',
  239. num: '10',
  240. num1: '0',
  241. num2: '0'
  242. },
  243. ],
  244. activeTotal: 0, //时间下标
  245. newactiveTotal: 0, //tab下标
  246. totalTimeShow: false,
  247. totalTimeShow2: false,
  248. totalTimeShow3: false,
  249. cWidth: uni.upx2px(690),
  250. cHeight: uni.upx2px(453),
  251. AcHeight: uni.upx2px(500),
  252. kanbanlist: { //录音和测评的数据
  253. kaishitime: '',
  254. duibitime: '',
  255. audonum: '',
  256. audotime: "",
  257. avgDuration: '',
  258. fraction: ''
  259. },
  260. pamect: { //接口参数
  261. houseId: '',
  262. timeType: "4",
  263. firstStartDate: '', //第一次开始时间
  264. firstEndDate: '', //第一次结束时间
  265. lastStartDate: '',
  266. lastEndDate: '',
  267. accountId: '', //顾问ids
  268. marketingId: '', //二级销讲id
  269. deptId: "", //部门id
  270. showStatus: 0
  271. },
  272. linetype: "line",
  273. lineOptsect: {}, //图表数据
  274. Showhiddenunits: false,
  275. selectlist: [],
  276. guwenshow: false,
  277. lopanobj: {
  278. id: '',
  279. name: ''
  280. },
  281. //二级相关
  282. Selectlevel: false,
  283. Selectlevelobj: {
  284. id: '',
  285. name: ''
  286. },
  287. erSelectlevelobj: {
  288. id: '',
  289. name: ''
  290. },
  291. Showhiddenunits2: false,
  292. Showhiddenunits3: false,
  293. selectlist2: [],
  294. selectlist3: [],
  295. //团队相关
  296. Selecttuandui: false,
  297. selectlist4: [],
  298. Selecttuanduiobj: {
  299. id: '',
  300. name: ''
  301. },
  302. Showhiddenunits4: false,
  303. showCanvas: true,
  304. timepickpickisshow: false,
  305. sheartime1: "",
  306. sheartime2: "",
  307. intervaltime: 0,
  308. tableDate: [],
  309. guwenFlag: false,
  310. opts: {
  311. xAxis: {
  312. disableGrid: true,
  313. scrollShow: true,
  314. itemCount: 8
  315. },
  316. yAxis: {
  317. data: [{
  318. max: 100,
  319. min: 0,
  320. }]
  321. },
  322. fontSize: 10,
  323. extra: {
  324. radar: {
  325. max: 100
  326. }
  327. }
  328. },
  329. marketingBusinessText: '请选择销讲业务',
  330. showMarketingBusiness: false, // 展示可选择的销讲业务
  331. showMarketingList: [], // 销讲业务列表
  332. marketingBusiness: '', // 销讲业务
  333. };
  334. },
  335. components: {
  336. newcalendar
  337. },
  338. onLoad(options) {
  339. this.LOADING = true
  340. this.pamect.houseId = uni.getStorageSync('buildingID').id;
  341. this.init()
  342. this.getMarketingBusiness()
  343. },
  344. onPullDownRefresh() {
  345. this.init()
  346. setTimeout(function() {
  347. uni.stopPullDownRefresh();
  348. }, 1000);
  349. },
  350. watch: {
  351. Showhiddenunits(newValue, oldValue) {
  352. this.showCanvas = !newValue
  353. },
  354. Showhiddenunits2(newValue, oldValue) {
  355. this.showCanvas = !newValue
  356. },
  357. Showhiddenunits3(newValue, oldValue) {
  358. this.showCanvas = !newValue
  359. },
  360. Showhiddenunits4(newValue, oldValue) {
  361. this.showCanvas = !newValue
  362. },
  363. totalTimeShow(newValue, oldValue) {
  364. this.showCanvas = !newValue
  365. },
  366. totalTimeShow2(newValue, oldValue) {
  367. this.showCanvas = !newValue
  368. },
  369. totalTimeShow3(newValue, oldValue) {
  370. this.showCanvas = !newValue
  371. },
  372. },
  373. methods: {
  374. // 获取销讲业务模板
  375. getMarketingBusiness() {
  376. this.$u.get("/customer/marketingBusiness", {
  377. houseId: this.pamect.houseId
  378. }).then(res => {
  379. console.log(res)
  380. if (res) {
  381. this.showMarketingList = res
  382. this.showMarketingList.unshift({
  383. templateName: '全部',
  384. id: ''
  385. })
  386. }
  387. })
  388. },
  389. // 选择趋势分析
  390. selectMarketingBusiness(e) {
  391. this.marketingBusinessText = e[0].label
  392. this.marketingBusiness = e[0].value
  393. this.init()
  394. },
  395. //是否对比
  396. checkboxChange() {
  397. if (this.newactiveTotal == 3) {
  398. uni.showToast({
  399. title: '销讲一级无对比',
  400. duration: 2000
  401. });
  402. return
  403. }
  404. if (this.newactiveTotal == 2) {
  405. if (this.Selecttuanduiobj.id == '') {
  406. uni.showToast({
  407. title: '全部团队无对比',
  408. duration: 2000
  409. });
  410. return
  411. }
  412. }
  413. if (this.timepickpickisshow == true) {
  414. this.timepickpickisshow = false;
  415. this.pamect.showStatus = 0;
  416. this.init()
  417. } else {
  418. this.timepickpickisshow = true;
  419. this.pamect.showStatus = 1;
  420. }
  421. this.activeTotal = 8;
  422. },
  423. init() {
  424. this.pamect.marketingBusiness = this.marketingBusiness
  425. this.$u.post("/cusLvStatistics/lyAndcp", this.pamect).then(data => {
  426. this.pamect.lastStartDate = data.lastStartDate;
  427. this.pamect.lastEndDate = data.lastEndDate;
  428. this.numlist[3].num = data.startSumCustomer
  429. this.numlist[0].num = data.startFraction;
  430. this.numlist[1].num = data.startSumDuration || 0;
  431. this.numlist[2].num = data.startReceptionCount || 0
  432. // startReceptionCount开始接待量
  433. // endReceptionCount结束接待量
  434. // contrastReceptionCount接待量对比
  435. if (data.endSumDuration != null) {
  436. this.compareFlag = true
  437. // return
  438. this.numlist[3].num1 = data.endSumCustomer
  439. this.numlist[0].num1 = data.endFraction;
  440. this.numlist[1].num1 = data.endSumDuration || 0;
  441. this.numlist[2].num1 = data.endReceptionCount || 0
  442. this.numlist[3].num2 = data.contrastSumCustomer
  443. this.numlist[0].num2 = data.contrastFraction;
  444. this.numlist[1].num2 = data.contrastSumDuration || 0;
  445. this.numlist[2].num = data.startReceptionCount || 0
  446. this.numlist[2].num2 = data.contrastReceptionCount || 0
  447. } else {
  448. this.compareFlag = false
  449. }
  450. this.sheartime1 = data.lastStartDate.substring(5, 10) + "--" + data.lastEndDate.substring(5,
  451. 10);
  452. this.sheartime2 = '请选择';
  453. this.kanbanlist.duibitime = '';
  454. var kaishi = this.DateDiff(data.lastStartDate, data.lastEndDate);
  455. this.kanbanlist.kaishitime = data.lastStartDate + "至" + data.lastEndDate + "(" + kaishi + "天)";
  456. if (this.pamect.showStatus == 1) {
  457. this.sheartime2 = data.firstStartDate.substring(5, 10) + "--" + data.firstEndDate
  458. .substring(5, 10);
  459. var jeishu = this.DateDiff(data.firstStartDate, data.firstEndDate);
  460. this.kanbanlist.duibitime = data.firstStartDate + "至" + data.firstEndDate + "(" + jeishu +
  461. "天)";
  462. }
  463. this.kanbanlist.audonum = data.sumCustomer;
  464. this.kanbanlist.audotime = data.avgDuration;
  465. this.kanbanlist.avgDuration = data.fraction;
  466. this.kanbanlist.fraction = data.fraction;
  467. if (this.newactiveTotal == 0) {
  468. this.ProjectDimension()
  469. } else if (this.newactiveTotal == 1) {
  470. if (this.pamect.accountId == "") {
  471. this.getguwenlist()
  472. } else {
  473. this.ConsultantDimension()
  474. }
  475. } else if (this.newactiveTotal == 2) {
  476. if (this.pamect.deptId == "") {
  477. this.getuanduilist()
  478. } else {
  479. this.TeamCompared()
  480. }
  481. } else if (this.newactiveTotal == 3) {
  482. this.speakingLevel()
  483. } else {
  484. if (this.pamect.marketingId == '') {
  485. this.getonsyiji()
  486. } else {
  487. this.aboutEecondary()
  488. }
  489. }
  490. setTimeout(() => {
  491. this.LOADING = false
  492. }, 1500)
  493. });
  494. },
  495. //起始时间
  496. totalTimeChange(e) {
  497. this.pamect.lastStartDate = e.startDate;
  498. this.pamect.lastEndDate = e.endDate;
  499. var kaishi = this.DateDiff(this.pamect.lastStartDate, this.pamect.lastEndDate)
  500. this.kanbanlist.kaishitime = this.pamect.lastStartDate + "至" + this.pamect.lastEndDate + "(" + kaishi +
  501. "天)";
  502. if (this.pamect.showStatus == 0) {
  503. this.init()
  504. this.totalTimeShow = false;
  505. } else {
  506. if (this.pamect.firstStartDate.length == 0) {
  507. uni.showToast({
  508. title: '请选择对比时间',
  509. duration: 2000
  510. });
  511. } else {
  512. var jshu = this.DateDiff(this.pamect.firstStartDate, this.pamect.firstEndDate)
  513. if (kaishi == jshu) {
  514. this.init()
  515. } else {
  516. uni.showToast({
  517. title: '请选择相同天数',
  518. duration: 2000
  519. });
  520. }
  521. }
  522. this.totalTimeShow = false;
  523. }
  524. },
  525. //对比时间
  526. totalTimeChange2(e) {
  527. var d = new Date(e.result.replace(/\-/g, '/'));
  528. d.setDate(d.getDate() + this.intervaltime);
  529. var year = d.getFullYear();
  530. var month = d.getMonth() + 1;
  531. if (month < 10) month = '0' + month;
  532. var day = d.getDate();
  533. if (day < 10) day = '0' + day;
  534. this.pamect.firstStartDate = e.result;
  535. this.pamect.firstEndDate = year + '-' + month + '-' + day;
  536. console.log(this.pamect.firstStartDate)
  537. var kaishi = this.DateDiff(this.pamect.lastStartDate, this.pamect.lastEndDate)
  538. var jeishu = this.DateDiff(this.pamect.firstStartDate, this.pamect.firstEndDate)
  539. this.kanbanlist.duibitime = this.pamect.firstStartDate + "至" + this.pamect.firstEndDate + "(" + jeishu +
  540. "天)";
  541. console.log(this.pamect.lastStartDate, this.pamect.lastEndDate, kaishi, jeishu)
  542. if (kaishi == jeishu) {
  543. this.init()
  544. } else {
  545. uni.showToast({
  546. title: '请选择相同天数',
  547. duration: 2000
  548. });
  549. }
  550. this.totalTimeShow2 = false;
  551. },
  552. //自定义时间
  553. totalTimeChange3(e) {
  554. this.pamect.firstStartDate = "";
  555. this.pamect.firstEndDate = "";
  556. this.pamect.lastStartDate = e.startDate;
  557. this.pamect.lastEndDate = e.endDate;
  558. this.init()
  559. this.totalTimeShow3 = false;
  560. },
  561. //时间切换
  562. tabtimetap(index) {
  563. if (index == 0) {
  564. this.pamect.timeType = "4";
  565. this.pamect.firstStartDate = '';
  566. this.pamect.firstEndDate = '';
  567. this.pamect.lastStartDate = '';
  568. this.pamect.lastEndDate = '';
  569. this.init()
  570. } else if (index == 1) {
  571. this.pamect.timeType = "5";
  572. this.pamect.firstStartDate = '';
  573. this.pamect.firstEndDate = '';
  574. this.pamect.lastStartDate = '';
  575. this.pamect.lastEndDate = '';
  576. this.init()
  577. } else if (index == 2) {
  578. this.pamect.timeType = "6";
  579. this.pamect.firstStartDate = '';
  580. this.pamect.firstEndDate = '';
  581. this.pamect.lastStartDate = '';
  582. this.pamect.lastEndDate = '';
  583. this.init()
  584. } else if (index == 3) {
  585. this.pamect.timeType = "";
  586. this.totalTimeShow = true;
  587. } else if (index == 4) {
  588. this.pamect.timeType = "";
  589. var kaishi = this.DateDiff(this.pamect.lastStartDate, this.pamect.lastEndDate)
  590. console.log(kaishi)
  591. this.intervaltime = kaishi - 1;
  592. this.totalTimeShow2 = true;
  593. } else {
  594. this.pamect.timeType = "";
  595. this.totalTimeShow3 = true;
  596. }
  597. this.activeTotal = index;
  598. },
  599. //tab切换
  600. tabxuanxiangtap(index) {
  601. if (index == 1 || index == 3 || index == 4) {
  602. if (this.showMarketingList.findIndex(item => item.id == '') != -1) {
  603. this.showMarketingList.shift()
  604. }
  605. this.marketingBusinessText = this.showMarketingList[0].templateName
  606. this.marketingBusiness = this.showMarketingList[0].id
  607. } else {
  608. this.showMarketingList.unshift({
  609. templateName: '全部',
  610. id: ''
  611. })
  612. this.marketingBusiness = ''
  613. this.marketingBusinessText = '请选择销讲业务'
  614. }
  615. this.newactiveTotal = index;
  616. this.guwenshow = false;
  617. this.Selectlevel = false;
  618. this.Selecttuandui = false;
  619. this.tableDate = []
  620. // this.pamect.showStatus = 0;
  621. // this.pamect.timeType = "4";
  622. // this.pamect.firstStartDate = '';
  623. // this.pamect.firstEndDate = '';
  624. // this.pamect.lastStartDate = '';
  625. // this.pamect.lastEndDate = '';
  626. // this.pamect.accountId = '';
  627. // this.pamect.marketingId = '';
  628. // this.pamect.deptId = ""
  629. // this.activeTotal = 0;
  630. this.timepickpickisshow = false;
  631. this.init()
  632. if (index == 1) {
  633. this.guwenshow = true;
  634. }
  635. },
  636. //项目维度
  637. ProjectDimension() {
  638. const that = this;
  639. that.lineOptsect = {
  640. categories: [],
  641. series: []
  642. };
  643. this.linetype = "line";
  644. this.$u.post("/cusLvStatistics/teamOrOneValueShow", this.pamect).then(data => {
  645. if (this.pamect.showStatus == 0) {
  646. that.lineOptsect = {
  647. categories: [],
  648. series: [{
  649. name: '起始时间',
  650. data: [],
  651. color: '#7ED3F4'
  652. }]
  653. }
  654. data.startList.forEach((child, zxc) => {
  655. that.lineOptsect.categories.push(child.statDate.substring(5, 10))
  656. })
  657. that.lineOptsect.series[0].data = data.startList.map(item => item.fraction);
  658. console.log(that.lineOptsect.series, 'asdasdsadsadass00000000000000')
  659. } else {
  660. that.lineOptsect = {
  661. categories: [],
  662. series: [{
  663. name: '起始时间',
  664. data: [],
  665. color: '#7ED3F4'
  666. },
  667. {
  668. name: '对比时间',
  669. data: [],
  670. color: '#FF7070'
  671. },
  672. ]
  673. }
  674. data.startList.forEach((item, sdf) => {
  675. data.endList.forEach((child, zxc) => {
  676. if (sdf == zxc) {
  677. that.lineOptsect.categories.push(
  678. child.statDate.substring(5, 10) + 'vs' + item
  679. .statDate
  680. .substring(5, 10)
  681. )
  682. }
  683. })
  684. })
  685. that.lineOptsect.series[1].data = data.startList.map(item => item.fraction);
  686. that.lineOptsect.series[0].data = data.endList.map(item => item.fraction)
  687. that.guwenFlag = false
  688. // // 处理表格数据
  689. let arr = [
  690. ['时间', '时段一', '时段二', '变化']
  691. // {
  692. // time:'时间',
  693. // time1:'时段一',
  694. // time2:'时段二',
  695. // compare:'变化'
  696. // },
  697. ]
  698. that.lineOptsect.categories.map((item, index) => {
  699. let newarr = [item, data.endList[index].fraction, data.startList[index]
  700. .fraction, data.comparedList[index].fraction
  701. ]
  702. // obj.time=item
  703. // obj.time1=data.firstValue[index].fraction
  704. // obj.time2=data.lastValue[index].fraction
  705. // obj.compare=data.contrast[index].data
  706. // arr.push(obj)
  707. arr.push(newarr)
  708. })
  709. // console.log(arr)
  710. that.tableDate = arr
  711. console.log(that.lineOptsect.series, 'asdasdsadsadass00000000000000else')
  712. }
  713. });
  714. },
  715. //顾问维度
  716. ConsultantDimension() {
  717. const that = this;
  718. that.lineOptsect = {
  719. categories: [],
  720. series: []
  721. };
  722. this.linetype = "radar";
  723. this.$u.post("/cusLvStatistics/accFirstLevelContrast", this.pamect).then(data => {
  724. // return
  725. if (this.pamect.showStatus == 0) {
  726. that.lineOptsect = {
  727. categories: [],
  728. series: [{
  729. name: '时段一',
  730. data: [],
  731. color: '#7ED3F4'
  732. }]
  733. }
  734. data.firstList.forEach((item, sdf) => {
  735. that.lineOptsect.categories.push(item.name)
  736. that.lineOptsect.series[0].data.push(data.firstList[sdf].total)
  737. })
  738. // that.lineOptsect.series[0].data = data.lastValue.map(item => item.fraction);
  739. } else {
  740. // 当有对比的时候
  741. that.lineOptsect = {
  742. categories: [],
  743. series: [{
  744. name: '时段一',
  745. data: [],
  746. color: '#7ED3F4'
  747. },
  748. {
  749. name: '时段二',
  750. data: [],
  751. color: '#FF7070'
  752. },
  753. ]
  754. }
  755. data.headerList.forEach((item, sdf) => {
  756. that.lineOptsect.categories.push(item.name)
  757. that.lineOptsect.series[0].data.push(data.firstList[sdf].total)
  758. that.lineOptsect.series[1].data.push(data.secondList[sdf].total)
  759. })
  760. // return
  761. // // 处理表格数据
  762. that.guwenFlag = true
  763. let arr = []
  764. arr[0] = ['时间', ...that.lineOptsect.categories]
  765. arr[1] = ['变化']
  766. arr[2] = ['时段一']
  767. arr[3] = ['时段二']
  768. // console.log(arr)
  769. data.firstList.map((item, index) => {
  770. arr[2].push(item.total)
  771. arr[3].push(data.secondList[index].total)
  772. arr[1].push(data.thirdList[index].total)
  773. })
  774. that.tableDate = arr
  775. }
  776. });
  777. },
  778. // 顾问纬度选择顾问
  779. oninputtap() {
  780. this.Showhiddenunits = true;
  781. },
  782. // 顾问选择确认
  783. confirm(e) {
  784. this.lopanobj.id = e[0].value;
  785. this.lopanobj.name = e[0].label;
  786. this.pamect.accountId = this.lopanobj.id;
  787. this.ConsultantDimension()
  788. this.Showhiddenunits = false;
  789. for (let i = 0; i < this.selectlist.length; i++) {
  790. if (e[0].value == this.selectlist[i].value) {
  791. this.selindexList[0] = i
  792. }
  793. }
  794. },
  795. //获取顾问
  796. getguwenlist() {
  797. this.$u.post("/cusLvStatistics/selectAllAccountIdByHouseId", {
  798. houseId: this.pamect.houseId
  799. }).then(data => {
  800. this.selectlist = [];
  801. if (data.length == 0) {
  802. this.lineOptsect = {
  803. categories: [],
  804. series: []
  805. };
  806. this.guwenshow = false;
  807. return
  808. } else {
  809. this.guwenshow = true;
  810. data.forEach(item => {
  811. this.selectlist.push({
  812. value: item.accountId,
  813. label: item.name
  814. })
  815. })
  816. this.lopanobj.id = data[0].accountId;
  817. this.lopanobj.name = data[0].name;
  818. this.pamect.accountId = this.lopanobj.id;
  819. this.ConsultantDimension()
  820. }
  821. })
  822. },
  823. //销讲一级
  824. speakingLevel() {
  825. this.linetype = "radar";
  826. this.lineOptsect = {
  827. categories: [],
  828. series: []
  829. };
  830. this.$u.post("/cusLvStatistics/firstLevelContrast", this.pamect).then(data => {
  831. if (data.length == 0) {
  832. return
  833. } else {
  834. let list = data.map(item => {
  835. return item.name
  836. });
  837. let list1 = data.map(item => {
  838. if (item.avgExecutionRate == null) {
  839. item.avgExecutionRate = 0
  840. } else {
  841. item.avgExecutionRate = item.avgExecutionRate
  842. }
  843. return item.avgExecutionRate
  844. });
  845. this.lineOptsect = {
  846. "categories": list,
  847. "series": [{
  848. "name": "销讲一级",
  849. "data": list1
  850. }]
  851. }
  852. }
  853. })
  854. },
  855. //销讲二级
  856. aboutEecondary() {
  857. this.lineOptsect = {};
  858. this.linetype = "line";
  859. this.$u.post("/cusLvStatistics/level2Contrast", this.pamect).then(data => {
  860. if (this.pamect.showStatus == 0) {
  861. this.lineOptsect = {
  862. categories: [],
  863. series: [{
  864. name: '起始时间',
  865. data: [],
  866. color: '#7ED3F4'
  867. }]
  868. }
  869. data.lastList.forEach((item, sdf) => {
  870. this.lineOptsect.categories.push(item.statDate.substring(5, 10))
  871. })
  872. this.lineOptsect.series[0].data = data.lastList.map(item => item.avgExecutionRate);
  873. } else {
  874. this.lineOptsect = {
  875. categories: [],
  876. series: [{
  877. name: '起始时间',
  878. data: [],
  879. color: '#7ED3F4'
  880. },
  881. {
  882. name: '对比时间',
  883. data: [],
  884. color: '#FF7070'
  885. },
  886. ]
  887. }
  888. data.firstList.forEach((item, sdf) => {
  889. data.lastList.forEach((child, zxc) => {
  890. if (sdf == zxc) {
  891. this.lineOptsect.categories.push(
  892. child.statDate.substring(5, 10) + 'vs' + item.statDate
  893. .substring(5, 10)
  894. )
  895. }
  896. })
  897. })
  898. this.lineOptsect.series[1].data = data.firstList.map(item => item.avgExecutionRate);
  899. this.lineOptsect.series[0].data = data.lastList.map(item => item.avgExecutionRate)
  900. let that = this
  901. this.guwenFlag = false
  902. // // 处理表格数据
  903. let arr = [
  904. ['时间', '时段一', '时段二', '变化']
  905. ]
  906. that.lineOptsect.categories.map((item, index) => {
  907. let newarr = [item, data.lastList[
  908. index].avgExecutionRate, data.firstList[index].avgExecutionRate,
  909. data.contrast[index].data
  910. ]
  911. arr.push(newarr)
  912. })
  913. // console.log(arr)
  914. that.tableDate = arr
  915. }
  916. })
  917. },
  918. //销讲二级:获取一级
  919. getonsyiji() {
  920. this.$u.post("/cusLvStatistics/findAllFirstLevel", {
  921. houseId: this.pamect.houseId
  922. }).then(data => {
  923. this.selectlist2 = [];
  924. if (data.length == 0) {
  925. this.Selectlevel = false;
  926. this.lineOptsect = {
  927. categories: [],
  928. series: []
  929. };
  930. return
  931. } else {
  932. this.Selectlevel = true;
  933. data.forEach(item => {
  934. this.selectlist2.push({
  935. value: item.marketingId,
  936. label: item.name
  937. })
  938. })
  939. this.Selectlevelobj.id = data[0].marketingId;
  940. this.Selectlevelobj.name = data[0].name;
  941. this.getonserji(this.Selectlevelobj.id)
  942. }
  943. })
  944. },
  945. //销讲二级:通过一级获取二级
  946. getonserji(ccd) {
  947. this.$u.post("/cusLvStatistics/findLevel2ByFirstLevel", {
  948. houseId: this.pamect.houseId,
  949. marketingId: ccd
  950. }).then(data => {
  951. this.selectlist3 = [];
  952. data.forEach(item => {
  953. this.selectlist3.push({
  954. value: item.marketingId,
  955. label: item.name
  956. })
  957. })
  958. this.erSelectlevelobj.id = data[0].marketingId;
  959. this.erSelectlevelobj.name = data[0].name;
  960. this.pamect.marketingId = this.erSelectlevelobj.id;
  961. this.aboutEecondary()
  962. })
  963. },
  964. //销讲二级:一级选择
  965. oninputtap2() {
  966. this.Showhiddenunits2 = true;
  967. },
  968. //销讲二级:二级选择
  969. oninputtap3() {
  970. if (this.Selectlevelobj.id == "") {
  971. uni.showToast({
  972. title: '请先选择一级',
  973. duration: 2000
  974. });
  975. } else {
  976. this.Showhiddenunits3 = true;
  977. }
  978. },
  979. //销讲二级:一级选择确认
  980. confirm2(e) {
  981. this.Selectlevelobj.id = e[0].value;
  982. this.Selectlevelobj.name = e[0].label;
  983. this.getonserji(this.Selectlevelobj.id)
  984. },
  985. //销讲二级:二级选择确认
  986. confirm3(e) {
  987. this.erSelectlevelobj.id = e[0].value;
  988. this.erSelectlevelobj.name = e[0].label;
  989. this.pamect.marketingId = this.erSelectlevelobj.id;
  990. this.aboutEecondary()
  991. },
  992. //团队请选择
  993. oninputtap4() {
  994. this.Showhiddenunits4 = true;
  995. },
  996. //团队选择确认
  997. confirm4(e) {
  998. this.Selecttuanduiobj.id = e[0].value;
  999. this.Selecttuanduiobj.name = e[0].label;
  1000. this.pamect.deptId = this.Selecttuanduiobj.id;
  1001. this.pamect.showStatus = 0;
  1002. this.pamect.timeType = "4";
  1003. this.pamect.firstStartDate = '';
  1004. this.pamect.firstEndDate = '';
  1005. this.pamect.lastStartDate = '';
  1006. this.pamect.lastEndDate = '';
  1007. this.activeTotal = 0;
  1008. this.timepickpickisshow = false;
  1009. this.init()
  1010. this.TeamCompared()
  1011. },
  1012. //获取团队列表
  1013. getuanduilist() {
  1014. uni.request({
  1015. url: config.service.findListByUser + "?houseId=" + this.pamect.houseId,
  1016. method: "GET",
  1017. header: {
  1018. 'content-type': 'application/json',
  1019. 'Authorization': 'Bearer ' + uni.getStorageSync('weapp_session_login_data').token
  1020. },
  1021. success: (data) => {
  1022. if (data.data.data.length == 0) {
  1023. this.Selecttuandui = false;
  1024. this.lineOptsect = {
  1025. categories: [],
  1026. series: []
  1027. };
  1028. return
  1029. } else {
  1030. this.Selecttuandui = true;
  1031. data.data.data.forEach(item => {
  1032. this.selectlist4.push({
  1033. value: item.deptId,
  1034. label: item.name
  1035. })
  1036. })
  1037. this.Selecttuanduiobj.id = this.selectlist4[0].value;
  1038. this.Selecttuanduiobj.name = this.selectlist4[0].label;
  1039. this.pamect.deptId = this.Selecttuanduiobj.id;
  1040. this.TeamCompared()
  1041. }
  1042. }
  1043. })
  1044. // this.$u.post("/cusLvStatistics/findAllDeptIdByHouseId ", {
  1045. // houseId: this.pamect.houseId
  1046. // }).then(data => {
  1047. // this.selectlist4 = [{
  1048. // value: "",
  1049. // label: "全部"
  1050. // }];
  1051. // if (data.length == 0) {
  1052. // this.Selecttuandui = false;
  1053. // this.lineOptsect = {
  1054. // categories: [],
  1055. // series: []
  1056. // };
  1057. // return
  1058. // } else {
  1059. // this.Selecttuandui = true;
  1060. // data.forEach(item => {
  1061. // this.selectlist4.push({
  1062. // value: item.deptId,
  1063. // label: item.deptName
  1064. // })
  1065. // })
  1066. // this.Selecttuanduiobj.id = "";
  1067. // this.Selecttuanduiobj.name = "全部";
  1068. // this.pamect.deptId = this.Selecttuanduiobj.id;
  1069. // this.TeamCompared()
  1070. // }
  1071. // })
  1072. },
  1073. //团队对比
  1074. TeamCompared() {
  1075. const that = this;
  1076. that.lineOptsect = {};
  1077. this.linetype = "line";
  1078. this.$u.post("/cusLvStatistics/teamOrOneValueShowByDept", this.pamect).then(data => {
  1079. if (this.Selecttuanduiobj.id == "") {
  1080. var newlist = [];
  1081. for (var i in data) {
  1082. var ect = data[i].receptionStatList.map(item => {
  1083. if (item.fraction == null) {
  1084. item.fraction = 0
  1085. } else {
  1086. item.fraction = item.fraction
  1087. }
  1088. return item.fraction
  1089. });
  1090. newlist.push({
  1091. name: data[i].deptName,
  1092. data: ect
  1093. })
  1094. }
  1095. var timelist = [];
  1096. for (var i in data) {
  1097. var ect = data[i].receptionStatList.map(item => {
  1098. return item.statDate
  1099. });
  1100. timelist.push({
  1101. name: data[i].deptName,
  1102. data: ect
  1103. })
  1104. }
  1105. var xAxisdata = [];
  1106. timelist[0].data.forEach((item, sdf) => {
  1107. xAxisdata.push(item.substring(5, 10))
  1108. })
  1109. that.lineOptsect = {
  1110. categories: xAxisdata,
  1111. series: newlist
  1112. }
  1113. } else {
  1114. if (this.pamect.showStatus == 0) {
  1115. that.lineOptsect = {
  1116. categories: [],
  1117. series: [{
  1118. name: '起始时间',
  1119. data: [],
  1120. color: '#7ED3F4'
  1121. }]
  1122. }
  1123. data.lastValue.receptionStatList.forEach((item, sdf) => {
  1124. that.lineOptsect.categories.push(item.statDate.substring(5, 10))
  1125. })
  1126. that.lineOptsect.series[0].data = data.lastValue.receptionStatList.map(item => item
  1127. .fraction);
  1128. } else {
  1129. that.lineOptsect = {
  1130. categories: [],
  1131. series: [{
  1132. name: '起始时间',
  1133. data: [],
  1134. color: '#7ED3F4'
  1135. },
  1136. {
  1137. name: '对比时间',
  1138. data: [],
  1139. color: '#FF7070'
  1140. },
  1141. ]
  1142. }
  1143. data.firstValue.receptionStatList.forEach((item, sdf) => {
  1144. data.lastValue.receptionStatList.forEach((child, zxc) => {
  1145. if (sdf == zxc) {
  1146. that.lineOptsect.categories.push(
  1147. child.statDate.substring(5, 10) + 'vs' + item
  1148. .statDate.substring(5, 10)
  1149. )
  1150. }
  1151. })
  1152. })
  1153. that.lineOptsect.series[1].data = data.firstValue.receptionStatList.map(item => item
  1154. .fraction);
  1155. that.lineOptsect.series[0].data = data.lastValue.receptionStatList.map(item => item
  1156. .fraction)
  1157. that.guwenFlag = false
  1158. // 团队处理数据
  1159. // // 处理表格数据
  1160. let arr = [
  1161. ['时间', '时段一', '时段二', '变化']
  1162. ]
  1163. that.lineOptsect.categories.map((item, index) => {
  1164. let newarr = [item, data
  1165. .lastValue.receptionStatList[index].fraction, data.firstValue
  1166. .receptionStatList[index].fraction, data.contrast
  1167. .receptionStatList[index].data
  1168. ]
  1169. arr.push(newarr)
  1170. })
  1171. that.tableDate = arr
  1172. }
  1173. }
  1174. });
  1175. },
  1176. //算相隔天数
  1177. DateDiff(sDate1, sDate2) {
  1178. var aDate, oDate1, oDate2, iDays;
  1179. aDate = sDate1.split("-");
  1180. oDate1 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0]); //转换为yyyy-MM-dd格式
  1181. aDate = sDate2.split("-");
  1182. oDate2 = new Date(aDate[1] + '/' + aDate[2] + '/' + aDate[0]);
  1183. iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 / 24); //把相差的毫秒数转换为天数
  1184. return iDays + 1; //返回相差天数
  1185. },
  1186. },
  1187. }
  1188. </script>
  1189. <style lang="scss" scoped>
  1190. .boxtittab .tabbox {
  1191. flex: none;
  1192. padding: 0 35rpx;
  1193. }
  1194. .uchaserbox {
  1195. height: 500rpx;
  1196. }
  1197. .title2-che {
  1198. width: 178rpx;
  1199. height: 80rpx;
  1200. background: #FFFFFF;
  1201. border-radius: 6rpx;
  1202. line-height: 80rpx;
  1203. font-size: 28rpx;
  1204. font-weight: 400;
  1205. color: #666666;
  1206. text-indent: 12rpx;
  1207. margin-left: 35rpx;
  1208. margin-top: 20rpx;
  1209. .righttochoose {
  1210. width: 28rpx;
  1211. height: 14rpx;
  1212. margin-left: 12rpx;
  1213. }
  1214. }
  1215. .table {
  1216. border: 0px solid darkgray;
  1217. .tr {
  1218. display: flex;
  1219. // width: 100%;
  1220. justify-content: center;
  1221. height: 64rpx;
  1222. align-items: center;
  1223. border-bottom: 1px solid #E0E0E0;
  1224. flex-wrap: nowrap;
  1225. .td {
  1226. text-align: center;
  1227. font-size: 24rpx;
  1228. font-weight: 400;
  1229. color: #333333;
  1230. height: 64rpx;
  1231. line-height: 64rpx;
  1232. // flex-shrink: 0;
  1233. }
  1234. .trd {
  1235. flex-shrink: 0;
  1236. min-width: 300rpx;
  1237. // border-bottom: 1px solid #ccc;
  1238. }
  1239. .th {
  1240. height: 64rpx;
  1241. text-align: center;
  1242. font-size: 28rpx;
  1243. font-weight: 400;
  1244. color: #666666;
  1245. line-height: 64rpx;
  1246. }
  1247. }
  1248. }
  1249. .activecllasscet2 {
  1250. color: #2671E2;
  1251. font-weight: 600;
  1252. border-bottom: 4rpx solid #2671E2;
  1253. }
  1254. .timeduibi {
  1255. width: 100%;
  1256. background: #FFFFFF;
  1257. padding-bottom: 10rpx;
  1258. .timeshow {
  1259. color: #666666;
  1260. width: 100%;
  1261. height: 50rpx;
  1262. font-size: 28rpx;
  1263. line-height: 50rpx;
  1264. text-indent: 30rpx;
  1265. }
  1266. }
  1267. // 顶部时间切换
  1268. .timetabct {
  1269. position: sticky;
  1270. top: var(--window-top);
  1271. z-index: 999;
  1272. background: #fff;
  1273. width: 100%;
  1274. height: 98rpx;
  1275. display: flex;
  1276. align-items: center;
  1277. border-bottom: 1rpx solid #E0E0E0;
  1278. color: #666;
  1279. }
  1280. .timetabctview {
  1281. flex: 1;
  1282. text-align: center;
  1283. line-height: 98rpx;
  1284. font-size: 28rpx;
  1285. font-family: PingFangSC-Regular, PingFang SC;
  1286. font-weight: 400;
  1287. height: 100%;
  1288. display: flex;
  1289. justify-content: center;
  1290. }
  1291. .timetabctview view {
  1292. width: 100rpx;
  1293. }
  1294. .activecllasscet {
  1295. color: #2671E2;
  1296. font-weight: 600;
  1297. border-bottom: 4rpx solid #2671E2;
  1298. }
  1299. // 对比时间切换
  1300. .timepick {
  1301. width: 100%;
  1302. height: 90rpx;
  1303. display: flex;
  1304. align-items: center;
  1305. background: #FFFFFF;
  1306. }
  1307. .timepicktime {
  1308. width: 260rpx;
  1309. height: 50rpx;
  1310. line-height: 50rpx;
  1311. margin-left: 30rpx;
  1312. display: flex;
  1313. background: #FFFFFF;
  1314. }
  1315. .timepickpick {
  1316. width: 110rpx;
  1317. height: 50rpx;
  1318. margin-left: 30rpx;
  1319. display: flex;
  1320. align-items: center;
  1321. }
  1322. .Underimg {
  1323. width: 28rpx;
  1324. height: 14rpx;
  1325. margin-left: 12rpx;
  1326. }
  1327. .timeButton {
  1328. width: 100%;
  1329. height: 60rpx;
  1330. display: flex;
  1331. color: #b1b1b1;
  1332. font-size: 28rpx;
  1333. .item {
  1334. text-align: center;
  1335. line-height: 60rpx;
  1336. padding-left: 12rpx;
  1337. padding-right: 12rpx;
  1338. border-radius: 8rpx;
  1339. border: 1px solid #E0E0E0;
  1340. margin-right: 20rpx;
  1341. &.active {
  1342. color: #FFFFFF;
  1343. background-color: #2671E2;
  1344. }
  1345. }
  1346. }
  1347. .boardbox {
  1348. width: 100%;
  1349. height: 172rpx;
  1350. display: flex;
  1351. align-items: center;
  1352. background: #F4F8FD;
  1353. border-radius: 8rpx;
  1354. margin-top: 28rpx;
  1355. .boardbox-zuo {
  1356. width: 50%;
  1357. height: 120rpx;
  1358. border-right: 1px solid #E0E0E0;
  1359. }
  1360. .boardbox-you {
  1361. width: 50%;
  1362. height: 120rpx;
  1363. }
  1364. .boardbox-text1 {
  1365. width: 100%;
  1366. text-align: center;
  1367. font-size: 28rpx;
  1368. color: #333333;
  1369. }
  1370. .boardbox-text2 {
  1371. width: 100%;
  1372. text-align: center;
  1373. font-size: 26rpx;
  1374. color: #333333;
  1375. margin-top: 10rpx;
  1376. }
  1377. }
  1378. .comparesize {
  1379. font-size: 26rpx;
  1380. color: #333;
  1381. margin: 30rpx 30rpx 0 30rpx;
  1382. display: flex;
  1383. align-items: center;
  1384. }
  1385. .grid:nth-child(1) {
  1386. border-right: 1rpx solid #E0E0E0;
  1387. border-bottom: 1rpx solid #E0E0E0;
  1388. }
  1389. .grid:nth-child(2) {
  1390. border-bottom: 1rpx solid #E0E0E0;
  1391. }
  1392. .grid:nth-child(3) {
  1393. border-right: 1rpx solid #E0E0E0;
  1394. }
  1395. .chart {
  1396. padding: 40rpx 0 20rpx;
  1397. min-height: 50vh;
  1398. .marketingBusiness {
  1399. display: flex;
  1400. justify-content: center;
  1401. align-items: center;
  1402. .marketingBusinesstext {
  1403. padding: 0 20rpx;
  1404. display: flex;
  1405. align-items: center;
  1406. border-radius: 8rpx;
  1407. border: 1rpx solid #666666;
  1408. overflow: hidden;
  1409. white-space: nowrap;
  1410. text-overflow: ellipsis;
  1411. .righttochoose {
  1412. margin-left: 12rpx;
  1413. width: 18rpx;
  1414. height: 24rpx;
  1415. }
  1416. }
  1417. }
  1418. }
  1419. .screen {
  1420. width: 100%;
  1421. .boxtittab {
  1422. width: 100%;
  1423. flex-direction: column;
  1424. border: none;
  1425. .tabbox {
  1426. width: 100%;
  1427. }
  1428. }
  1429. }
  1430. </style>