wente
2024-12-05 17ce02ec6fefa4e8b9ac870e2b52dea0942f5597
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<template>
  <div style="position: absolute;top:6%;right:0;background:#cccccc;width: 300px;" :style="'height:'+ left_p + 'px'">
    <el-card style="height: 100%">
      <el-tabs v-model="activeName" id="EdgeTabPane">
        <el-tab-pane label="线条"  name="first">
          <el-row :gutter="5" align="middle" style="margin-top:20px;">
            <el-col :span=8 style="font-size: 16px;line-height: 38px">宽度</el-col>
            <el-col :span=16>
              <el-slider :min=1 :max=20 :step=1 v-model="globalGridAttr.strokeWidth" @change="onStrokeWidthChange"></el-slider>
            </el-col>
          </el-row>
          <el-row :gutter="5" align="middle" style="margin-top:20px;">
            <el-col :span=8 style="font-size: 16px;line-height: 38px">颜色</el-col>
            <el-col :span=16>
              <el-color-picker  v-model="globalGridAttr.stroke" style="width: 100%" @change="onStrokeChange"></el-color-picker>
            </el-col>
          </el-row>
<!--          <el-row :gutter="5" align="middle" style="margin-top:20px;">-->
<!--            <el-col :span=8 style="font-size: 16px;line-height: 32px">类型</el-col>-->
<!--            <el-col :span=16>-->
<!--              <el-select style="width: 100%" v-model="globalGridAttr.connector" @change="onConnectorChange">-->
<!--                <el-option-->
<!--                  v-for="item in options"-->
<!--                  :key="item.value"-->
<!--                  :label="item.label"-->
<!--                  :value="item.value">-->
<!--                </el-option>-->
<!--                &lt;!&ndash;              <el-option value="normal">默认</el-option>&ndash;&gt;-->
<!--                &lt;!&ndash;              <el-option value="smooth">平滑</el-option>&ndash;&gt;-->
<!--                &lt;!&ndash;              <el-option value="rounded">圆形</el-option>&ndash;&gt;-->
<!--                &lt;!&ndash;              <el-option value="jumpover">折线</el-option>&ndash;&gt;-->
<!--              </el-select>-->
<!--            </el-col>-->
<!--          </el-row>-->
          <el-row :gutter="5" align="middle" style="margin-top:20px;">
            <el-col :span=8 style="font-size: 16px;line-height: 32px">标签</el-col>
            <el-col :span=16>
              <el-input v-model="globalGridAttr.label" style="width: 100%" @change="onLabelChange"/>
            </el-col>
          </el-row>
        </el-tab-pane>
      </el-tabs>
    </el-card>
  </div>
</template>
 
<script>
import { Edge} from '@antv/x6';
export default {
  name: "index",
  data(){
    return{
      left_p:document.documentElement.clientHeight*0.9,
      activeName: 'first',
      // globalGridAttr:{},
      curCell:Edge,
      options: [{
        value: 'normal',
        label: '默认'
      }, {
        value: 'smooth',
        label: '平滑连线'
      }]
    }
  },
  props:{
    id: {
      type: String,
    },
    globalGridAttr:{
      type: Object,
    },
    graph:{
      type: String,
    }
  },
  watch:{
    'id'(val,oldVal){
      const cell = this.graph.getCellById(this.id)
      if(!cell || !cell.isEdge()){
        return
      }
      this.curCell = cell
      let connector = cell.getConnector() || {
        name:'默认'
      }
      this.globalGridAttr.stroke = cell.attr('line/stroke')
      this.globalGridAttr.strokeWidth = cell.attr('line/strokeWidth')
      this.globalGridAttr.connector = connector.name
      // console.log(cell.getLabels()[0],'cell.getLabels()[0]')
      //  this.globalGridAttr.label = (cell.getLabels()[0].attrs).text.text||''
    }
  },
  methods:{
    onStrokeWidthChange(val) {
 
      this.globalGridAttr.strokeWidth = val
      this.curCell.attr('line/strokeWidth', val)
    },
 
    onStrokeChange(e) {
      const val = e
      this.globalGridAttr.stroke = val
      this.curCell.attr('line/stroke', val)
    },
 
 
    onConnectorChange(val){
      this.globalGridAttr.connector = val
      this.curCell.setConnector(val)
    },
 
    onLabelChange(e) {
      const val = e
      this.globalGridAttr.label = val
      this.curCell.setLabels([
        {
          attrs: {
            text: {
              text: val,
            },
          },
          position: {
            distance: 0.50,
          },
        }
      ])
    }
  }
}
</script>
 
<style >
#EdgeTabPane .el-tabs__header.is-top .el-tabs__nav-scroll{
  width: 100% !important;
}
#EdgeTabPane .el-tabs__nav.is-top{
  -webkit-transform: translateX(35px) !important
}
#EdgeTabPane .el-color-picker__trigger{
  width: 100%;
}
</style>