76d4ca4c061f3d2019976c92d20fac2ddb8758c3.svn-base 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <div>
  3. <pie
  4. v-if="graphType === 'pie'"
  5. :title="title?head.name:''"
  6. @click="handleChartClick(arguments,'pie')"
  7. :dataSource="chartData"
  8. :field="head.groupField.split(',')[0]"
  9. :xField="head.xaxisField"
  10. >
  11. </pie>
  12. <pie-multi-storey
  13. v-if="graphType === 'PieMultiStorey'"
  14. :title="title?head.name:''"
  15. @click="handleChartClick(arguments,'pie')"
  16. :dataSource="chartData"
  17. :field="head.groupField.split(',')"
  18. :xField="head.xaxisField"
  19. >
  20. </pie-multi-storey>
  21. <bar-multid
  22. v-else-if="graphType === 'bar'"
  23. @click="handleChartClick(arguments,'bar')"
  24. :title="title?head.name:''"
  25. :dataSource="chartData"
  26. :xField="head.xaxisField"
  27. :yField="head.isGroup?'':head.yaxisField"
  28. :fields="head.groupField.split(',')"
  29. :aliases="aliases"
  30. >
  31. </bar-multid>
  32. <bar-stack
  33. v-else-if="graphType === 'barStack'"
  34. @click="handleChartClick(arguments,'bar')"
  35. :title="title?head.name:''"
  36. :dataSource="chartData"
  37. :xField="head.xaxisField"
  38. :yField="head.isGroup?'':head.yaxisField"
  39. :fields="head.groupField.split(',')"
  40. :aliases="aliases"
  41. >
  42. </bar-stack>
  43. <transverse-bar-muiltid
  44. v-else-if="graphType === 'transverseBarMuiltid'"
  45. @click="handleChartClick(arguments,'transverseBar')"
  46. :title="title?head.name:''"
  47. :dataSource="chartData"
  48. :xField="head.xaxisField"
  49. :yField="head.isGroup?'':head.yaxisField"
  50. :fields="head.groupField.split(',')"
  51. :aliases="aliases"
  52. >
  53. </transverse-bar-muiltid>
  54. <line-chart-multid
  55. v-else-if="graphType === 'line'"
  56. @click="handleChartClick(arguments,'line')"
  57. :title="title?head.name:''"
  58. :dataSource="chartData"
  59. :xField="head.xaxisField"
  60. :yField="head.isGroup?'':head.yaxisField"
  61. :fields="head.groupField.split(',')"
  62. :aliases="aliases"
  63. ></line-chart-multid>
  64. <radar
  65. v-else-if="graphType === 'radar'"
  66. @click="handleChartClick(arguments,'radar')"
  67. :title="title?head.name:''"
  68. :dataSource="chartData"
  69. :fields="head.groupField.split(',')"
  70. :xField="head.xaxisField"
  71. :aliases="aliases"
  72. >
  73. </radar>
  74. <funnel
  75. v-else-if="graphType === 'funnel'"
  76. @click="handleChartClick(arguments,'funnel')"
  77. :title="title?head.name:''"
  78. :dataSource="chartData"
  79. :field="head.groupField.split(',')[0]"
  80. :xField="head.xaxisField"
  81. >
  82. </funnel>
  83. </div>
  84. </template>
  85. <script>
  86. import Pie from '@/components/chart/Pie'
  87. import BarMultid from '@/components/chart/BarMultid'
  88. import BarStack from '@/components/chart/BarStack'
  89. import LineChartMultid from '@/components/chart/LineChartMultid'
  90. import TransverseBarMuiltid from '@/components/chart/TransverseBarMuiltid'
  91. import Radar from '@/components/chart/Radar'
  92. import Funnel from '@/components/chart/Funnel'
  93. import PieMultiStorey from '@/components/chart/PieMultiStorey'
  94. export default {
  95. name: 'Chart',
  96. components: {
  97. Pie,
  98. BarMultid,
  99. LineChartMultid,
  100. TransverseBarMuiltid,
  101. Radar,
  102. Funnel,
  103. BarStack,
  104. PieMultiStorey
  105. },
  106. props: ['chartData', 'head', 'graphType', 'title', 'aliases'],
  107. methods: {
  108. handleChartClick(msg, type) {
  109. if (this.head.extendJs) {
  110. this.chartClick(type, msg)
  111. }
  112. },
  113. chartClick(type, msg) {
  114. var onClick = {}
  115. eval(this.head.extendJs)
  116. if (onClick && onClick[type]) {
  117. onClick[type].call(this, msg)
  118. }
  119. }
  120. }
  121. }
  122. </script>
  123. <style scoped>
  124. </style>