vue 使用 gojs

本文介绍了如何使用Vue创建一个项目并集成GoJS库。通过`vue create`初始化Vue项目,接着安装Element UI,然后引入GoJS,实现页面代码中图形编辑功能。
摘要由CSDN通过智能技术生成
  • vue create gojs-vue
  • npm i -S element-ui
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
  • 引入gojs
npm install gojs --save

import gojs from 'gojs'
Vue.prototype.go = gojs

页面代码

<template>
    <div>
        <el-col :span="4">
            <el-card>数据对象</el-card>
            <div class="palettezone" style=" width: 110px;margin-left: 15px">
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="57"
                     data-icon="diaokongquyu">
                    <span class="icon iconfont icon-quyuguanli"></span>&nbsp;调控区域
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="60"
                     data-icon="changzhan">
                    <span class="icon iconfont icon-xingzhuang2"></span>&nbsp;厂站
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="67"
                     data-icon="dianlibianyaqi">
                    <span class="icon iconfont icon-bianyaqiyunhangpingjia"></span>&nbsp;电力变压器
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="68"
                     data-icon="dianlibianyaqiraozu">
                    <span class="icon iconfont icon-bianyaqi1"></span>&nbsp;电力变压器绕组
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="69"
                     data-icon="busbar">
                    <span class="icon iconfont icon-dituleixianlu"></span>&nbsp;母线
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="70"
                     data-icon="jiaoliuxianduan">
                    <span class="icon iconfont icon-gongjiaoxianlu"></span>&nbsp;交流线段
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="71"
                     data-icon="jiaoliuxianluduandian">
                    <span class="icon iconfont icon-xianlu"></span>&nbsp;交流线路端点
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="72"
                     data-icon="dianlifuhexianlu">
                    <span class="icon iconfont icon-fuhefenxi"></span>&nbsp;电力负荷线路
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="77"
                     data-icon="fadianjizu">
                    <span class="icon iconfont icon-fadianji"></span>&nbsp;发电机组
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="75"
                     data-icon="binglianbuchangqi">
                    <span class="icon iconfont icon-lianjie_"></span>&nbsp;并联补偿器
                </div>
                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="76"
                     data-icon="chuanlianbuchangqi">
                    <span class="icon iconfont icon-dibudaohanglan-"></span>&nbsp;串联补偿器
                </div>

                <div class="draggable" draggable="true" data-category="powerGridData" data-objid="80"
                     data-icon="xitongliangce">
                    <span class="icon iconfont icon-celiang"></span>&nbsp;系统量测
                </div>
            </div>
        </el-col>
        <el-col :span="20" :lg="20" :xl="20" style="padding-left: 10px;float: left">
            <el-tabs v-model="activeName">
                <el-tab-pane label="GOJS画布" name="first">
                    <el-card>
                        <el-button size="small" icon="el-icon-circle-plus-outline">新建任务</el-button>
                        <el-card
                                style="z-index: 100;height: 370px"
                                ref="topTable"
                        >
                            <div :id="idName" class="myDiagram"></div>
                        </el-card>
                    </el-card>
                </el-tab-pane>
            </el-tabs>
        </el-col>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                activeName: 'first',
                idName: "myDiagramDiv1",
                myDiagram: {}, //画布对象
                nodeObjTemp: {},
                keyValueFalg: 0,
            }
        },
        mounted() {
            //初始化画布
            this.init();
        },
        components: {},

        methods: {
            nodeDoubleClick(e, obj) {
                var part = obj.part;

            },
            newNode(category, loc, text, color, objid, classId, gid, className, pkCol, geo) {
                this.keyValueFalg++;
                if (category == "powerGridData") {//创建分组节点
                    this.nodeObjTemp = {
                        fromKey: "",
                        category: category,
                        objid: objid,
                        text: text,
                        loc: loc.x + " " + loc.y,
                        key: this.keyValueFalg,
                        color: color,
                        isGroup: true,
                        queryFields: "",
                        queryFieldsTemp: [],
                        isFilter: false,
                        queryCondition: "",
                        queryConditionTemp: {
                            powerGrid: [],
                            dataObject: {
                                isGroup: false,
                                objid: "",
                                key: "",
                                text: "数据对象",
                                fromKey: "",
                                isFilter: false,
                                group: this.keyValueFalg,
                                category: "Conditional",
                                queryCondition: "",
                                queryConditionTemp: {
                                    checkFlag: false,
                                    paramFlag: false,
                                    querySql: '',
                                    startTime: "",
                                    endTime: '',
                                    startField: "",
                                    endField: "",
                                    startParam: "",
                                    timeInterval: '',
                                    selectedtimeInterval: '',
                                    endParam: "",
                                    condition: [],
                                    sort: {
                                        field: "",
                                        type: ""
                                    }
                                },
                                queryFieldsTemp: [],
                                queryFields: ""
                            }
                        },
                        geo: geo //"earth"  "envelope"
                    }
                    //新增分组
                    this.myDiagram.startTransaction("new group");
                    this.myDiagram.model.addNodeData(this.nodeObjTemp);
                    this.myDiagram.commitTransaction("new group");
                    //新增电网对象
                    this.keyValueFalg++
                    let region = {
                        text: "调控区域", group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg, objid: 57,
                        queryConditionTemp: {isFilter: true, condition: [], xiandiaoConditionList: [],},
                        queryCondition: "",
                        queryFields: "region_name,gid",
                        tabFlag: 1, category: "Data", querySql: '',
                    }
                    this.keyValueFalg++
                    let subarea = {
                        text: "子控制区", group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg, objid: 82,
                        queryConditionTemp: {isFilter: true, condition: []},
                        queryCondition: "",
                        queryFields: "name,gid",
                        tabFlag: 1, category: "Data", querySql: '',
                    }
                    this.keyValueFalg++
                    let bvSubstation = {
                        text: "厂站基准电压", group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg, objid: 58,
                        queryConditionTemp: {isFilter: true, condition: []},
                        queryCondition: "",
                        queryFields: "bv_name,bv_gid",
                        tabFlag: 1, category: "Data", querySql: '',
                    }
                    this.keyValueFalg++
                    let substation = {
                        text: "厂站", group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg, objid: 60,
                        queryConditionTemp: {isFilter: false, condition: [],},
                        queryCondition: "",
                        queryFields: "substation_name,substation_gid",
                        tabFlag: 1, category: "Data", querySql: '',
                    }
                    this.keyValueFalg++
                    let powerTransformer = {
                        text: "变压器", group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg, objid: 67, queryCondition: "",
                        queryConditionTemp: {isFilter: false, condition: []},
                        queryFields: "",
                        tabFlag: 1, category: "Data", querySql: '',
                    }
                    this.keyValueFalg++
                    let transformerWinding = {
                        text: "变压器绕组", group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg, objid: 68, queryCondition: "",
                        queryConditionTemp: {
                            isFilter1: true,
                            condition1: ["高压侧", "中压侧", "低压侧"],
                            isFilter: false,
                            condition: []
                        },
                        queryFields: "",
                        tabFlag: 1, category: "Data", querySql: ''
                    }
                    this.keyValueFalg++
                    let generatingUnit = {
                        text: "发电机组",
                        group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg,
                        objid: 77,
                        queryCondition: "",
                        queryConditionTemp: {isFilter: false, condition: []},
                        queryFields: "",
                        tabFlag: 1, category: "Data",
                        querySql: '',
                    }
                    this.keyValueFalg++
                    let busbarSection = {
                        text: "母线",
                        group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg,
                        objid: 69,
                        queryCondition: "",
                        queryConditionTemp: {isFilter: false, condition: []},
                        queryFields: "",
                        tabFlag: 1, category: "Data",
                        querySql: '',
                    }
                    this.keyValueFalg++
                    let aClineSegment = {
                        text: "交流线段",
                        group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg,
                        objid: 70,
                        queryCondition: "",
                        queryConditionTemp: {isFilter: false, condition: []},
                        queryFields: "aclinesegment_gid,aclinesegment_name",
                        tabFlag: 1, category: "Data",
                        querySql: '',
                    }
                    this.keyValueFalg++
                    let aCLineEnd = {
                        text: "交流线路端点",
                        group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg,
                        objid: 71,
                        queryCondition: "",
                        queryConditionTemp: {isFilter: false, condition: []},
                        queryFields: "",
                        tabFlag: 1, category: "Data",
                        querySql: '',
                    }
                    this.keyValueFalg++
                    let energyConsumer = {
                        text: "电力负荷线路",
                        group: this.nodeObjTemp.key, isGroup: false,
                        key: this.keyValueFalg,
                        objid: 72,
                        queryCondition: "",
                        queryConditionTemp: {isFilter: false, condition: []},
                        queryFields: "",
                        tabFlag: 1, category: "Data",
                        querySql: '',
                    }
                    this.keyVa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值