AI销管
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

StaffAnalysis.vue 21 KiB

hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 1 año
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 1 año
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 1 año
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 1 año
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 1 año
hace 2 años
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 1 año
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
hace 2 años
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786
  1. <template>
  2. <view>
  3. <view class="boxtittabs">
  4. <div class="items" @tap="screenShow = true">{{ showTimeText }}
  5. <u-icon name="arrow-down" size="24" style="padding-left: 12rpx"></u-icon>
  6. </div>
  7. <div class="items" @tap="showTemplate = true">{{ showBeText }}
  8. <u-icon name="arrow-down" size="24" style="padding-left: 12rpx"></u-icon>
  9. </div>
  10. </view>
  11. <view class="timepick">
  12. <view class="timepicktime" @click="chiocStaff(0)">
  13. <view>{{staff1.label}}
  14. <image class="Underimg" src="../../../static/images/down.png" mode=""></image>
  15. </view>
  16. </view>
  17. <view class="timepickpick" @click="checkboxChange">
  18. <image v-if="timepickpickisshow" style="width: 30rpx;height: 30rpx;"
  19. src="../../../static/images/xuanzhong.png" mode=""></image>
  20. <view v-else style="width: 30rpx;height:30rpx;border: 1rpx solid #E0E0E0;"></view>
  21. <view style="font-size:26rpx;text-indent: 12rpx;">对比</view>
  22. </view>
  23. <view class="timepicktime" v-if="timepickpickisshow" @click="chiocStaff(1)">
  24. <view>{{staff2.label}}
  25. <image class="Underimg" src="../../../static/images/down.png" mode=""></image>
  26. </view>
  27. </view>
  28. </view>
  29. <view style="width: 100%;height: 20rpx;background: #f8f8f8;"></view>
  30. <view class="single">
  31. <view class="title">
  32. <view class="title1" style="flex: 1;">接待量</view>
  33. </view>
  34. <view class="hejisan">
  35. <view class="sanbox1">
  36. <view class="text1-2">{{newTeam1||0}}</view>
  37. <view class="text1-1">{{staff1.label}}</view>
  38. </view>
  39. <view class="sanbox1" v-if="timepickpickisshow">
  40. <view class="text1-2">{{newAvg1||0}}</view>
  41. <view class="text1-1">{{staff2.label}}</view>
  42. </view>
  43. </view>
  44. <view class="danwei">来访(人)</view>
  45. <view class="uchaserbox">
  46. <qiun-data-charts v-if="isShow" type="line" :chartData="lineOptsect" background="none" :ontouch="true"
  47. canvasId="wangxiaohuaerlingeryilingwuyibbb" :canvas2d="true" />
  48. </view>
  49. </view>
  50. <view style="width: 100%;height: 20rpx;background: #f8f8f8;"></view>
  51. <view class="single">
  52. <view class="title">
  53. <view class="title1" style="flex: 1;">录音时长</view>
  54. <view class="title3" style="flex: 1;">
  55. <!-- <view class="title3-box" style="width: 40%;" @click="tabtimetap1(0)">
  56. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 0 }">有效录音</view>
  57. </view>
  58. <view class="title3-box" style="width: 40%;"@click="tabtimetap1(1)">
  59. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 1 }">录音时长</view>
  60. </view> -->
  61. </view>
  62. </view>
  63. <view class="hejisan">
  64. <view class="sanbox1">
  65. <view class="text1-2">{{newTeam2||0}}</view>
  66. <view class="text1-1">{{staff1.label}}</view>
  67. </view>
  68. <view class="sanbox1" v-if="timepickpickisshow">
  69. <view class="text1-2">{{newAvg2||0}}</view>
  70. <view class="text1-1">{{staff2.label}}</view>
  71. </view>
  72. </view>
  73. <view class="danwei">录音时长</view>
  74. <view class="uchaserbox">
  75. <qiun-data-charts v-if="isShow" type="line" :chartData="lineOptsect1" background="none" :ontouch="true"
  76. canvasId="wangxiaouaerlingeryilingwuyibhh" :canvas2d="true" />
  77. </view>
  78. </view>
  79. <view style="width: 100%;height: 20rpx;background: #f8f8f8;"></view>
  80. <view class="single">
  81. <view class="title">
  82. <view class="title1" style="flex: 1;">销讲执行率</view>
  83. <view class="title3" style="flex: 1;">
  84. <!-- <view class="title3-box" style="width: 40%;" @click="tabtimetap1(0)">
  85. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 0 }">有效录音</view>
  86. </view>
  87. <view class="title3-box" style="width: 40%;"@click="tabtimetap1(1)">
  88. <view style="height: 42rpx;" :class="{ activecltab: activeTotal2 == 1 }">录音时长</view>
  89. </view> -->
  90. </view>
  91. </view>
  92. <view class="hejisan">
  93. <view class="sanbox1">
  94. <view class="text1-2">{{newTeam3||0}}</view>
  95. <view class="text1-1">{{staff1.label}}</view>
  96. </view>
  97. <view class="sanbox1" v-if="timepickpickisshow">
  98. <view class="text1-2">{{newAvg3||0}}</view>
  99. <view class="text1-1">{{staff2.label}}</view>
  100. </view>
  101. </view>
  102. <view class="uchaserbox">
  103. <qiun-data-charts v-if="isShow" type="line" :chartData="lineOptsect2" background="none" :ontouch="true"
  104. canvasId="wangxiaohuaerlingryilingwuyibhh" :canvas2d="true" :opts="lineOpts" />
  105. </view>
  106. </view>
  107. <view style="width: 100%;height: 20rpx;background: #f8f8f8;"></view>
  108. <view class="single">
  109. <view class="title" style="padding-right: 30rpx;">
  110. <view class="title1" style="flex: 1;">销讲能力</view>
  111. </view>
  112. <view class="uchaserbox">
  113. <qiun-data-charts v-if="isShow" type="radar" :opts="opts" :chartData="chartData" :canvas2d="true"
  114. canvasId="wangxiaohuaerlingeryilinwuycsdx" background="none" :loadingType="0" />
  115. </view>
  116. </view>
  117. <u-calendar v-model="totalTimeShow" mode="range" @change="totalTimeChange"></u-calendar>
  118. <!-- 选择客户的选择框 -->
  119. <u-select v-model="staffShow" :list="staffList" @confirm="staffSelectCallback" :default-value='selindex'>
  120. </u-select>
  121. <u-select v-model="staffShow1" :list="staffList1" @confirm="staffSelectCallback" :default-value='selindex'>
  122. </u-select>
  123. <!-- 更多筛选 -->
  124. <u-popup v-model="screenShow" mode="bottom" height="368">
  125. <view class="screen">
  126. <view class="boxtittab">
  127. <view class="tabbox">
  128. <view :class="{ activecllasscet: activeTotal == 4 }" @click="tabtimetap(4, '近七天')">近七天</view>
  129. </view>
  130. <view class="tabbox">
  131. <view :class="{ activecllasscet: activeTotal == 5 }" @click="tabtimetap(5, '近15天')">近15天</view>
  132. </view>
  133. <view class="tabbox">
  134. <view :class="{ activecllasscet: activeTotal == 6 }" @click="tabtimetap(6, '近30天')">近30天</view>
  135. </view>
  136. <view class="tabbox">
  137. <view :class="{ activecllasscet: activeTotal == 3 }" @click="tabtimetap(3, '自定义')">自定义</view>
  138. </view>
  139. </view>
  140. </view>
  141. </u-popup>
  142. <!-- 销讲业务 -->
  143. <u-select :mask-close-able="false" label-name="templateName" value-name="id" v-model="showTemplate"
  144. mode="single-column" :list="templateList" @cancel="templateCancel" @confirm="templateConfirm"></u-select>
  145. <!-- 销讲业务2 -->
  146. <u-select :mask-close-able="false" label-name="templateName" value-name="id" v-model="showTemplates"
  147. mode="single-column" :list="templateLists" @cancel="showTemplates = false" @confirm="templateConfirms">
  148. </u-select>
  149. <!-- 加载组件 -->
  150. <u-loadings v-model="LOADING"></u-loadings>
  151. </view>
  152. </template>
  153. <script>
  154. export default {
  155. data() {
  156. return {
  157. timepickpickisshow: true,
  158. totalTimeShow: false,
  159. activeTotal: 4,
  160. activeTotal2: 1,
  161. // 项目id
  162. houseId: '',
  163. staffList: [],
  164. staffList1: [],
  165. staffShow: false,
  166. staffShow1: false,
  167. newTeam1: '',
  168. newAvg1: '',
  169. newTeam2: '',
  170. newAvg2: '',
  171. newTeam3: '',
  172. newAvg3: '',
  173. staff1: {
  174. value: '',
  175. label: ''
  176. },
  177. staff2: {
  178. value: '',
  179. label: '平均'
  180. },
  181. lastStartDate: '',
  182. lastEndDate: '',
  183. selindex: [0],
  184. choseStaffFlag: false,
  185. lineOptsect: {
  186. "categories": ["2016", "2017", "2018", "2019", "2020", "2021"],
  187. "series": [{
  188. "name": "成交量1",
  189. "data": [35, 8, 25, 37, 4, 20]
  190. },
  191. {
  192. "name": "成交量2",
  193. "data": [40, 18, 45, 44, 10, 60]
  194. }
  195. ]
  196. },
  197. lineOptsect1: {
  198. "categories": ["2016", "2017", "2018", "2019", "2020", "2021"],
  199. "series": [{
  200. "name": "成交量1",
  201. "data": [35, 8, 25, 37, 4, 20]
  202. },
  203. {
  204. "name": "成交量2",
  205. "data": [40, 18, 45, 44, 10, 60]
  206. }
  207. ]
  208. },
  209. lineOptsect2: {
  210. "categories": ["2016", "2017", "2018", "2019", "2020", "2021"],
  211. "series": [{
  212. "name": "成交量1",
  213. "data": [35, 8, 25, 37, 4, 20]
  214. },
  215. {
  216. "name": "成交量2",
  217. "data": [40, 18, 45, 44, 10, 60]
  218. }
  219. ]
  220. },
  221. chartData: {
  222. "categories": ["维度1", "维度2", "维度3", "维度4", "维度5", "维度6"],
  223. "series": [{
  224. "name": "成交量",
  225. "data": [90, 110, 165, 195, 187, 172]
  226. }]
  227. },
  228. opts: {
  229. fontSize: 10,
  230. extra: {
  231. radar: {
  232. max: 100
  233. }
  234. }
  235. },
  236. lineOpts: {
  237. yAxis: {
  238. data: [{
  239. max: 100,
  240. min: 0,
  241. }]
  242. }
  243. },
  244. isShow: true, // 默认都展示
  245. screenShow: false, // 时间筛选弹窗
  246. showTimeText: '近七天', // 展示文字
  247. showBeText: '全部业务', //
  248. templateList: [], // 销讲业务
  249. showTemplate: false, // 展示选择销讲业务弹窗
  250. marketingBusiness: '', // 选择的业务id
  251. showTemplates: false, // 展示选择销讲业务弹窗
  252. templateLists: [], // 销讲业务
  253. marketingBusinessId: '', // 选择的业务id
  254. showBeTexts: '', //
  255. };
  256. },
  257. onLoad(options) {
  258. this.LOADING = true
  259. // 获取项目id
  260. this.houseId = uni.getStorageSync('buildingID').id;
  261. // this.buildingname = uni.getStorageSync('buildingID').name;
  262. // 请求接口获取所有置业顾问员工的列表
  263. this.getStaffList()
  264. this.getMarketingBusiness()
  265. },
  266. onPullDownRefresh() {
  267. this.getStaffList()
  268. setTimeout(function() {
  269. uni.stopPullDownRefresh();
  270. }, 1000);
  271. },
  272. methods: {
  273. // 销讲业务方法
  274. templateCancel() {
  275. this.showTemplate = false;
  276. },
  277. // 确认选择销讲业务
  278. templateConfirm(e) {
  279. this.showTemplate = false;
  280. this.marketingBusiness = e[0].value
  281. this.showBeText = e[0].label
  282. this.getdata()
  283. },
  284. // 确认选择销讲业务
  285. templateConfirms(e) {
  286. this.showTemplates = false;
  287. this.marketingBusinessId = e[0].value
  288. this.showBeTexts = e[0].label
  289. this.getdata()
  290. },
  291. // 获取销讲业务
  292. getMarketingBusiness() {
  293. this.$u.get('/customer/marketingBusiness', {
  294. houseId: uni.getStorageSync('buildingID').id,
  295. }).then(res => {
  296. this.templateLists = res.map(item => {
  297. return item
  298. })
  299. this.marketingBusinessId = res[0].id
  300. this.showBeTexts = res[0].templateName
  301. this.templateList = res
  302. this.templateList.unshift({
  303. templateName: '全部业务',
  304. id: ''
  305. })
  306. })
  307. },
  308. //是否对比
  309. checkboxChange() {
  310. this.isShow = false
  311. this.timepickpickisshow = !this.timepickpickisshow;
  312. this.staff2.value = ''
  313. this.staff2.label = '平均'
  314. // this.getreception()
  315. // this.getRecordList()
  316. // this.getAwardList()
  317. // this.getAward()
  318. setTimeout(() => {
  319. this.isShow = true
  320. }, 10)
  321. this.getdata()
  322. },
  323. // 点击员工对比
  324. chiocStaff(idx) {
  325. if (idx == 0) {
  326. // 当选择了第一个的时候
  327. this.choseStaffFlag = false
  328. this.staffShow = true
  329. } else {
  330. this.choseStaffFlag = true
  331. this.staffShow1 = true
  332. }
  333. },
  334. // 获取员工列表
  335. getStaffList() {
  336. this.$u.post('/cusLvStatistics/selectAllAccountIdByHouseId', {
  337. houseId: this.houseId
  338. })
  339. .then(res => {
  340. // console.log(res,'123')
  341. this.staffList = []
  342. this.staffList1 = []
  343. res.map(item => {
  344. let obj = {}
  345. obj.value = item.accountId
  346. obj.label = item.name
  347. this.staffList.push(obj)
  348. })
  349. this.staffList1 = [...this.staffList]
  350. this.staffList1.unshift({
  351. value: '',
  352. label: '平均'
  353. })
  354. this.staff1 = this.staffList[0]
  355. // this.getreception()
  356. // this.getRecordList()
  357. // this.getAwardList()
  358. // this.getAward()
  359. this.getdata()
  360. })
  361. },
  362. getdata() {
  363. this.getreception()
  364. this.getRecordList()
  365. this.getAward()
  366. this.getAwardList()
  367. },
  368. // 获取接待量数据
  369. getreception() {
  370. this.$u.post('/cusLvStatistics/employeeAnalysisReception', {
  371. userA: this.staff1.value,
  372. userB: this.staff2.value,
  373. houseId: this.houseId,
  374. timeType: this.lastEndDate ? null : this.activeTotal + '',
  375. lastEndDate: this.lastEndDate,
  376. lastStartDate: this.lastStartDate,
  377. marketingBusiness: this.marketingBusiness,
  378. })
  379. .then(res => {
  380. this.newTeam1 = res.avg[0]
  381. this.newAvg1 = res.avg[1]
  382. // console.log(res)
  383. let first = res.first
  384. let second = res.second
  385. this.lineOptsect.categories = []
  386. if (!this.timepickpickisshow) {
  387. this.lineOptsect.series = [{
  388. name: first[0].accountName,
  389. data: []
  390. }]
  391. first.map(item => {
  392. this.lineOptsect.categories.push(item.statDate.slice(5, 10))
  393. this.lineOptsect.series[0].data.push(item.receptionCount || 0)
  394. })
  395. } else {
  396. this.lineOptsect.series = [{
  397. name: first[0].accountName,
  398. data: []
  399. },
  400. {
  401. "name": second[0].accountName,
  402. "data": []
  403. }
  404. ]
  405. first.map(item => {
  406. this.lineOptsect.categories.push(item.statDate.slice(5, 10))
  407. this.lineOptsect.series[0].data.push(item.receptionCount)
  408. })
  409. second.map(item => {
  410. this.lineOptsect.series[1].data.push(item.receptionCount)
  411. })
  412. }
  413. // console.log(this.lineOptsect,'1')
  414. })
  415. },
  416. // 销奖趋势
  417. getAward() {
  418. this.$u.post('/cusLvStatistics/employeeAnalysisExacutiveRate', {
  419. userA: this.staff1.value,
  420. userB: this.staff2.value,
  421. houseId: this.houseId,
  422. timeType: this.lastEndDate ? null : this.activeTotal + '',
  423. lastEndDate: this.lastEndDate,
  424. lastStartDate: this.lastStartDate,
  425. marketingBusiness: this.marketingBusiness,
  426. })
  427. .then(res => {
  428. this.newTeam3 = res.avg[0]
  429. this.newAvg3 = res.avg[1]
  430. // console.log(res)
  431. let first = res.first
  432. let second = res.second
  433. this.lineOptsect2.categories = []
  434. if (!this.timepickpickisshow) {
  435. this.lineOptsect2.series = [{
  436. name: first[0].accountName,
  437. data: []
  438. }]
  439. first.map(item => {
  440. // console.log(item)
  441. this.lineOptsect2.categories.push(item.statDate.slice(5, 10))
  442. this.lineOptsect2.series[0].data.push(item.sumFraction)
  443. })
  444. } else {
  445. this.lineOptsect2.series = [{
  446. name: first[0].accountName,
  447. data: []
  448. },
  449. {
  450. "name": second[0].accountName,
  451. "data": []
  452. }
  453. ]
  454. first.map(item => {
  455. this.lineOptsect2.categories.push(item.statDate.slice(5, 10))
  456. this.lineOptsect2.series[0].data.push(item.sumFraction)
  457. })
  458. second.map(item => {
  459. this.lineOptsect2.series[1].data.push(item.sumFraction)
  460. })
  461. }
  462. // console.log(this.lineOptsect2,'3')
  463. })
  464. },
  465. // 获取有效录音
  466. async getRecordList() {
  467. // 当选择有效录音时
  468. let res = null
  469. if (this.activeTotal2 == 0) {
  470. res = await this.$u.post('/cusLvStatistics/employeeAnalysisEffectiveRecording', {
  471. userA: this.staff1.value,
  472. userB: this.staff2.value,
  473. houseId: this.houseId,
  474. timeType: this.lastEndDate ? null : this.activeTotal + '',
  475. lastEndDate: this.lastEndDate,
  476. lastStartDate: this.lastStartDate,
  477. marketingBusiness: this.marketingBusiness,
  478. })
  479. } else {
  480. res = await this.$u.post('/cusLvStatistics/employeeAnalysisRecordingTime', {
  481. userA: this.staff1.value,
  482. userB: this.staff2.value,
  483. houseId: this.houseId,
  484. timeType: this.lastEndDate ? null : this.activeTotal + '',
  485. lastEndDate: this.lastEndDate,
  486. lastStartDate: this.lastStartDate,
  487. marketingBusiness: this.marketingBusiness,
  488. })
  489. }
  490. // console.log(res)
  491. this.newTeam2 = res.avg[0]
  492. this.newAvg2 = res.avg[1]
  493. let first = res.first
  494. let second = res.second
  495. this.lineOptsect1.categories = []
  496. if (!this.timepickpickisshow) {
  497. this.lineOptsect1.series = [{
  498. name: first[0].accountName,
  499. data: []
  500. }]
  501. first.map(item => {
  502. this.lineOptsect1.categories.push(item.statDate.slice(5, 10))
  503. this.lineOptsect1.series[0].data.push(item.sumDuration)
  504. })
  505. } else {
  506. this.lineOptsect1.series = [{
  507. name: first[0].accountName,
  508. data: []
  509. },
  510. {
  511. "name": second[0].accountName,
  512. "data": []
  513. }
  514. ]
  515. first.map(item => {
  516. this.lineOptsect1.categories.push(item.statDate.slice(5, 10))
  517. this.lineOptsect1.series[0].data.push(item.sumDuration)
  518. })
  519. second.map(item => {
  520. this.lineOptsect1.series[1].data.push(item.sumDuration)
  521. })
  522. }
  523. // console.log(this.lineOptsect1,'2')
  524. },
  525. // 获取销奖能力
  526. getAwardList() {
  527. this.chartData = {
  528. categories: [],
  529. series: []
  530. }
  531. this.$u.post('/cusLvStatistics/employeeAnalysisLevel1Fraction', {
  532. userA: this.staff1.value,
  533. userB: this.staff2.value,
  534. houseId: this.houseId,
  535. timeType: this.lastEndDate ? null : this.activeTotal + '',
  536. lastEndDate: this.lastEndDate,
  537. lastStartDate: this.lastStartDate,
  538. marketingBusiness: this.marketingBusiness,
  539. })
  540. .then(res => {
  541. this.LOADING = false
  542. console.log(res, '销讲能力')
  543. let first = res.first
  544. let second = res.second
  545. this.chartData.categories = []
  546. if (!this.timepickpickisshow) {
  547. this.chartData.series = [{
  548. name: first[0].accountName,
  549. data: []
  550. }]
  551. first.map(item => {
  552. this.chartData.categories.push(item.name)
  553. this.chartData.series[0].data.push(item.avgExecutionRate)
  554. })
  555. } else {
  556. this.chartData.series = [{
  557. name: first[0].accountName,
  558. data: []
  559. },
  560. {
  561. "name": second[0].accountName,
  562. "data": []
  563. }
  564. ]
  565. first.map(item => {
  566. this.chartData.categories.push(item.name)
  567. this.chartData.series[0].data.push(item.avgExecutionRate)
  568. })
  569. second.map(item => {
  570. this.chartData.series[1].data.push(item.avgExecutionRate)
  571. })
  572. }
  573. console.log(this.chartData)
  574. }).catch(e => {
  575. this.LOADING = false
  576. })
  577. },
  578. tabtimetap(index, text) {
  579. if (index == 3) {
  580. this.totalTimeShow = true;
  581. this.screenShow = false
  582. } else {
  583. this.screenShow = false
  584. this.showTimeText = text
  585. this.activeTotal = index;
  586. this.lastEndDate = ''
  587. this.lastStartDate = ''
  588. // 获取数据
  589. this.getdata()
  590. }
  591. },
  592. tabtimetap1(index) {
  593. this.activeTotal2 = index;
  594. // 调用方法
  595. this.getRecordList()
  596. },
  597. //自定义时间
  598. totalTimeChange(e) {
  599. console.log(e.startDate, e.endDate)
  600. this.screenShow = false
  601. this.showTimeText = `${e.startDate}-${e.endDate}`
  602. this.activeTotal = 3;
  603. this.lastEndDate = e.endDate
  604. this.lastStartDate = e.startDate
  605. // 获取数据
  606. // this.getreception()
  607. // this.getRecordList()
  608. // this.getAwardList()
  609. this.getdata()
  610. },
  611. staffSelectCallback(e) {
  612. if (this.choseStaffFlag) {
  613. // 第二个客户
  614. this.staff2 = e[0]
  615. } else {
  616. // 第一个客户
  617. this.staff1 = e[0]
  618. }
  619. if (this.staff1.label == this.staff2.label) {
  620. uni.showToast({
  621. title: '请勿选择重复',
  622. icon: 'none'
  623. })
  624. this.staff2.label = '请选择'
  625. return
  626. } else {
  627. // 获取数据
  628. // this.getreception()
  629. // this.getRecordList()
  630. // this.getAwardList()
  631. this.getdata()
  632. }
  633. },
  634. },
  635. }
  636. </script>
  637. <style lang="scss" scoped>
  638. .boxtittabs {
  639. width: 100%;
  640. height: 92rpx;
  641. background: #FFFFFF;
  642. display: flex;
  643. align-items: center;
  644. .items {
  645. padding: 0 24rpx;
  646. width: 50%;
  647. height: 100%;
  648. display: flex;
  649. align-items: center;
  650. justify-content: center;
  651. overflow: hidden;
  652. white-space: nowrap;
  653. text-overflow: ellipsis;
  654. }
  655. }
  656. .screen {
  657. width: 100%;
  658. .boxtittab {
  659. width: 100%;
  660. flex-direction: column;
  661. border: none;
  662. .tabbox {
  663. width: 100%;
  664. }
  665. }
  666. }
  667. .boxtittab {
  668. position: sticky;
  669. top: var(--window-top);
  670. z-index: 999;
  671. }
  672. .hejisan {
  673. width: 92%;
  674. margin: 0 auto;
  675. display: flex;
  676. padding-bottom: 20rpx;
  677. .sanbox1 {
  678. flex: 1;
  679. display: flex;
  680. flex-direction: column;
  681. justify-content: center;
  682. align-items: center;
  683. position: relative;
  684. &::after {
  685. position: absolute;
  686. content: '';
  687. width: 1rpx;
  688. height: 86rpx;
  689. background: #E0E0E0;
  690. right: 0;
  691. top: 0;
  692. }
  693. &:last-child::after {
  694. position: absolute;
  695. content: '';
  696. width: 1rpx;
  697. height: 86rpx;
  698. right: 0;
  699. top: 0;
  700. background: #fff;
  701. }
  702. }
  703. .text1-1 {
  704. font-size: 24rpx;
  705. font-family: PingFangSC-Regular, PingFang SC;
  706. font-weight: 400;
  707. color: #333333;
  708. line-height: 32rpx;
  709. }
  710. .text1-2 {
  711. color: #333333;
  712. font-size: 40rpx;
  713. line-height: 46rpx;
  714. font-family: PingFangSC-Regular, PingFang SC;
  715. margin-bottom: 10rpx;
  716. }
  717. }
  718. // 对比时间切换
  719. .timepick {
  720. width: 100%;
  721. height: 90rpx;
  722. display: flex;
  723. align-items: center;
  724. }
  725. .timepicktime {
  726. width: 260rpx;
  727. height: 50rpx;
  728. margin-left: 30rpx;
  729. display: flex;
  730. align-items: center;
  731. background: #FFFFFF;
  732. }
  733. .timepickpick {
  734. width: 110rpx;
  735. height: 50rpx;
  736. line-height: 50rpx;
  737. margin-left: 30rpx;
  738. display: flex;
  739. align-items: center;
  740. }
  741. .Underimg {
  742. width: 28rpx;
  743. height: 14rpx;
  744. margin-left: 15rpx;
  745. }
  746. </style>