AI销管
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

index.vue 21 KiB

2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
1 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
2 yıl önce
1 yıl önce
1 yıl önce
1 yıl önce
1 yıl önce
1 yıl önce
1 yıl önce
2 yıl önce
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855
  1. <template>
  2. <view class="box">
  3. <view class="boxtittabs">
  4. <view class="items" @tap="screenShow = true">{{ showTimeText }}
  5. <u-icon name="arrow-down" size="24" style="padding-left: 12rpx"></u-icon>
  6. </view>
  7. <view class="items" @tap="showTemplate = true">{{ showBeText }}
  8. <u-icon name="arrow-down" size="24" style="padding-left: 12rpx"></u-icon>
  9. </view>
  10. </view>
  11. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  12. <view class="boxzonglan" style="min-height: 400rpx;">
  13. <view class="zonglantit">简报</view>
  14. <view class="zonglanbox">
  15. <view class="grid" v-for="(item,index) in numlist" :key="index">
  16. <view class="audonum">
  17. <view class="circle"></view>
  18. {{item.name}}
  19. </view>
  20. <view class="num u-flex" v-if="item.name==='平均执行率'">
  21. {{item.num}}
  22. <!-- <image style="margin-left: 2rpx;width: 28rpx;height: 14rpx" src="../../../static/images/excute.png" mode="" /> -->
  23. </view>
  24. <view class="num" v-else-if="item.name==='有效接待'">{{item.num||'--'}}</view>
  25. <view class="num" v-else>{{item.num||0}}</view>
  26. </view>
  27. </view>
  28. </view>
  29. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  30. <view class="single">
  31. <view class="title">
  32. <view class="title1">接待趋势</view>
  33. </view>
  34. <view class="swiper-box">
  35. <u-tabs-swiper ref="tabs" font-size="26" :bold="true" swiper-width="600" :current="bocindex"
  36. @change="tapspagek2()" inactive-color="#505050" active-color="#2671E2" :list="newlistoj1"
  37. :is-scroll="true">
  38. </u-tabs-swiper>
  39. </view>
  40. <!-- <view class="hejibox">
  41. <view class="heji">合计:50</view>
  42. <view class="heji">均值:25</view>
  43. </view> -->
  44. <view class="danwei">{{danwei}} </view>
  45. <view class="uchaserbox">
  46. <template v-if="danwei == '单位(%)'">
  47. <qiun-data-charts type="line" :chartData="lineOptsect" :opts="lineOpts" background="none"
  48. :ontouch="true" canvasId="wangxiaohuaerlingilingwuyiba1" :canvas2d="true" />
  49. </template>
  50. <template v-else>
  51. <qiun-data-charts type="line" :opts="lineOpts1" :chartData="lineOptsect" background="none"
  52. :ontouch="true" canvasId="wangxiaohuaerlingilingwuyiba1" :canvas2d="true" />
  53. </template>
  54. </view>
  55. </view>
  56. <view v-if="teamFlag">
  57. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  58. <view class="single">
  59. <view class="title" @click="staffShow1=true">
  60. <view class="title1">团队接待趋势</view>
  61. <view class="title2">
  62. {{team.label}}
  63. <image class="righttochoose" src="../../../static/images/down.png" mode=""></image>
  64. </view>
  65. </view>
  66. <view class="danwei">单位(%)</view>
  67. <view class="uchaserbox">
  68. <qiun-data-charts :opts="lineOpts" type="line" :chartData="lineOptsect1" background="none"
  69. :ontouch="true" canvasId="wangxiaohuaerlineryiliwuyibao" :canvas2d="true" />
  70. </view>
  71. </view>
  72. </view>
  73. <view v-if="staffFlag">
  74. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  75. <view class="single">
  76. <view class="title">
  77. <view class="title1">员工接待趋势</view>
  78. <view class="title2" @click="staffShow=true">
  79. {{staff.label}}
  80. <image class="righttochoose" src="../../../static/images/down.png" mode=""></image>
  81. </view>
  82. </view>
  83. <!-- <view class="hejibox">
  84. <view class="heji">合计:{{allnum1||0}}</view>
  85. <view class="heji">均值:{{allavg1||0}}</view>
  86. </view> -->
  87. <view class="danwei">单位(%)</view>
  88. <view style="width: 100%;height: 300rpx;text-align: center;line-height: 300rpx;"
  89. v-if="lineOptsect2.series.length===0">暂无数据</view>
  90. <view class="uchaserbox">
  91. <qiun-data-charts :opts="lineOpts" type="line" :chartData="lineOptsect2" background="none"
  92. :ontouch="true" canvasId="wangxiaohuaerlingeryilingwuyibao" :canvas2d="true" />
  93. </view>
  94. </view>
  95. </view>
  96. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  97. <view class="single">
  98. <view class="title">
  99. <view class="title1">场景触达分析</view>
  100. <!-- <view class="title3">
  101. <view class="title3-box">
  102. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 0 }">执行率</view>
  103. </view>
  104. <view class="title3-box">
  105. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 1 }">得分</view>
  106. </view>
  107. </view> -->
  108. </view>
  109. <!-- <view class="hejibox">
  110. <view class="heji">合计:50</view>
  111. <view class="heji">均值:25</view>
  112. </view> -->
  113. <view style="width: 100%;text-align: center;line-height: 300rpx;" v-if="newlisttabinfo.length==0">暂无数据
  114. </view>
  115. <view v-else class="jindu" style="margin-top: 20rpx;">
  116. <scroll-view scroll-y="true">
  117. <view class="jindu-box" v-for="(item,index) in newlisttabinfo" :key="index">
  118. <view class="jindu-boxche">
  119. <view class="jindu-name">{{item.name.substring(0, 4)}}</view>
  120. <view class="progress-cus">
  121. <view class="color" :style="'width:'+ getPercent(item.zxl) + '%'"></view>
  122. </view>
  123. <view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}%</view>
  124. </view>
  125. </view>
  126. </scroll-view>
  127. </view>
  128. </view>
  129. <view style="width: 100%;height: 20rpx;background: #FAFAFA;"></view>
  130. <view class="single">
  131. <view class="title">
  132. <view class="title1">销讲指标执行率</view>
  133. </view>
  134. <view class="swiper-box">
  135. <u-tabs-swiper ref="tabs" font-size="26" :bold="true" swiper-width="600" :current="bocindex1"
  136. @change="tapspagek3" inactive-color="#505050" active-color="#2671E2" :list="newlistoj"
  137. :is-scroll="true">
  138. </u-tabs-swiper>
  139. </view>
  140. <view style="width: 100%;height: 300rpx;text-align: center;line-height: 300rpx;"
  141. v-if="newlisttabinfo1.length==0">暂无数据</view>
  142. <view class="jindu" v-else>
  143. <scroll-view scroll-y="true">
  144. <view class="jindu-box" v-for="(item,index) in newlisttabinfo1" :key="index">
  145. <view class="jindu-boxche">
  146. <view class="jindu-name">{{item.name.substring(0, 4)}}</view>
  147. <view class="progress-cus">
  148. <view class="color" :style="'width:'+ getPercent(item.zxl) + '%'"></view>
  149. </view>
  150. <view class="jindu-zxl">{{item.zxl==null?0:item.zxl}}%</view>
  151. </view>
  152. </view>
  153. </scroll-view>
  154. </view>
  155. </view>
  156. <u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
  157. <u-select v-model="staffShow" :list="staffList" @confirm="staffSelectCallback($event,0)"
  158. :default-value='selindex'></u-select>
  159. <u-select v-model="staffShow1" :list="teamList" @confirm="staffSelectCallback($event,1)"
  160. :default-value='selindex'></u-select>
  161. <!-- 加载组件 -->
  162. <u-loadings v-model="LOADING"></u-loadings>
  163. <!-- 更多筛选 -->
  164. <u-popup v-model="screenShow" mode="bottom" height="400">
  165. <view class="screen">
  166. <view class="boxtittab">
  167. <view class="tabbox">
  168. <view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4, '近七天')">近七天</view>
  169. </view>
  170. <view class="tabbox">
  171. <view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5, '近15天')">近15天</view>
  172. </view>
  173. <view class="tabbox">
  174. <view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6, '近30天')">近30天</view>
  175. </view>
  176. <view class="tabbox">
  177. <view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3, '自定义')">自定义</view>
  178. </view>
  179. </view>
  180. </view>
  181. </u-popup>
  182. <!-- 销讲业务 -->
  183. <u-select :mask-close-able="false" label-name="templateName" value-name="id" v-model="showTemplate"
  184. mode="single-column" :list="templateList" @cancel="templateCancel" @confirm="templateConfirm"></u-select>
  185. </view>
  186. </template>
  187. <script>
  188. var app = getApp();
  189. var config = require("../../../config");
  190. export default {
  191. data() {
  192. return {
  193. activeTotal: 4,
  194. activeTotal2: 0,
  195. houseId: '',
  196. timeobj: {
  197. statDateStart: '',
  198. statDateEnd: ''
  199. },
  200. // 员工列表
  201. staffList: [],
  202. // 团队列表
  203. teamList: [],
  204. staffShow: false,
  205. staff: {
  206. value: '',
  207. label: ''
  208. },
  209. team: {
  210. value: '',
  211. label: ''
  212. },
  213. teamFlag: true,
  214. bocindex1: 0,
  215. staffFlag: true,
  216. staffShow1: false,
  217. lastStartDate: '',
  218. lastEndDate: '',
  219. allnum: '',
  220. allavg: '',
  221. allnum1: '',
  222. allavg1: '',
  223. danwei: '单位(次)',
  224. totalTimeShow: false,
  225. activeTab: 0,
  226. numlist: [{
  227. name: '平均执行率',
  228. num: '',
  229. setName: 'fraction',
  230. },
  231. {
  232. name: '平均接待时长',
  233. num: '',
  234. setName: 'avgDuration',
  235. },
  236. {
  237. name: '接待量',
  238. num: '',
  239. setName: 'receptionCount',
  240. },
  241. {
  242. name: '有效接待',
  243. num: '',
  244. setName: 'activeCustomer',
  245. },
  246. ],
  247. lineOptsect: {
  248. "categories": [],
  249. "series": []
  250. },
  251. lineOptsect1: {
  252. "categories": [],
  253. "series": []
  254. },
  255. lineOptsect2: {
  256. "categories": [],
  257. "series": []
  258. },
  259. newlistoj: [],
  260. newlistoj1: [{
  261. name: "平均执行率",
  262. id: 2,
  263. title: '单位(%)',
  264. setName: 'fraction'
  265. },
  266. {
  267. name: "平均接待时长",
  268. id: 5,
  269. title: '单位(min)',
  270. setName: 'sumDuration'
  271. },
  272. {
  273. name: "接待量",
  274. id: 3,
  275. title: '单位(个)',
  276. setName: 'sumCustomer'
  277. },
  278. {
  279. name: "有效接待",
  280. id: 1,
  281. title: '单位(次)',
  282. setName: 'receptionCount'
  283. },
  284. ],
  285. bocindex: 0,
  286. newlisttabinfo: [{
  287. name: '接待量',
  288. zxl: '10'
  289. },
  290. {
  291. name: '平均执行率',
  292. zxl: '50'
  293. },
  294. {
  295. name: '接待客户',
  296. zxl: '80'
  297. },
  298. ],
  299. newlisttabinfo1: [],
  300. Theteamcomparedisshow: false,
  301. Groupcontrastisshow: false,
  302. allechar: [],
  303. allList: [],
  304. optionsobj: {},
  305. permissions: {
  306. commonly2: false,
  307. commonly3: false,
  308. commonly4: false,
  309. commonly5: false,
  310. commonly6: false,
  311. },
  312. lineOpts: {
  313. xAxis: {
  314. disableGrid: true,
  315. scrollShow: true,
  316. itemCount: 8
  317. },
  318. yAxis: {
  319. data: [{
  320. max: 100,
  321. min: 0,
  322. }]
  323. }
  324. },
  325. lineOpts1: {
  326. xAxis: {
  327. disableGrid: true,
  328. scrollShow: true,
  329. itemCount: 8
  330. }
  331. },
  332. screenShow: false, // 时间筛选弹窗
  333. showTimeText: '近七天', // 展示文字
  334. showBeText: '全部业务', //
  335. templateList: [], // 销讲业务
  336. showTemplate: false, // 展示选择销讲业务弹窗
  337. marketingBusiness: '', // 选择的业务id
  338. showTemplates: false, // 展示选择销讲业务弹窗
  339. };
  340. },
  341. onShow() {
  342. this.LOADING = true
  343. let newmenulist = uni.getStorageSync('weapp_session_Menu_data');
  344. this.permissions.commonly2 = newmenulist.lpdb;
  345. this.permissions.commonly3 = newmenulist.xjqs;
  346. this.permissions.commonly4 = newmenulist.tddb;
  347. this.permissions.commonly5 = newmenulist.gwnl;
  348. this.permissions.commonly6 = newmenulist.yhhx;
  349. // 获取项目id
  350. this.houseId = uni.getStorageSync('buildingID').id;
  351. // 获取数据看板
  352. this.getMarketingBusiness()
  353. // 获取员工
  354. this.getStaffList()
  355. // 获取团队
  356. this.getSectionList()
  357. // 获取团队是否显示权限
  358. // 获取简报
  359. this.getReport()
  360. // 获取接待趋势
  361. this.getRtrent()
  362. // 获取维度
  363. this.getindexZxl()
  364. },
  365. onPullDownRefresh() {
  366. this.getMarketingBusiness()
  367. // 获取员工
  368. this.getStaffList()
  369. // 获取团队
  370. this.getSectionList()
  371. // 获取团队是否显示权限
  372. // 获取简报
  373. this.getReport()
  374. // 获取接待趋势
  375. this.getRtrent()
  376. // 获取维度
  377. this.getindexZxl()
  378. setTimeout(function() {
  379. uni.stopPullDownRefresh();
  380. }, 1000);
  381. },
  382. methods: {
  383. // 销讲业务方法
  384. templateCancel() {
  385. this.showTemplate = false;
  386. },
  387. // 确认选择销讲业务
  388. templateConfirm(e) {
  389. this.showTemplate = false;
  390. this.marketingBusiness = e[0].value
  391. this.showBeText = e[0].label
  392. this.getdata()
  393. },
  394. // 获取销讲业务
  395. getMarketingBusiness() {
  396. this.$u.get('/customer/marketingBusiness', {
  397. houseId: this.houseId,
  398. }).then(res => {
  399. this.templateList = res
  400. this.templateList.unshift({
  401. templateName: '全部业务',
  402. id: ''
  403. })
  404. })
  405. },
  406. getPercent(num) {
  407. console.log(num)
  408. return num || 0
  409. },
  410. // 获取员工列表
  411. getStaffList() {
  412. this.$u.post('/cusLvStatistics/selectAllAccountIdByHouseId', {
  413. houseId: this.houseId
  414. })
  415. .then(res => {
  416. // console.log(res,'123')
  417. this.staffList = []
  418. res.map(item => {
  419. let obj = {}
  420. obj.value = item.accountId
  421. obj.label = item.name
  422. this.staffList.push(obj)
  423. })
  424. this.staff = this.staffList[0]
  425. this.getAward()
  426. })
  427. },
  428. // 获取接待趋势
  429. getRtrent() {
  430. this.$u.post('/cusLvStatistics/receptionTrend', {
  431. houseId: this.houseId,
  432. timeType: this.lastEndDate ? null : this.activeTotal,
  433. lastEndDate: this.lastEndDate,
  434. lastStartDate: this.lastStartDate,
  435. marketingBusiness: this.marketingBusiness,
  436. })
  437. .then(res => {
  438. // console.log(res)
  439. this.allechar = res
  440. this.tapspagek2(this.bocindex)
  441. })
  442. },
  443. // 销奖维度
  444. getindexZxl() {
  445. this.$u.post('/cusLvStatistics/indexZxl', {
  446. houseId: this.houseId,
  447. timeType: this.lastEndDate ? null : this.activeTotal,
  448. lastEndDate: this.lastEndDate,
  449. lastStartDate: this.lastStartDate,
  450. marketingBusiness: this.marketingBusiness,
  451. })
  452. .then(res => {
  453. this.LOADING = false
  454. // console.log(res)
  455. // 处理销奖维度执行率
  456. // this.newlisttabinfo
  457. let arr = []
  458. this.newlistoj = []
  459. res.list.map((item, index) => {
  460. arr.push({
  461. name: item.name,
  462. zxl: item.zxl
  463. })
  464. this.newlistoj.push({
  465. name: item.name,
  466. id: index
  467. })
  468. })
  469. this.newlisttabinfo = arr
  470. this.allList = res.list
  471. this.tapspagek3(this.bocindex1)
  472. }).catch(e => {
  473. this.LOADING = false
  474. })
  475. },
  476. // 获取简报
  477. getReport() {
  478. this.$u.post('/cusLvStatistics/xiaojiangAnalysis', {
  479. houseId: this.houseId,
  480. timeType: this.lastEndDate ? null : this.activeTotal,
  481. lastEndDate: this.lastEndDate,
  482. lastStartDate: this.lastStartDate,
  483. marketingBusiness: this.marketingBusiness,
  484. })
  485. .then(res => {
  486. res.fraction = (res.fraction || 0) + '%'
  487. this.numlist.map(item => {
  488. item.num = res[item.setName] || 0
  489. })
  490. })
  491. },
  492. // 获取团队列表
  493. getSectionList() {
  494. this.$u.post('/cusLvStatistics/findAllDeptIdByHouseId', {
  495. houseId: this.houseId
  496. })
  497. .then(res => {
  498. this.teamList = []
  499. res.map(item => {
  500. let obj = {}
  501. obj.value = item.deptId
  502. obj.label = item.deptName
  503. this.teamList.push(obj)
  504. })
  505. this.team = this.teamList[0]
  506. this.receptionCountList()
  507. })
  508. },
  509. // 员工销奖趋势
  510. getAward() {
  511. if (this.staffList.length == 0) {
  512. this.staffFlag = false
  513. this.$forceUpdate()
  514. return
  515. }
  516. this.$u.post('/cusLvStatistics/employeeAnalysisExacutiveRate', {
  517. userA: this.staff.value,
  518. userB: '',
  519. houseId: this.houseId,
  520. timeType: this.lastEndDate ? null : this.activeTotal + '',
  521. lastEndDate: this.lastEndDate,
  522. lastStartDate: this.lastStartDate,
  523. marketingBusiness: this.marketingBusiness,
  524. })
  525. .then(res => {
  526. this.allnum1 = res.avg[0]
  527. this.allavg1 = res.avg[1]
  528. // console.log(res)
  529. let first = res.first
  530. let second = res.second
  531. this.lineOptsect2.categories = []
  532. this.lineOptsect2.series = [{
  533. name: first[0].accountName,
  534. data: [],
  535. max: 100,
  536. }]
  537. first.map(item => {
  538. this.lineOptsect2.categories.push(item.statDate.slice(5, 10))
  539. this.lineOptsect2.series[0].data.push(item.sumFraction)
  540. })
  541. })
  542. },
  543. // 团队接待趋势
  544. receptionCountList() {
  545. if (this.teamList.length == 0) {
  546. this.teamFlag = false
  547. this.$forceUpdate()
  548. return
  549. }
  550. this.$u.post('/cusLvStatistics/teamAnalysisExecutionRate', {
  551. deptIds: this.team.value,
  552. showRank: 1,
  553. houseId: this.houseId,
  554. timeType: this.lastEndDate ? null : this.activeTotal + '',
  555. lastEndDate: this.lastEndDate,
  556. lastStartDate: this.lastStartDate,
  557. marketingBusiness: this.marketingBusiness,
  558. })
  559. .then(res => {
  560. // console.log(res)
  561. let result = res.result
  562. this.allnum = res.avg[0]
  563. this.allavg = res.avg[1]
  564. // 当选择趋势时
  565. this.lineOptsect1 = {}
  566. let allobj = {
  567. categories: [],
  568. series: []
  569. }
  570. // 先处理时间
  571. // 当选择全部时
  572. // 当选择只有一个时
  573. let obj = {}
  574. obj.data = []
  575. obj.name = result[0][0].deptName
  576. result[0].map(item => {
  577. allobj.categories.push(item.statDate.slice(5, 10))
  578. obj.data.push(item.data)
  579. })
  580. allobj.series.push(obj)
  581. this.lineOptsect1 = allobj
  582. })
  583. },
  584. //时间切换
  585. tabtimetap(index, text) {
  586. this.activeTotal = index;
  587. if (index == 3) {
  588. this.totalTimeShow = true;
  589. this.screenShow = false
  590. } else {
  591. this.screenShow = false
  592. this.showTimeText = text
  593. this.activeTotal = index;
  594. this.lastEndDate = ''
  595. this.lastStartDate = ''
  596. this.getdata()
  597. }
  598. },
  599. // 获取数据
  600. getdata() {
  601. this.receptionCountList()
  602. this.getReport()
  603. this.getRtrent()
  604. this.getindexZxl()
  605. this.getAward()
  606. },
  607. staffSelectCallback(e, idx) {
  608. if (idx == 0) {
  609. this.staff = e[0]
  610. this.getAward()
  611. } else {
  612. this.team = e[0]
  613. this.receptionCountList()
  614. }
  615. // console.log(e,idx)
  616. },
  617. //自定义时间
  618. totalTimeChange(e) {
  619. console.log(e.startDate, e.endDate)
  620. this.screenShow = false
  621. this.showTimeText = `${e.startDate}-${e.endDate}`
  622. this.activeTotal = 3;
  623. this.lastEndDate = e.endDate
  624. this.lastStartDate = e.startDate
  625. this.getdata()
  626. },
  627. //指标执行率分析tab
  628. tapspagek2(index) {
  629. let allobj = {
  630. "categories": [],
  631. "series": [{
  632. name: '接待量',
  633. data: []
  634. }]
  635. }
  636. // 平均执行率
  637. this.danwei = this.newlistoj1[index].title
  638. allobj.series[0].name = this.newlistoj1[index].name
  639. this.allechar.map(item => {
  640. allobj.categories.push(item.statDate.slice(5, 10))
  641. allobj.series[0].data.push(item[this.newlistoj1[index].setName])
  642. })
  643. this.bocindex = index;
  644. this.lineOptsect = allobj
  645. },
  646. tapspagek3(index) {
  647. this.newlisttabinfo1 = [];
  648. let arr = []
  649. this.allList[index].children.map(item => {
  650. arr.push({
  651. name: item.name,
  652. zxl: item.zxl
  653. })
  654. })
  655. this.newlisttabinfo1 = arr
  656. this.bocindex1 = index;
  657. },
  658. //集团对比
  659. Groupcontrast() {
  660. uni.navigateTo({
  661. url: '/pages/center/Piabodata/Groupcontrast'
  662. });
  663. },
  664. //团队对比
  665. Theteamcompared() {
  666. if (this.teamList.length == 0) {
  667. uni.showToast({
  668. title: '没有团队呢',
  669. icon: 'none'
  670. })
  671. return
  672. }
  673. uni.navigateTo({
  674. url: '/pages/center/Piabodata/Theteamcompared'
  675. });
  676. },
  677. //用户洞察
  678. toUserinsightinto() {
  679. uni.navigateTo({
  680. url: '/pages/center/Piabodata/Userinsightinto'
  681. });
  682. },
  683. //趋势分析
  684. toTrendAnalysis() {
  685. uni.navigateTo({
  686. url: '/pages/center/Piabodata/TrendAnalysis'
  687. });
  688. },
  689. //员工分析
  690. toStaffAnalysis() {
  691. if (this.staffList.length == 0) {
  692. uni.showToast({
  693. title: '没有团队呢',
  694. icon: 'none'
  695. })
  696. return
  697. }
  698. uni.navigateTo({
  699. url: '/pages/center/Piabodata/StaffAnalysis'
  700. });
  701. }
  702. }
  703. };
  704. </script>
  705. <style lang="scss" scoped>
  706. .boxtittabs {
  707. width: 100%;
  708. height: 92rpx;
  709. background: #FFFFFF;
  710. display: flex;
  711. align-items: center;
  712. position: sticky;
  713. top: var(--window-top);
  714. .items {
  715. padding: 0 24rpx;
  716. width: 50%;
  717. height: 100%;
  718. display: flex;
  719. align-items: center;
  720. justify-content: center;
  721. overflow: hidden;
  722. white-space: nowrap;
  723. text-overflow: ellipsis;
  724. }
  725. }
  726. .screen {
  727. width: 100%;
  728. height: 100%;
  729. display: flex;
  730. //时间切换的样式
  731. .boxtittab {
  732. width: 100%;
  733. height: 100%;
  734. background: #FFFFFF;
  735. display: flex;
  736. flex-direction: column;
  737. border: none;
  738. .tabbox {
  739. flex: 1;
  740. height: 100%;
  741. text-align: center;
  742. line-height: 92rpx;
  743. color: #666666;
  744. font-size: 28rpx;
  745. font-weight: 400;
  746. display: flex;
  747. justify-content: center;
  748. .activecllasscet {
  749. width: 96rpx;
  750. color: #2671E2;
  751. font-weight: 600;
  752. border-bottom: 4rpx solid #2671E2;
  753. }
  754. }
  755. }
  756. }
  757. .box {
  758. width: 100%;
  759. height: 100%;
  760. background: #FAFAFA;
  761. }
  762. .Piabodata-box {
  763. width: 100%;
  764. background: #FFFFFF;
  765. display: flex;
  766. flex-wrap: wrap;
  767. padding-bottom: 30rpx;
  768. .Piabodata {
  769. width: 33.3%;
  770. .Piabodata-img {
  771. width: 100%;
  772. text-align: center;
  773. .Piabodata-img1 {
  774. width: 134rpx;
  775. height: 134rpx;
  776. }
  777. }
  778. .Piabodata-text {
  779. width: 100%;
  780. text-align: center;
  781. font-size: 24rpx;
  782. font-weight: 400;
  783. color: #333333;
  784. margin-top: -10rpx;
  785. }
  786. }
  787. }
  788. .grid:nth-child(1) {
  789. border-right: 1rpx solid #E0E0E0;
  790. border-bottom: 1rpx solid #E0E0E0;
  791. }
  792. .grid:nth-child(2) {
  793. border-bottom: 1rpx solid #E0E0E0;
  794. }
  795. .grid:nth-child(3) {
  796. border-right: 1rpx solid #E0E0E0;
  797. }
  798. .tabbox {
  799. overflow: hidden;
  800. .activecllasscet {
  801. width: 100%;
  802. }
  803. }
  804. </style>