index.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. namespace ruanzhifenbu {
  2. const { line, upLine } = require("./F2");
  3. let { getMarket } = require('../../../../utils/api')
  4. let first = true;
  5. Component({
  6. /**
  7. * 组件的属性列表
  8. */
  9. properties: {
  10. array: {
  11. type: Object
  12. },
  13. channel: {
  14. type: Object
  15. },
  16. },
  17. observers: {
  18. 'array': function () {
  19. !first && this.upData()
  20. },
  21. 'channel': function () {
  22. !first && this.upData()
  23. },
  24. },
  25. ready() {
  26. this.init();
  27. first = false;
  28. },
  29. /**
  30. * 组件的初始数据
  31. */
  32. data: {
  33. onInitChart: undefined,
  34. DayList: {},
  35. select_act: 0,
  36. select: [
  37. {
  38. text: "时长",
  39. proportionType: "timeSize",
  40. type: 2,
  41. unit: "分",
  42. },
  43. {
  44. text: "频次",
  45. proportionType: "pinci",
  46. type: 1,
  47. unit: "次",
  48. },
  49. {
  50. text: "客户数",
  51. proportionType: "custom",
  52. type: 4,
  53. unit: "个",
  54. },
  55. ],
  56. },
  57. /**
  58. * 组件的方法列表
  59. */
  60. methods: {
  61. init() {
  62. Promise.all([
  63. getMarket({
  64. dataType: this.data.select[this.data.select_act].type,
  65. indexTime: this.data.array.index,
  66. tableType: 7
  67. }),
  68. ]).then((res: any[]) => {
  69. let li = res[0] || [], key = this.data.select[this.data.select_act].proportionType, total = 0;
  70. li.map((v:any)=>{
  71. total += Number(v[key])
  72. })
  73. this.setData({
  74. DayList: li.map((v:any)=>{
  75. v.type = '0';
  76. v[key] = Number(v[key] || 0)
  77. v.value = v[key] / total
  78. return v
  79. }),
  80. onInitChart: line.bind(this),
  81. })
  82. })
  83. },
  84. upData() {
  85. let channelItem = this.data.channel;
  86. Promise.all([
  87. getMarket({
  88. dataType: this.data.select[this.data.select_act].type,
  89. indexTime: this.data.array.index,
  90. tableType: 7
  91. }),
  92. ]).then((res: any[]) => {
  93. let li = res[0] || [], key = this.data.select[this.data.select_act].proportionType, total = 0;
  94. li.map((v:any)=>{
  95. total += Number(v[key])
  96. })
  97. this.setData({
  98. DayList: li.map((v:any)=>{
  99. v.type = '0';
  100. v[key] = Number(v[key] || 0)
  101. v.value = v[key] / total
  102. return v
  103. }),
  104. },()=>{
  105. upLine.bind(this)()
  106. })
  107. })
  108. },
  109. channelChange(event: wxPicker) {
  110. this.setData({
  111. select_act: Number(event.detail.value)
  112. }, () => this.upData())
  113. },
  114. }
  115. })
  116. }