ant design vue echarts 使用 工具箱不显示解决

需求:列表里弹出modal modal中装关系图
这个有现成的组件 但是有冲突的问题 所以还是直接引用

  • 安装:
yarn add echarts
  • main.js:
import Echartsfrom 'echarts'

Vue.prototype.$echarts = Echarts
  • 列表:
<template>
  <a-card :bordered="false">
    <div class="table-page-search-wrapper">
      <a-form layout="inline">
...
            </a-form-item>
          </a-col>
          <a-col :md="8" :sm="24">
            <span class="table-page-search-submitButtons">
              <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
              <a-button style="margin-left: 8px" @click="() => queryParam = {}">重置</a-button>
            </span>
          </a-col>
        </a-row>
      </a-form>
    </div>
    <div class="table-operator">
      <a-button v-if="addEnable" type="primary" icon="plus" @click="$refs.modal.add()">新建</a-button>
      <a-dropdown v-if="removeEnable&&selectedRowKeys.length > 0">
        <a-button type="danger" icon="delete" @click="delByIds(selectedRowKeys)">删除</a-button>
      </a-dropdown>
    </div>
    <s-table
      size="default"
      ref="table"
      rowKey="id"
      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
      :columns="columns"
      :data="loadData"
    >
      <span slot="action" slot-scope="text, record">
        <a v-if="editEnabel" @click="entity(record)">实体抽取</a>
      </span>
    </s-table>
    <nlpWeChat-modal ref="modal" @ok="handleOk" />
    <NlpWeChatEntity-modal ref="entityModal" /> 
  </a-card>
</template>

<script>
import { STable } from '@/components'
import { getNlpArticleList, delNlpArticle } from '@/api/caster/weChat'
import NlpWeChatEntityModal from './modules/NlpWeChatEntityModal.vue'
export default {
  name: 'TableList',
  components: {
    STable,
    NlpWeChatEntityModal
  },
  data () {
    return {
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 }
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 }
      },
      form: this.$form.createForm(this),
      mdl: {},
      // 高级搜索 展开/关闭
      advanced: false,
      // 查询参数
      queryParam: {},
      // 表头
      columns: [
       ...
        {
          title: '操作',
          width: '200px',
          dataIndex: 'action',
          scopedSlots: { customRender: 'action' }
        }
      ],
      // 加载数据方法 必须为 Promise 对象
      loadData: parameter => {
        return getNlpArticleList(Object.assign(parameter, this.queryParam))
      }

    }
  },
  filters: {
  },
  created () {
  },
  methods: {
    entity (record) {
      this.$refs.entityModal.entityEchartInit(record)
      this.$nextTick(() => { this.$refs.entityModal.test() })
    },
 
  watch: {
    /*
      'selectedRows': function (selectedRows) {
        this.needTotalList = this.needTotalList.map(item => {
          return {
            ...item,
            total: selectedRows.reduce( (sum, val) => {
              return sum + val[item.dataIndex]
            }, 0)
          }
        })
      }
      */
  }
}
</script>

  • 关系图modal: NlpWeChatEntityModal.vue
<template>
  <a-modal
    title="实体抽取"
    style="top: 20px;"
    :width="800"
    v-model="visible"
    @ok="handleSubmit"
  >
    <!--    <EchartsEntity ref="echartsEntity" />-->
    <div class="echarts" id="echarts-force-chart" :style="{width:'400px',height:'400px'}"></div>

  </a-modal>
</template>
<script>
// import EchartsEntity from './EchartsEntity.vue'

export default {
  name: 'NlpWeChatEntityModal',
  props: {
  },
  components: {
    // EchartsEntity
  },
  data () {
    return {
      visible: false
    }
  },
  beforeCreate () {
  },
  created () {
  },
  mounted () {
  },
  methods: {
    handleSubmit (e) {
      e.preventDefault()
      this.visible = false
    },
    entityEchartInit (record) {
      this.visible = true
    },
    test () {
      const forceChart = this.$echarts.init(document.getElementById('echarts-force-chart'))
      var nodes = [
        { category: 0, name: '东旭蓝天', 'value': 3, 'size': 30 },
        { category: 1, name: '国信证券经', 'value': 1, 'size': 10 },
        { category: 1, name: '海通证券研', 'value': 1, 'size': 10 },
        { category: 1, name: '招商证券', 'value': 1, 'size': 10 }
      ]
      // source(起点,对应上面的name),target(终点,对应上面的name),value(起点到终点的距离,值越大,权重越大,距离越短),label(显示该关系边标签,用来说明两节点之间的关系)。
      var links = [
        { 'source': '东旭蓝天', 'target': '国信证券经', 'flow': '2017-05-22' },
        { 'source': '东旭蓝天', 'target': '海通证券研', 'flow': '2017-05-23' },
        { 'source': '东旭蓝天', 'target': '招商证券', 'flow': '2017-05-24' }
      ]
      // 定义节点格式
      nodes.forEach(function (node) {
        // node.itemStyle = null;//
        node.symbolSize = node.size// 强制指定节点的大小
        // node.draggable = true;//是否可拖拽
      })
      const option = {
        // 图表标题
        title: {
          text: '调研关系图', // 正标题
          subtext: '示例', // 附标题
          top: 'bottom', // 垂直位置
          left: 'middle'// 水平位置
          // 正标题样式
          // textStyle: {
          //     fontSize:24
          // },
          // 副标题样式
          // subtextStyle: {
          //     fontSize:12,
          //     color:"red"
          // }
        },
        // 数据提示框配置
        tooltip: {
          trigger: 'item', // 触发方式,有'item'、'axis'。
          // 'item':数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
          // 'axis':坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
          // 设置提示框格式
          // ormatter函数里面的params是整个数据,提示框在节点处要显示有关节点的数据,在关系边的时候显示关系边的数据,所以在这里要做个判断,判断好之后,就返回你先要显示的数据格式。
          formatter: function (params) {
            if (params.data.flow) {
              return params.data.flow // 边上提示连接信息
            } else {
              return params.data.name + ':' + params.data.value + '次' // 节点提示节点信息
            }
          }
        },
        // tooltip: {

        // formatter: function (x) {
        // return x.data.name;//节点和边都显示name属性
        //   }
        // },
        // 自定义提示框
        // tooltip: {
        //     trigger: 'axis',
        //     formatter: function (datas) {
        //         var res = datas[0].name + '<br/>'
        //         for (var i = 0, length = datas.length; i < length; i++) {
        //            res += datas[i].seriesName + ':'
        //                + datas[i].data.originValue + '<br/>'
        //          }
        //         return res
        //     }
        // },
        // 工具箱配置
        // toolbox: {
        //   show: true, // 是否显示工具箱
        //   right: '20%',
        //   feature: {
        //     magicType: ['line', 'bar'], // 图表类型切换,当前仅支持直角系下的折线图、柱状图转换,上图icon左数6/7,分别是切换折线图,切换柱形图
        //     restore: true, // 还原,复位原始图表,
        //     saveAsImage: true // 保存为图片,
        //   }
        // },
        toolbox: {
          show: true, // 是否显示工具栏组件
          orient: 'vertical', // 工具栏icon的布局朝向
          itemSize: 18, // 工具栏icon的大小
          itemGap: 20, // item之间的间距
          right: 20, // toolbox的定位位置
          feature: {
            saveAsImage: { show: true }, // 导出图片
            dataView: { show: true }, // 数据视图
            magicType: { // 动态类型切换
              type: [ 'line', 'bar' ]
            },
            dataZoom: { show: true }, // 数据区域缩放
            restore: { show: true } // 重置
          }
        },
        // 图例配置
        legend: [{
          // x: 'left',//图例位置
          data: ['调研机构', '接待公司']// 关系图中需要与series中的categories的name保持一致
        }],
        // sereis的数据: 用于设置图表数据之用
        series: [{
          type: 'graph',
          layout: 'force', // layout为force,layout可以选择none、circular和force
          // 'none' 不采用任何布局,使用节点中提供的 x, y 作为节点的位置。
          // 'circular' 采用环形布局。
          // 'force' 采用力引导布局。
          symbolSize: 20,
          edgeSymbol: ['circle', 'arrow'], /// 边两端的标记类型,可以是一个数组分别指定两端,也可以是单个统一指定。默认不显示标记[ 'none', 'none' ],常见的可以设置为箭头
          edgeSymbolSize: [4, 8], // 边两端的标记大小,可以是一个数组分别指定两端,也可以是单个统一指定。
          // edgeLabel: {//线条的边缘标签
          //             normal: {
          //                 show: true,
          //                 formatter: function (x) {
          //                     return x.data.name;
          //                 }
          //             }
          //         },
          // edgeLabel: {
          //     normal: {
          //         textStyle: {
          //             fontSize: 20
          //         }
          //     }
          // },

          animation: false, // 是否开启动画
          roam: true, // 是否开启滚轮缩放和拖拽漫游,默认为false(关闭)
          label: { // 图形上的文本标签
            normal: {
              show: true, // 是否显示标签。
              position: 'right'/// 标签相对于节点标签的位置
              // textStyle : { //标签的字体样式
              //     color : '#cde6c7', //字体颜色
              //     fontStyle : 'normal',//文字字体的风格 'normal'标准 'italic'斜体 'oblique' 倾斜
              //     fontWeight : 'bolder',//'normal'标准'bold'粗的'bolder'更粗的'lighter'更细的或100 | 200 | 300 | 400...
              //     fontFamily : 'sans-serif', //文字的字体系列
              //     fontSize : 12, //字体大小
              //  }
              // 回调函数,你期望节点标签上显示什么
              // formatter: function(params){
              //     return params.data.label;
              //  },
              // }
            },
            emphasis: {// 高亮状态

            }
          },
          draggable: true, // 指示节点是否可以拖动
          focusNodeAdjacency: true, // 当鼠标移动到节点上,突出显示节点以及节点的边和邻接节点
          data: nodes, // 节点数据
          edges: links, // 边数据
          categories: [

            {
              name: '调研机构'
            },
            {
              name: '接待公司'
            }
          ],
          force: { // 力引导图基本配置
            // initLayout: ,//力引导的初始化布局,默认使用xy轴的标点
            repulsion: 100, // 节点之间的斥力因子。支持数组表达斥力范围,值越大斥力越大。
            // gravity : 0.03,//节点受到的向中心的引力因子。该值越大节点越往中心点靠拢。
            edgeLength: 120// 边的两个节点之间的距离,这个距离也会受 repulsion。[10, 50] 。值越小则长度越长
            // layoutAnimation : true
            // 因为力引导布局会在多次迭代后才会稳定,这个参数决定是否显示布局的迭代动画,在浏览器端节点数据较多(>100)的时候不建议关闭,布局过程会造成浏览器假死。
          },

          lineStyle: {// 关系边的线条样式。
            normal: {
              opacity: 0.9, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。默认0.5
              // type : 'dotted', //线的类型 'solid'(实线)'dashed'(虚线)'dotted'(点线)
              width: 2,
              // color: 'target',//决定边的颜色是与起点相同还是与终点相同
              curveness: 0// //线条的曲线程度,从0到1

            }
          }
        }]
      }

      forceChart.setOption(option)
    }
  },
  watch: {

  }
}
</script>

echarts 遇到了工具箱不显示问题 像上面那么些就可以啦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 基于Vue的一些资料 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 element★...
    尝了又尝阅读 1,154评论 0 1
  • 前言 公司的项目中需要对数据做可视化处理,高级点的D3.js目前还没接触到,因此选用了大众化的Echarts, 在...
    Mr_Treasure阅读 165,506评论 8 44
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    流觞小菜鸟阅读 1,764评论 2 8
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    小姜先森o0O阅读 9,489评论 0 72
  • UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 m...
    随行者pgl阅读 3,326评论 0 15