html引入vue组件,vue组件中使用echarts

川长思鸟来 2023-07-13 03:45 92阅读 0赞

将图设置代码写在vue的methods中,然后在mounted中调用

  • 得到echarts图

    var myChart = echarts.init(document.getElementById(‘pushed’));

  • 完整代码

    <!DOCTYPE html>














    1. <meta charset="UTF-8">
    2. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    3. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    4. <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">


    1. <div class="dashboard-editor-container">
    2. <el-row class="box">
    3. <div class="box-body box-form">
    4. <el-form :inline="true" :model="formInline" size="mini">
    5. <div class="conditions pull-left" style="width: calc(100% - 150px);">
    6. <el-form-item label="统计时段">
    7. <el-date-picker v-model="formInline.time" type="daterange" align="right" value-format="yyyy-MM-dd" :editable="false" @change="dateChange" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions">
    8. </el-date-picker>
    9. </el-form-item>
    10. <el-form-item label="知识使用情况">
    11. <el-select size="mini" v-model="formInline.useSituation" placeholder="知识使用情况">
    12. <template v-for="item in useSituations">
    13. <el-option :label="item.name" :value="item.code"></el-option>
    14. </template>
    15. </el-select>
    16. </el-form-item>
    17. <el-form-item label="知识体系">
    18. <el-select size="mini" v-model="formInline.system" placeholder="知识体系">
    19. <template v-for="item in systems">
    20. <el-option :label="item.name" :value="item.code"></el-option>
    21. </template>
    22. </el-select>
    23. </el-form-item>
    24. </div>
    25. <div class="action pull-right">
    26. <el-form-item>
    27. <el-button type="primary" @click="onSubmit"><i class="el-icon-search"></i> 开始分析</el-button>
    28. </el-form-item>
    29. </div>
    30. </el-form>
    31. </div>
    32. </el-row>
  1. <el-row class="box">
  2. <div class="box-header">
  3. <h3 class="box-title"> 知识使用占比</h3>
  4. </div>
  5. <div class="box-body">
  6. <div>
  7. <div id="pushed" style="width: 630px;height:300px;float: left;margin-right:30px"></div>
  8. <div id="adopted" style="width: 630px;height:300px;float: left;"></div>
  9. </div>
  10. </div>
  11. </el-row>
  12. </div>
  13. </div>
  14. <script src="https://unpkg.com/vue@2.5.17/dist/vue.min.js"></script>
  15. <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  16. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  17. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
  18. <script>
  19. var app = new Vue({
  20. el: "#app",
  21. components: {
  22. },
  23. data: {
  24. minDate: null,
  25. maxDate: null,
  26. pickerOptions: {
  27. onPick: (date) => {
  28. this.maxDate = date.maxDate;
  29. this.minDate = date.minDate;
  30. },
  31. disabledDate: (time) => {
  32. if (null != this.minDate) {
  33. let min = new Date(this.minDate.getTime());
  34. let max = new Date(this.minDate.getTime());
  35. min.setFullYear(this.minDate.getFullYear() - 1);
  36. max.setFullYear(this.minDate.getFullYear() + 1);
  37. return time.getTime() > max || time.getTime() < min;
  38. }
  39. return false;
  40. },
  41. shortcuts: [{
  42. text: '昨日',
  43. onClick(picker) {
  44. const end = new Date()
  45. const start = new Date()
  46. start.setTime(start.getTime() - 3600 * 1000 * 24)
  47. end.setTime(end.getTime() - 3600 * 1000 * 24)
  48. picker.$emit('pick', [start, end])
  49. }
  50. }, {
  51. text: '本周',
  52. onClick(picker) {
  53. const end = new Date()
  54. const start = new Date()
  55. let week = start.getDay() || 7;
  56. start.setTime(start.getTime() - 3600 * 1000 * 24 * (week - 1))
  57. picker.$emit('pick', [start, end])
  58. }
  59. }, {
  60. text: '上周',
  61. onClick(picker) {
  62. const end = new Date()
  63. const start = new Date()
  64. let week = start.getDay() || 7;
  65. start.setTime(start.getTime() - 3600 * 1000 * 24 * (week - 1))
  66. end.setTime(start.getTime() - 3600 * 1000 * 24);
  67. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
  68. picker.$emit('pick', [start, end])
  69. }
  70. }, {
  71. text: '上月',
  72. onClick(picker) {
  73. const end = new Date()
  74. const start = new Date()
  75. start.setMonth(start.getMonth() - 1)
  76. start.setTime(start.getTime() - 3600 * 1000 * 24 * (start.getDate() - 1))
  77. let d = new Date(start.getFullYear(), (start.getMonth() + 1), 0);
  78. let day = d.getDate();
  79. end.setTime(start.getTime() + 3600 * 1000 * 24 * (day - 1))
  80. picker.$emit('pick', [start, end])
  81. }
  82. }, {
  83. text: '本月',
  84. onClick(picker) {
  85. const end = new Date()
  86. const start = new Date()
  87. start.setDate(1);
  88. picker.$emit('pick', [start, end])
  89. }
  90. }, {
  91. text: '今年',
  92. onClick(picker) {
  93. const end = new Date()
  94. const start = new Date()
  95. //start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 * 12)
  96. start.setMonth(0);
  97. start.setDate(1);
  98. picker.$emit('pick', [start, end])
  99. }
  100. }]
  101. },
  102. formInline: {
  103. time: [],
  104. useSituation: '',
  105. system: ''
  106. },
  107. useSituations: [
  108. {name:"已推送",code:"pushed"},
  109. {name:"已采纳",code:"adopted"},
  110. {name:"未采纳",code:"unAdopted"}
  111. ],
  112. systems: [
  113. {name:"知识体系1",code:"first"},
  114. {name:"知识体系2",code:"second"},
  115. {name:"知识体系3",code:"third"}
  116. ],
  117. reloadComponent: false
  118. },
  119. // 从数据库拿数据动态显示
  120. mounted() {
  121. //调用获取echarts的option的方法
  122. this.getPushedPie();
  123. this.getAdoptedPie();
  124. },
  125. methods: {
  126. getPushedPie() {
  127. // 基于准备好的dom,初始化echarts实例
  128. var myChart = echarts.init(document.getElementById('pushed'));
  129. var option = {// 指定图表的配置项和数据
  130. title: {
  131. text: '已推送占比',
  132. left: 'center'
  133. },
  134. legend: {
  135. orient: 'vertical',
  136. left: 'left',
  137. data: ['已推送','未推送']
  138. },
  139. tooltip: {
  140. trigger: 'item',
  141. formatter: '{a} <br/>{b} : {c} ({d}%)'
  142. },
  143. series: [
  144. {
  145. name: '知识使用占比',
  146. type: 'pie',
  147. radius: '55%',
  148. center: ['50%', '60%'],
  149. data: [
  150. {value: 15, name: '已推送'},
  151. {value: 11, name: '未推送'}
  152. ],
  153. emphasis: {
  154. itemStyle: {
  155. shadowBlur: 10,
  156. shadowOffsetX: 0,
  157. shadowColor: 'rgba(0, 0, 0, 0.5)'
  158. }
  159. }
  160. }
  161. ]
  162. };
  163. // 使用刚指定的配置项和数据显示图表。
  164. myChart.setOption(option);
  165. },
  166. getAdoptedPie() {
  167. // 基于准备好的dom,初始化echarts实例
  168. var myChart = echarts.init(document.getElementById('adopted'));
  169. var option = {// 指定图表的配置项和数据
  170. title: {
  171. text: '已采纳占比',
  172. left: 'center'
  173. },
  174. legend: {
  175. orient: 'vertical',
  176. left: 'left',
  177. data: ['已采纳','未采纳']
  178. },
  179. tooltip: {
  180. trigger: 'item',
  181. formatter: '{a} <br/>{b} : {c} ({d}%)'
  182. },
  183. series: [
  184. {
  185. name: '知识使用占比',
  186. type: 'pie',
  187. radius: '55%',
  188. center: ['50%', '60%'],
  189. data: [
  190. {value: 15, name: '已采纳'},
  191. {value: 11, name: '未采纳'}
  192. ],
  193. emphasis: {
  194. itemStyle: {
  195. shadowBlur: 10,
  196. shadowOffsetX: 0,
  197. shadowColor: 'rgba(0, 0, 0, 0.5)'
  198. }
  199. }
  200. }
  201. ]
  202. };
  203. // 使用刚指定的配置项和数据显示图表。
  204. myChart.setOption(option);
  205. }
  206. }
  207. }
  208. });
  209. <style rel="stylesheet/scss" lang="scss" scoped> .dashboard-editor-container { background-color: rgb(240, 242, 245); .chart-wrapper { background: #fff; padding: 16px 16px 0; margin-bottom: 32px; } } </style>
  210. </body>
  211. </html>

发表评论

表情:
评论列表 (有 0 条评论,92人围观)

还没有评论,来说两句吧...

相关阅读