index.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <div class="app-container">
  3. <el-row>
  4. <el-col :span="24" class="card-box">
  5. <el-card>
  6. <div slot="header"><span>搜索信息</span></div>
  7. <div class="el-table el-table--enable-row-hover el-table--medium">
  8. <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
  9. <el-form-item label="开始时间" prop="startTime">
  10. <el-date-picker clearable
  11. v-model="queryParams.startTime"
  12. type="date"
  13. value-format="yyyy-MM-dd"
  14. placeholder="开始时间">
  15. </el-date-picker>
  16. </el-form-item>
  17. <el-form-item label="结束时间" prop="endTime">
  18. <el-date-picker clearable
  19. v-model="queryParams.endTime"
  20. type="date"
  21. value-format="yyyy-MM-dd"
  22. placeholder="请选择结束时间">
  23. </el-date-picker>
  24. </el-form-item>
  25. <el-form-item>
  26. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  27. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  28. </el-form-item>
  29. </el-form>
  30. </div>
  31. </el-card>
  32. </el-col>
  33. <el-col :span="8" class="card-box">
  34. <el-card>
  35. <div slot="header"><span>代金券发放比例</span></div>
  36. <div class="el-table el-table--enable-row-hover el-table--medium">
  37. <div ref="activities" style="height: 550px" />
  38. </div>
  39. </el-card>
  40. </el-col>
  41. <el-col :span="16" class="card-box">
  42. <el-card>
  43. <div slot="header">
  44. <span>代金券发放数</span>
  45. </div>
  46. <div ref="usedmemory" style="height: 550px" />
  47. </el-card>
  48. </el-col>
  49. </el-row>
  50. </div>
  51. </template>
  52. <script>
  53. import { issuedCountTyType } from "@/api/stat/index";
  54. import echarts from "echarts";
  55. export default {
  56. name: "Cache",
  57. dicts: ['user_tags'],
  58. data() {
  59. return {
  60. activities: null,
  61. // cache信息
  62. cache: [],
  63. queryParams: {},
  64. dateRange: [],
  65. userData: []
  66. }
  67. },
  68. mounted() {
  69. this.handleQuery();
  70. },
  71. methods: {
  72. // 搜索
  73. handleQuery() {
  74. this.$modal.loading("正在加载活动统计数据,请稍候!");
  75. this.getActivity();
  76. this.getUser();
  77. },
  78. // 重置
  79. resetQuery() {
  80. this.dateRange = [];
  81. this.resetForm("queryForm");
  82. this.handleQuery();
  83. },
  84. async getActivity() {
  85. const res = await issuedCountTyType(this.queryParams);
  86. const data = res?.data;
  87. const myChart = echarts.init(this.$refs.activities, 'macarons');
  88. const option = {
  89. tooltip: {
  90. trigger: 'item',
  91. formatter: "{b}: {c} ({d}%)",
  92. },
  93. series: [
  94. {
  95. type: "pie",
  96. radius: '50%',
  97. center: ["50%", "38%"],
  98. data,
  99. animationEasing: "cubicInOut",
  100. animationDuration: 1000,
  101. }
  102. ]
  103. };
  104. myChart.setOption(option);
  105. this.$modal.closeLoading();
  106. },
  107. async getUser() {
  108. const res = await issuedCountTyType(this.queryParams);
  109. const data = res?.data;
  110. const myChart = echarts.init(this.$refs.usedmemory);
  111. const option = {
  112. xAxis: {
  113. type: 'category',
  114. data: (() => {
  115. let list = [];
  116. data.map((item) => {
  117. list.push(item.name);
  118. });
  119. return list;
  120. })(),
  121. },
  122. yAxis: {
  123. type: 'value'
  124. },
  125. series: [
  126. {
  127. data,
  128. type: 'bar',
  129. label: {
  130. show: true,
  131. position: 'top'
  132. },
  133. itemStyle: {
  134. normal: {
  135. color: function(params) {
  136. return '#3f48cc'
  137. }
  138. }
  139. }
  140. }
  141. ]
  142. };
  143. myChart.setOption(option);
  144. this.$modal.closeLoading();
  145. }
  146. }
  147. };
  148. </script>