index.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. namespace ruanzhifenbu {
  2. const { line, upLine, clearchart } = 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. detached: function() {
  30. // 在组件实例被从页面节点树移除时执行
  31. clearchart()
  32. },
  33. /**
  34. * 组件的初始数据
  35. */
  36. data: {
  37. onInitChart: undefined,
  38. DayList: {},
  39. select_act: 0,
  40. select: [
  41. {
  42. text: "时长",
  43. proportionType: "timeSize",
  44. type: 2,
  45. unit: "分",
  46. },
  47. {
  48. text: "频次",
  49. proportionType: "pinci",
  50. type: 1,
  51. unit: "次",
  52. },
  53. {
  54. text: "客户数",
  55. proportionType: "custom",
  56. type: 4,
  57. unit: "个",
  58. },
  59. ],
  60. },
  61. /**
  62. * 组件的方法列表
  63. */
  64. methods: {
  65. init() {
  66. Promise.all([
  67. getMarket({
  68. dataType: this.data.select[this.data.select_act].type,
  69. indexTime: this.data.array.index,
  70. tableType: 7
  71. }),
  72. ]).then((res: any[]) => {
  73. let li = res[0] || [], key = this.data.select[this.data.select_act].proportionType, total = 0;
  74. li.map((v:any)=>{
  75. total += Number(v[key])
  76. })
  77. this.setData({
  78. DayList: li.map((v:any)=>{
  79. v.type = '0';
  80. v[key] = Number(v[key] || 0)
  81. v.value = v[key] / total
  82. return v
  83. }),
  84. onInitChart: line.bind(this),
  85. })
  86. })
  87. },
  88. upData() {
  89. let channelItem = this.data.channel;
  90. Promise.all([
  91. getMarket({
  92. dataType: this.data.select[this.data.select_act].type,
  93. indexTime: this.data.array.index,
  94. tableType: 7
  95. }),
  96. ]).then((res: any[]) => {
  97. let li = res[0] || [], key = this.data.select[this.data.select_act].proportionType, total = 0;
  98. li.map((v:any)=>{
  99. total += Number(v[key])
  100. })
  101. this.setData({
  102. DayList: li.map((v:any)=>{
  103. v.type = '0';
  104. v[key] = Number(v[key] || 0)
  105. v.value = v[key] / total
  106. return v
  107. }),
  108. },()=>{
  109. upLine.bind(this)()
  110. })
  111. })
  112. },
  113. channelChange(event: wxPicker) {
  114. this.setData({
  115. select_act: Number(event.detail.value)
  116. }, () => this.upData())
  117. },
  118. }
  119. })
  120. }