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.

2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
1 年之前
1 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
1 年之前
2 年之前
2 年之前
2 年之前
2 年之前
2 年之前
1 年之前
1 年之前
1 年之前
1 年之前
1 年之前
1 年之前
2 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858
  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. return num || 0
  408. },
  409. // 获取员工列表
  410. getStaffList() {
  411. this.$u.post('/cusLvStatistics/selectAllAccountIdByHouseId', {
  412. houseId: this.houseId
  413. })
  414. .then(res => {
  415. // console.log(res,'123')
  416. this.staffList = []
  417. res.map(item => {
  418. let obj = {}
  419. obj.value = item.accountId
  420. obj.label = item.name
  421. this.staffList.push(obj)
  422. })
  423. this.staff = this.staffList[0]
  424. this.getAward()
  425. })
  426. },
  427. // 获取接待趋势
  428. getRtrent() {
  429. this.$u.post('/cusLvStatistics/receptionTrend', {
  430. houseId: this.houseId,
  431. timeType: this.lastEndDate ? null : this.activeTotal,
  432. lastEndDate: this.lastEndDate,
  433. lastStartDate: this.lastStartDate,
  434. marketingBusiness: this.marketingBusiness,
  435. })
  436. .then(res => {
  437. // console.log(res)
  438. this.allechar = res
  439. this.tapspagek2(this.bocindex)
  440. })
  441. },
  442. // 销奖维度
  443. getindexZxl() {
  444. this.$u.post('/cusLvStatistics/indexZxl', {
  445. houseId: this.houseId,
  446. timeType: this.lastEndDate ? null : this.activeTotal,
  447. lastEndDate: this.lastEndDate,
  448. lastStartDate: this.lastStartDate,
  449. marketingBusiness: this.marketingBusiness,
  450. })
  451. .then(res => {
  452. this.LOADING = false
  453. // console.log(res)
  454. // 处理销奖维度执行率
  455. // this.newlisttabinfo
  456. let arr = []
  457. this.newlistoj = []
  458. res.list.map((item, index) => {
  459. arr.push({
  460. name: item.name,
  461. zxl: item.zxl
  462. })
  463. this.newlistoj.push({
  464. name: item.name,
  465. id: index
  466. })
  467. })
  468. this.newlisttabinfo = arr
  469. this.allList = res.list
  470. this.tapspagek3(this.bocindex1)
  471. }).catch(e => {
  472. this.LOADING = false
  473. })
  474. },
  475. // 获取简报
  476. getReport() {
  477. this.$u.post('/cusLvStatistics/xiaojiangAnalysis', {
  478. houseId: this.houseId,
  479. timeType: this.lastEndDate ? null : this.activeTotal,
  480. lastEndDate: this.lastEndDate,
  481. lastStartDate: this.lastStartDate,
  482. marketingBusiness: this.marketingBusiness,
  483. })
  484. .then(res => {
  485. res.fraction = (res.fraction || 0) + '%'
  486. this.numlist.map(item => {
  487. item.num = res[item.setName] || 0
  488. })
  489. })
  490. },
  491. // 获取团队列表
  492. getSectionList() {
  493. this.$u.post('/cusLvStatistics/findAllDeptIdByHouseId', {
  494. houseId: this.houseId
  495. })
  496. .then(res => {
  497. this.teamList = []
  498. res.map(item => {
  499. let obj = {}
  500. obj.value = item.deptId
  501. obj.label = item.deptName
  502. this.teamList.push(obj)
  503. })
  504. this.team = this.teamList[0]
  505. this.receptionCountList()
  506. })
  507. },
  508. // 员工销奖趋势
  509. getAward() {
  510. if (this.staffList.length == 0) {
  511. this.staffFlag = false
  512. this.$forceUpdate()
  513. return
  514. }
  515. this.$u.post('/cusLvStatistics/employeeAnalysisExacutiveRate', {
  516. userA: this.staff.value,
  517. userB: '',
  518. houseId: this.houseId,
  519. timeType: this.lastEndDate ? null : this.activeTotal + '',
  520. lastEndDate: this.lastEndDate,
  521. lastStartDate: this.lastStartDate,
  522. marketingBusiness: this.marketingBusiness,
  523. })
  524. .then(res => {
  525. this.allnum1 = res.avg[0]
  526. this.allavg1 = res.avg[1]
  527. // console.log(res)
  528. let first = res.first
  529. let second = res.second
  530. this.lineOptsect2.categories = []
  531. this.lineOptsect2.series = [{
  532. name: first[0].accountName,
  533. data: [],
  534. max: 100,
  535. }]
  536. first.map(item => {
  537. this.lineOptsect2.categories.push(item.statDate.slice(5, 10))
  538. this.lineOptsect2.series[0].data.push(item.sumFraction)
  539. })
  540. })
  541. },
  542. // 团队接待趋势
  543. receptionCountList() {
  544. if (this.teamList.length == 0) {
  545. this.teamFlag = false
  546. this.$forceUpdate()
  547. return
  548. }
  549. this.$u.post('/cusLvStatistics/teamAnalysisExecutionRate', {
  550. deptIds: this.team.value,
  551. showRank: 1,
  552. houseId: this.houseId,
  553. timeType: this.lastEndDate ? null : this.activeTotal + '',
  554. lastEndDate: this.lastEndDate,
  555. lastStartDate: this.lastStartDate,
  556. marketingBusiness: this.marketingBusiness,
  557. })
  558. .then(res => {
  559. // console.log(res)
  560. let result = res.result
  561. this.allnum = res.avg[0]
  562. this.allavg = res.avg[1]
  563. // 当选择趋势时
  564. this.lineOptsect1 = {}
  565. let allobj = {
  566. categories: [],
  567. series: []
  568. }
  569. // 先处理时间
  570. // 当选择全部时
  571. // 当选择只有一个时
  572. let obj = {}
  573. obj.data = []
  574. obj.name = result[0][0].deptName
  575. result[0].map(item => {
  576. allobj.categories.push(item.statDate.slice(5, 10))
  577. obj.data.push(item.data)
  578. })
  579. allobj.series.push(obj)
  580. this.lineOptsect1 = allobj
  581. })
  582. },
  583. //时间切换
  584. tabtimetap(index, text) {
  585. this.activeTotal = index;
  586. if (index == 3) {
  587. this.totalTimeShow = true;
  588. this.screenShow = false
  589. } else {
  590. this.screenShow = false
  591. this.showTimeText = text
  592. this.activeTotal = index;
  593. this.lastEndDate = ''
  594. this.lastStartDate = ''
  595. this.getdata()
  596. }
  597. },
  598. // 获取数据
  599. getdata() {
  600. this.receptionCountList()
  601. this.getReport()
  602. this.getRtrent()
  603. this.getindexZxl()
  604. this.getAward()
  605. },
  606. staffSelectCallback(e, idx) {
  607. if (idx == 0) {
  608. this.staff = e[0]
  609. this.getAward()
  610. } else {
  611. this.team = e[0]
  612. this.receptionCountList()
  613. }
  614. // console.log(e,idx)
  615. },
  616. //自定义时间
  617. totalTimeChange(e) {
  618. console.log(e.startDate, e.endDate)
  619. this.screenShow = false
  620. this.showTimeText = `${e.startDate}-${e.endDate}`
  621. this.activeTotal = 3;
  622. this.lastEndDate = e.endDate
  623. this.lastStartDate = e.startDate
  624. this.getdata()
  625. },
  626. //指标执行率分析tab
  627. tapspagek2(index) {
  628. let allobj = {
  629. "categories": [],
  630. "series": [{
  631. name: '接待量',
  632. data: []
  633. }]
  634. }
  635. // 平均执行率
  636. this.danwei = this.newlistoj1[index].title
  637. allobj.series[0].name = this.newlistoj1[index].name
  638. this.allechar.map(item => {
  639. allobj.categories.push(item.statDate.slice(5, 10))
  640. allobj.series[0].data.push(item[this.newlistoj1[index].setName])
  641. console.log(this.newlistoj1[index], 'zheli ')
  642. })
  643. this.bocindex = index;
  644. this.$nextTick(() => {
  645. this.lineOptsect = allobj
  646. })
  647. console.log(this.lineOptsect, 'echarts数据')
  648. },
  649. tapspagek3(index) {
  650. this.newlisttabinfo1 = [];
  651. let arr = []
  652. this.allList[index].children.map(item => {
  653. arr.push({
  654. name: item.name,
  655. zxl: item.zxl
  656. })
  657. })
  658. this.newlisttabinfo1 = arr
  659. this.bocindex1 = index;
  660. },
  661. //集团对比
  662. Groupcontrast() {
  663. uni.navigateTo({
  664. url: '/pages/center/Piabodata/Groupcontrast'
  665. });
  666. },
  667. //团队对比
  668. Theteamcompared() {
  669. if (this.teamList.length == 0) {
  670. uni.showToast({
  671. title: '没有团队呢',
  672. icon: 'none'
  673. })
  674. return
  675. }
  676. uni.navigateTo({
  677. url: '/pages/center/Piabodata/Theteamcompared'
  678. });
  679. },
  680. //用户洞察
  681. toUserinsightinto() {
  682. uni.navigateTo({
  683. url: '/pages/center/Piabodata/Userinsightinto'
  684. });
  685. },
  686. //趋势分析
  687. toTrendAnalysis() {
  688. uni.navigateTo({
  689. url: '/pages/center/Piabodata/TrendAnalysis'
  690. });
  691. },
  692. //员工分析
  693. toStaffAnalysis() {
  694. if (this.staffList.length == 0) {
  695. uni.showToast({
  696. title: '没有团队呢',
  697. icon: 'none'
  698. })
  699. return
  700. }
  701. uni.navigateTo({
  702. url: '/pages/center/Piabodata/StaffAnalysis'
  703. });
  704. }
  705. }
  706. };
  707. </script>
  708. <style lang="scss" scoped>
  709. .boxtittabs {
  710. width: 100%;
  711. height: 92rpx;
  712. background: #FFFFFF;
  713. display: flex;
  714. align-items: center;
  715. position: sticky;
  716. top: var(--window-top);
  717. .items {
  718. padding: 0 24rpx;
  719. width: 50%;
  720. height: 100%;
  721. display: flex;
  722. align-items: center;
  723. justify-content: center;
  724. overflow: hidden;
  725. white-space: nowrap;
  726. text-overflow: ellipsis;
  727. }
  728. }
  729. .screen {
  730. width: 100%;
  731. height: 100%;
  732. display: flex;
  733. //时间切换的样式
  734. .boxtittab {
  735. width: 100%;
  736. height: 100%;
  737. background: #FFFFFF;
  738. display: flex;
  739. flex-direction: column;
  740. border: none;
  741. .tabbox {
  742. flex: 1;
  743. height: 100%;
  744. text-align: center;
  745. line-height: 92rpx;
  746. color: #666666;
  747. font-size: 28rpx;
  748. font-weight: 400;
  749. display: flex;
  750. justify-content: center;
  751. .activecllasscet {
  752. width: 96rpx;
  753. color: #2671E2;
  754. font-weight: 600;
  755. border-bottom: 4rpx solid #2671E2;
  756. }
  757. }
  758. }
  759. }
  760. .box {
  761. width: 100%;
  762. height: 100%;
  763. background: #FAFAFA;
  764. }
  765. .Piabodata-box {
  766. width: 100%;
  767. background: #FFFFFF;
  768. display: flex;
  769. flex-wrap: wrap;
  770. padding-bottom: 30rpx;
  771. .Piabodata {
  772. width: 33.3%;
  773. .Piabodata-img {
  774. width: 100%;
  775. text-align: center;
  776. .Piabodata-img1 {
  777. width: 134rpx;
  778. height: 134rpx;
  779. }
  780. }
  781. .Piabodata-text {
  782. width: 100%;
  783. text-align: center;
  784. font-size: 24rpx;
  785. font-weight: 400;
  786. color: #333333;
  787. margin-top: -10rpx;
  788. }
  789. }
  790. }
  791. .grid:nth-child(1) {
  792. border-right: 1rpx solid #E0E0E0;
  793. border-bottom: 1rpx solid #E0E0E0;
  794. }
  795. .grid:nth-child(2) {
  796. border-bottom: 1rpx solid #E0E0E0;
  797. }
  798. .grid:nth-child(3) {
  799. border-right: 1rpx solid #E0E0E0;
  800. }
  801. .tabbox {
  802. overflow: hidden;
  803. .activecllasscet {
  804. width: 100%;
  805. }
  806. }
  807. </style>