5732696f9f6add7245195a8e59a7193f39c7e52a.svn-base 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <div>
  3. <v-chart :forceFit="true" :height="height" :data="data">
  4. <v-coord type="rect" direction="LB" />
  5. <v-tooltip />
  6. <v-legend />
  7. <v-axis dataKey="State" :label="label" />
  8. <v-stack-bar position="State*流程数量" color="流程状态" />
  9. </v-chart>
  10. </div>
  11. </template>
  12. <script>
  13. const DataSet = require('@antv/data-set');
  14. export default {
  15. name: 'StackBar',
  16. props: {
  17. dataSource: {
  18. type: Array,
  19. required: true,
  20. default: () => [
  21. { 'State': '请假', '流转中': 25, '已归档': 18 },
  22. { 'State': '出差', '流转中': 30, '已归档': 20 },
  23. { 'State': '加班', '流转中': 38, '已归档': 42},
  24. { 'State': '用车', '流转中': 51, '已归档': 67}
  25. ]
  26. },
  27. height: {
  28. type: Number,
  29. default: 254
  30. }
  31. },
  32. data() {
  33. return {
  34. label: { offset: 12 }
  35. }
  36. },
  37. computed: {
  38. data() {
  39. const dv = new DataSet.View().source(this.dataSource);
  40. dv.transform({
  41. type: 'fold',
  42. fields: ['流转中', '已归档'],
  43. key: '流程状态',
  44. value: '流程数量',
  45. retains: ['State'],
  46. });
  47. return dv.rows;
  48. }
  49. }
  50. }
  51. </script>