- 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);
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> 调控区域
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="60"
data-icon="changzhan">
<span class="icon iconfont icon-xingzhuang2"></span> 厂站
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="67"
data-icon="dianlibianyaqi">
<span class="icon iconfont icon-bianyaqiyunhangpingjia"></span> 电力变压器
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="68"
data-icon="dianlibianyaqiraozu">
<span class="icon iconfont icon-bianyaqi1"></span> 电力变压器绕组
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="69"
data-icon="busbar">
<span class="icon iconfont icon-dituleixianlu"></span> 母线
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="70"
data-icon="jiaoliuxianduan">
<span class="icon iconfont icon-gongjiaoxianlu"></span> 交流线段
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="71"
data-icon="jiaoliuxianluduandian">
<span class="icon iconfont icon-xianlu"></span> 交流线路端点
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="72"
data-icon="dianlifuhexianlu">
<span class="icon iconfont icon-fuhefenxi"></span> 电力负荷线路
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="77"
data-icon="fadianjizu">
<span class="icon iconfont icon-fadianji"></span> 发电机组
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="75"
data-icon="binglianbuchangqi">
<span class="icon iconfont icon-lianjie_"></span> 并联补偿器
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="76"
data-icon="chuanlianbuchangqi">
<span class="icon iconfont icon-dibudaohanglan-"></span> 串联补偿器
</div>
<div class="draggable" draggable="true" data-category="powerGridData" data-objid="80"
data-icon="xitongliangce">
<span class="icon iconfont icon-celiang"></span> 系统量测
</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