mixin.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import { roadshowInterence } from '@/api/api.js';
  2. import moment from 'moment';
  3. export default {
  4. data() {
  5. return {
  6. dataLoading: false,
  7. default_tab: '周度统计表',
  8. select_date: '',
  9. staticTabs: [ '周度统计表','月度统计表','近1个月','近3个月','近6个月' ],
  10. tableTheadColumns: this.$route.path === '/sellerStatisticSeller'
  11. ? [
  12. `本周(${this.getWeekOrMonthDate(0)})`,
  13. `上一周(${this.getWeekOrMonthDate(1)})`,
  14. `上两周(${this.getWeekOrMonthDate(2)})`,
  15. `上三周(${this.getWeekOrMonthDate(3)})`,
  16. `上四周(${this.getWeekOrMonthDate(4)})`,
  17. `上五周(${this.getWeekOrMonthDate(5)})`]
  18. : ['上一周','本周','下一周'],//动态表头配置
  19. dialogForm:{},
  20. isShowDia: false,
  21. diaTitle: '路演详情',
  22. datalist:[],//表格数据
  23. totalGroupArr: [],//总合计列表
  24. departmentTabs:[{label:'ficc',val:'ficc'},{label:'权益',val:'权益'}],
  25. departmentAct:'ficc'
  26. }
  27. },
  28. computed:{
  29. departmentTheadColumns(){
  30. return this.departmentAct == 'ficc' ? ['试用路演','正式路演','公开会议'] : ['路演','沙龙']
  31. }
  32. },
  33. methods: {
  34. /* 切换顶部tab */
  35. changeTabHandle(tab,type) {
  36. // if(tab === this.default_tab) return
  37. $('.table-body-wrapper')[0].scrollTop = 0;
  38. this.default_tab = tab;
  39. switch(tab) {
  40. case '周度统计表':
  41. this.tableTheadColumns = this.$route.path === '/sellerStatisticSeller'
  42. ? [
  43. `本周(${this.getWeekOrMonthDate(0)})`,
  44. `上一周(${this.getWeekOrMonthDate(1)})`,
  45. `上两周(${this.getWeekOrMonthDate(2)})`,
  46. `上三周(${this.getWeekOrMonthDate(3)})`,
  47. `上四周(${this.getWeekOrMonthDate(4)})`,
  48. `上五周(${this.getWeekOrMonthDate(5)})`]
  49. : ['上一周','本周','下一周'];
  50. break;
  51. case '月度统计表':
  52. this.tableTheadColumns = this.$route.path === '/sellerStatisticSeller'
  53. ? [
  54. this.getWeekOrMonthDate(0,'month'),
  55. this.getWeekOrMonthDate(1,'month'),
  56. this.getWeekOrMonthDate(2,'month'),
  57. this.getWeekOrMonthDate(3,'month'),
  58. this.getWeekOrMonthDate(4,'month'),
  59. this.getWeekOrMonthDate(5,'month')]
  60. : [
  61. this.getWeekOrMonthDate(0,'month'),
  62. this.getWeekOrMonthDate(1,'month'),
  63. this.getWeekOrMonthDate(2,'month'),
  64. this.getWeekOrMonthDate(3,'month'),
  65. ];
  66. break;
  67. default:
  68. this.tableTheadColumns = this.departmentTheadColumns;
  69. break;
  70. }
  71. let typeObj = {
  72. '近1个月': 1,
  73. '近3个月': 3,
  74. '近6个月': 6,
  75. };
  76. typeObj[tab] ? this.filterDate(typeObj[tab]) : this.filterDate(0);
  77. this.getTableData();
  78. },
  79. /* 处理数据结构 便于页面渲染 userid 时间用于弹窗获取列表*/
  80. filterTableData(data,userid= '') {
  81. let list = this.departmentAct == 'ficc' ? data.map(item => ([
  82. {
  83. key: '试用路演',
  84. value: item.TryOutNum,
  85. startDate: item.StartDate,
  86. endDate: item.EndDate,
  87. userid
  88. },
  89. {
  90. key: '正式路演',
  91. value: item.FormalNum,
  92. startDate: item.StartDate,
  93. endDate: item.EndDate,
  94. userid
  95. },
  96. {
  97. key: '公开会议',
  98. value: item.MeetingNum,
  99. startDate: item.StartDate,
  100. endDate: item.EndDate,
  101. userid
  102. }
  103. ])) :data.map(item => ([
  104. {
  105. key: '路演',
  106. value: item.RoadShowNum,
  107. startDate: item.StartDate,
  108. endDate: item.EndDate,
  109. userid
  110. },
  111. {
  112. key: '沙龙',
  113. value: item.SalonNum,
  114. startDate: item.StartDate,
  115. endDate: item.EndDate,
  116. userid
  117. },
  118. ]))
  119. return list.flat(Infinity);
  120. },
  121. /* 路演详情弹窗 */
  122. openDiaHandle({ startDate,endDate,userid,value,key }) {
  123. if(value === 0) return;
  124. this.diaTitle = key === '路演' || key === '沙龙' || key === '公开会议' ? `${key}详情` : '路演详情';
  125. this.dialogForm = {
  126. startDate,
  127. endDate,
  128. userid,
  129. key,
  130. departmentType:this.departmentAct
  131. }
  132. this.isShowDia = true;
  133. },
  134. /* 获取近几个月的日期范围 */
  135. filterDate(month) {
  136. if(month) {
  137. let date_before = moment().subtract(month,'M').format("YYYY-MM-DD");
  138. let date_now = moment().format("YYYY-MM-DD");
  139. let date = [date_before,date_now]
  140. this.select_date = date;
  141. }else {
  142. this.select_date = '';
  143. }
  144. },
  145. /* 获取几周前 周一周日日期 或前几月月份*/
  146. getWeekOrMonthDate(weeknum,type='week') {
  147. if(type === 'week') {
  148. const weekStart = this.$moment().subtract(weeknum, 'week').startOf('isoWeek').format('YYYY.MM.DD'); //周一
  149. const weekEnd = this.$moment().subtract(weeknum, 'week').endOf('isoWeek').format('YYYY.MM.DD'); //周日
  150. // console.log(weekStart,weekEnd)
  151. return `${weekStart}~${weekEnd}`;
  152. } else {
  153. const month = this.$moment().subtract(weeknum,'M').format('YYYY.MM');
  154. return month;
  155. }
  156. },
  157. /* 选择日期改变清空高亮按钮 */
  158. dateChange() {
  159. this.default_tab = '';
  160. this.tableTheadColumns = this.departmentTheadColumns;
  161. this.getTableData();
  162. },
  163. // 头部的点击事件
  164. tabsHandler(item) {
  165. // this.default_tab = '周度统计表';
  166. this.departmentAct = item.val;
  167. this.changeTabHandle('周度统计表')
  168. // this.getTableData();
  169. }
  170. }
  171. }