|
@@ -7,16 +7,15 @@
|
|
|
<div class="sand-elements sand-elements-line">
|
|
|
<span>线条</span>
|
|
|
<div class="elements-row" >
|
|
|
- <!-- <img :src="edge.ImgUrl" v-for="edge in myEdges" :key="edge.key"
|
|
|
- @mousedown="edgeDragStart(edge,$event)" /> -->
|
|
|
<img src="~@/assets/icons/arrow.svg" :draggable="true" @dragstart="edgeDragStart('noArrowStraight',$event)" />
|
|
|
- <img src="~@/assets/img/chart_m/change.png" />
|
|
|
- <img src="~@/assets/img/chart_m/Group.png" />
|
|
|
- <img src="~@/assets/img/chart_m/Group_act.png" />
|
|
|
- <img src="~@/assets/img/chart_m/User.png" />
|
|
|
- <img src="~@/assets/img/chart_m/User_act.png" />
|
|
|
- <img src="~@/assets/img/chart_m/View.png" />
|
|
|
- <img src="~@/assets/img/chart_m/View_act.png" />
|
|
|
+ <img src="~@/assets/img/chart_m/change.png" :draggable="true" @dragstart="edgeDragStart('singleArrowStraight',$event)" />
|
|
|
+ <img src="~@/assets/img/chart_m/Group.png" :draggable="true" @dragstart="edgeDragStart('doubleArrowStraight',$event)"/>
|
|
|
+ <img src="~@/assets/img/chart_m/Group_act.png" :draggable="true" @dragstart="edgeDragStart('noArrowBend',$event)"/>
|
|
|
+ <img src="~@/assets/img/chart_m/User.png" :draggable="true" @dragstart="edgeDragStart('singleArrowBend',$event)"/>
|
|
|
+ <img src="~@/assets/img/chart_m/User_act.png" :draggable="true" @dragstart="edgeDragStart('doubleArrowBend',$event)"/>
|
|
|
+ <img src="~@/assets/img/chart_m/View.png" :draggable="true" @dragstart="edgeDragStart('noArrowBoundBend',$event)"/>
|
|
|
+ <img src="~@/assets/img/chart_m/View_act.png" :draggable="true" @dragstart="edgeDragStart('singleArrowBoundBend',$event)"/>
|
|
|
+ <img src="~@/assets/img/chart_m/View_act.png" :draggable="true" @dragstart="edgeDragStart('doubleArrowBoundBend',$event)"/>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="sand-elements sand-elements-shape">
|
|
@@ -36,20 +35,21 @@
|
|
|
<div class="sand-elements sand-elements-mind">
|
|
|
<span>思维导图</span>
|
|
|
<div class="elements-row-mind">
|
|
|
- <img src="~@/assets/icons/arrow.svg" />
|
|
|
- <img src="~@/assets/icons/arrow.svg" />
|
|
|
- <img src="~@/assets/icons/arrow.svg" />
|
|
|
- <img src="~@/assets/icons/arrow.svg" />
|
|
|
- <img src="~@/assets/icons/arrow.svg" />
|
|
|
- <img src="~@/assets/icons/arrow.svg" />
|
|
|
- <img src="~@/assets/icons/arrow.svg" />
|
|
|
+ <img src="~@/assets/img/totaladdgoodcount.png" :draggable="true" @dragstart="edgeDragStart('singleMindmap',$event)"/>
|
|
|
+ <img src="~@/assets/img/totalfavoritecount.png" :draggable="true" @dragstart="edgeDragStart('doubleMindmap',$event)"/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="风格" name="风格">
|
|
|
- 风格
|
|
|
+ <div class="sand-style-tab">
|
|
|
+ <img src="~@/assets/img/totalfavoritecount.png" :class="styleActive==1?'active':''"
|
|
|
+ @click="changeStyle(1)"/>
|
|
|
+ <img src="~@/assets/img/totaladdgoodcount.png" :class="styleActive==2?'active':''" @click="changeStyle(2)" />
|
|
|
+ <img src="~@/assets/img/fanscount.png" :class="styleActive==3?'active':''" @click="changeStyle(3)"/>
|
|
|
+ <img src="~@/assets/img/workscount.png" :class="styleActive==4?'active':''" @click="changeStyle(4)"/>
|
|
|
+ </div>
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</div>
|
|
@@ -97,9 +97,11 @@
|
|
|
<script>
|
|
|
import { myGraph } from '../common/gragh';
|
|
|
import { myNodes,myNodeOption } from '../common/node';
|
|
|
-import { myEdges } from '../common/edge';
|
|
|
+import { myEdgeOption } from '../common/edge';
|
|
|
import { Addon } from '@antv/x6'
|
|
|
import { configOpt } from '../common/toolConfig';
|
|
|
+import {setGraph,render} from "../common/mindmap"
|
|
|
+import {styleSettings} from "../common/toolConfig"
|
|
|
|
|
|
const { line} = configOpt;
|
|
|
export default {
|
|
@@ -109,10 +111,9 @@ const { line} = configOpt;
|
|
|
graph: null,
|
|
|
dnd:null,
|
|
|
initData: {},
|
|
|
- activeToolTabName:"元素库",
|
|
|
+ activeToolTabName:"风格",
|
|
|
addEdgeType:"",
|
|
|
- tx:0,
|
|
|
- ty:0
|
|
|
+ styleActive:1
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
@@ -125,15 +126,18 @@ const { line} = configOpt;
|
|
|
myNodes(){
|
|
|
return myNodes
|
|
|
},
|
|
|
- myEdges(){
|
|
|
- return myEdges
|
|
|
+ myEdgeOption(){
|
|
|
+ return myEdgeOption
|
|
|
}
|
|
|
},
|
|
|
mounted(){
|
|
|
this.init()
|
|
|
- console.log(document.getElementsByClassName('x6-graph-scroller-content')[0].clientWidth);
|
|
|
- document.getElementsByClassName('x6-graph-scroller-content')[0].addEventListener("dragover",this.edgeDragover)
|
|
|
- document.getElementsByClassName('x6-graph-scroller-content')[0].addEventListener("drop",this.edgeDrop)
|
|
|
+ document.getElementById('sand-mainBody-chart').addEventListener("dragover",this.edgeDragover)
|
|
|
+ document.getElementById('sand-mainBody-chart').addEventListener("drop",this.edgeDrop)
|
|
|
+ // console.log(document.getElementsByClassName('x6-graph-scroller-content')[0]);
|
|
|
+ // document.getElementsByClassName('x6-graph-scroller-content')[0].addEventListener("dragover",this.edgeDragover)
|
|
|
+ // document.getElementsByClassName('x6-graph-scroller-content')[0].addEventListener("drop",this.edgeDrop)
|
|
|
+
|
|
|
},
|
|
|
beforeDestroy(){
|
|
|
document.getElementById('sand-mainBody-chart').removeEventListener("dragover",this.edgeDragover)
|
|
@@ -151,11 +155,7 @@ const { line} = configOpt;
|
|
|
return true;
|
|
|
},
|
|
|
});
|
|
|
- // graph.on('translate', ({ tx, ty }) => {
|
|
|
- // this.tx = tx
|
|
|
- // this.ty = ty
|
|
|
- // console.log(tx, ty);
|
|
|
- // })
|
|
|
+ setGraph(graph)
|
|
|
},
|
|
|
dragStart(data,e) {
|
|
|
// console.log(data,e,"触发了")
|
|
@@ -167,7 +167,8 @@ const { line} = configOpt;
|
|
|
});
|
|
|
this.dnd.start(node,e);
|
|
|
},
|
|
|
- edgeDragStart(type){
|
|
|
+ edgeDragStart(type,e){
|
|
|
+ console.log(e);
|
|
|
this.addEdgeType = type
|
|
|
console.log(type,"触发了边")
|
|
|
},
|
|
@@ -180,65 +181,54 @@ const { line} = configOpt;
|
|
|
}
|
|
|
console.log(this.addEdgeType,e);
|
|
|
console.log(this.graph);
|
|
|
- // console.log(e.offsetX-this.tx,e.offsetY-this.ty);
|
|
|
- // return
|
|
|
- this.graph.addEdge({
|
|
|
- shape:'edge',
|
|
|
- // shape,
|
|
|
- // ...myNodeOption(key),
|
|
|
- // source: { x: 240, y: 40 },
|
|
|
- // source: { x: e.screenX-40, y: e.screenX-40 },
|
|
|
- // target: { x: e.screenY+40, y: e.screenY+40 },
|
|
|
- // source: { x: 0, y: 0 },
|
|
|
- // target: { x: 0 ,y: 80 },
|
|
|
- source: { x: e.offsetX, y: e.offsetY },
|
|
|
- target: { x: e.offsetX ,y: e.offsetY+80 },
|
|
|
- router: {
|
|
|
- name: 'normal',
|
|
|
- args: {
|
|
|
- padding: {
|
|
|
- left: 10,
|
|
|
+ let position = this.graph.clientToLocal({x:e.clientX,y:e.clientY})
|
|
|
+
|
|
|
+ if(this.addEdgeType.indexOf("Mindmap")!==-1){
|
|
|
+ //插入思维导图
|
|
|
+ console.log("插入思维导图");
|
|
|
+ render(position)
|
|
|
+ }else{
|
|
|
+ this.graph.addEdge({
|
|
|
+ shape:'edge',
|
|
|
+ ...this.myEdgeOption(this.addEdgeType,position.x,position.y)
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ },
|
|
|
+ changeStyle(activeNum){
|
|
|
+ this.$store.commit("sand/SET_CELL_STYLE",activeNum)
|
|
|
+ let styleData=styleSettings[activeNum-1]
|
|
|
+
|
|
|
+ let cells = this.graph.getCells()
|
|
|
+ // console.log(cells);
|
|
|
+
|
|
|
+ for (let i = 0; i < cells.length; i++) {
|
|
|
+ const element = cells[i];
|
|
|
+ console.log(element);
|
|
|
+ if(element.shape=="edge") continue
|
|
|
+ if(element.data.key == 'text'){
|
|
|
+ // element.attrs.text.fill=styleData.backgroundColor
|
|
|
+ element.setAttrs({
|
|
|
+ text:{
|
|
|
+ fill:styleData.backgroundColor
|
|
|
}
|
|
|
- }
|
|
|
- },
|
|
|
- attrs:{
|
|
|
- line:{
|
|
|
- stroke: line.color,
|
|
|
- strokeWidth: line.width,
|
|
|
- sourceMarker: false,//起始箭头
|
|
|
- targetMarker: false,//终止箭头
|
|
|
- }
|
|
|
- },
|
|
|
- connector: {
|
|
|
- name: 'normal',
|
|
|
- },
|
|
|
- // tools: {
|
|
|
- // items: [
|
|
|
- // {
|
|
|
- // name: 'vertices',
|
|
|
- // args: {
|
|
|
- // attrs: { fill: '#666' },
|
|
|
- // },
|
|
|
- // },
|
|
|
- // // {
|
|
|
- // // name: 'segments',
|
|
|
- // // args: {
|
|
|
- // // snapRadius: 20,
|
|
|
- // // attrs: {
|
|
|
- // // fill: '#444',
|
|
|
- // // },
|
|
|
- // // },
|
|
|
- // // },
|
|
|
- // ],
|
|
|
- // },
|
|
|
- // vertices: [{ x: 240, y: 140 }]
|
|
|
- });
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ element.setAttrs({
|
|
|
+ body:{
|
|
|
+ fill:styleData.backgroundColor
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.styleActive = activeNum
|
|
|
},
|
|
|
copySandHandle(){
|
|
|
|
|
|
},
|
|
|
saveChart(){
|
|
|
- console.log(this.myEdges);
|
|
|
+ console.log(this.myEdgeOption);
|
|
|
}
|
|
|
},
|
|
|
}
|
|
@@ -292,18 +282,29 @@ const { line} = configOpt;
|
|
|
.sand-elements-mind{
|
|
|
border-bottom: none;
|
|
|
padding-bottom: 0;
|
|
|
- .elements-row-mind{
|
|
|
- display: flex;
|
|
|
- flex-wrap: wrap;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
- img{
|
|
|
- width: calc(50% - 10px);
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+ .elements-row-mind,.sand-style-tab{
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ img{
|
|
|
+ width: calc(50% - 10px);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .sand-style-tab{
|
|
|
+ padding: 20px 30px;
|
|
|
+ img{
|
|
|
+ border: 1px solid #C8CDD9;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .active{
|
|
|
+ border: 1px solid #0052D9;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.sand-main{
|
|
|
flex: 1;
|
|
@@ -420,5 +421,14 @@ const { line} = configOpt;
|
|
|
height: auto !important;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ .topic-image {
|
|
|
+ visibility: hidden;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .x6-node:hover .topic-image {
|
|
|
+ visibility: visible;
|
|
|
+ }
|
|
|
+ .x6-node-selected rect {
|
|
|
+ stroke-width: 2px;
|
|
|
+ }
|
|
|
</style>
|