cnhis-design-vue 2.1.30 → 2.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -22
- package/es/affix/index.js +8 -8
- package/es/age/index.js +10 -10
- package/es/alert/index.js +8 -8
- package/es/anchor/index.js +8 -8
- package/es/auto-complete/index.js +8 -8
- package/es/avatar/index.js +8 -8
- package/es/back-top/index.js +8 -8
- package/es/badge/index.js +8 -8
- package/es/base/index.js +8 -8
- package/es/big-table/index.js +164 -164
- package/es/breadcrumb/index.js +8 -8
- package/es/button/index.js +31 -31
- package/es/calendar/index.js +8 -8
- package/es/captcha/index.js +3 -3
- package/es/card/index.js +8 -8
- package/es/carousel/index.js +8 -8
- package/es/cascader/index.js +8 -8
- package/es/checkbox/index.js +9 -9
- package/es/col/index.js +8 -8
- package/es/collapse/index.js +8 -8
- package/es/color-picker/index.js +1 -1
- package/es/comment/index.js +8 -8
- package/es/config-provider/index.js +8 -8
- package/es/date-picker/index.js +8 -8
- package/es/descriptions/index.js +8 -8
- package/es/divider/index.js +8 -8
- package/es/drag-layout/index.js +3 -3
- package/es/drawer/index.js +8 -8
- package/es/dropdown/index.js +8 -8
- package/es/editor/index.js +1 -1
- package/es/empty/index.js +8 -8
- package/es/fabric-chart/index.js +11 -11
- package/es/form/index.js +8 -8
- package/es/form-model/index.js +8 -8
- package/es/form-table/index.js +94 -92
- package/es/form-table/style.css +1 -1
- package/es/index/index.js +708 -667
- package/es/index/style.css +1 -1
- package/es/input/index.js +9 -9
- package/es/input-number/index.js +8 -8
- package/es/layout/index.js +8 -8
- package/es/list/index.js +8 -8
- package/es/locale-provider/index.js +8 -8
- package/es/map/index.js +9 -9
- package/es/mentions/index.js +8 -8
- package/es/menu/index.js +8 -8
- package/es/message/index.js +8 -8
- package/es/multi-chat/index.js +164 -148
- package/es/multi-chat/style.css +1 -1
- package/es/multi-chat-client/index.js +133 -117
- package/es/multi-chat-client/style.css +1 -1
- package/es/multi-chat-history/index.js +40 -27
- package/es/multi-chat-history/style.css +1 -1
- package/es/multi-chat-record/index.js +74 -36
- package/es/multi-chat-record/style.css +1 -1
- package/es/multi-chat-setting/index.js +79 -46
- package/es/multi-chat-setting/style.css +1 -1
- package/es/multi-chat-sip/index.js +1 -1
- package/es/notification/index.js +8 -8
- package/es/page-header/index.js +8 -8
- package/es/pagination/index.js +8 -8
- package/es/popconfirm/index.js +8 -8
- package/es/popover/index.js +8 -8
- package/es/progress/index.js +8 -8
- package/es/radio/index.js +9 -9
- package/es/rate/index.js +8 -8
- package/es/result/index.js +8 -8
- package/es/row/index.js +8 -8
- package/es/scale-view/index.js +33 -33
- package/es/select/index.js +11 -11
- package/es/select-label/index.js +11 -11
- package/es/select-person/index.js +2 -2
- package/es/shortcut-setter/index.js +10 -10
- package/es/skeleton/index.js +8 -8
- package/es/slider/index.js +8 -8
- package/es/space/index.js +8 -8
- package/es/spin/index.js +8 -8
- package/es/statistic/index.js +8 -8
- package/es/steps/index.js +8 -8
- package/es/switch/index.js +8 -8
- package/es/table-filter/index.js +74 -74
- package/es/tabs/index.js +8 -8
- package/es/tag/index.js +9 -9
- package/es/time-picker/index.js +8 -8
- package/es/timeline/index.js +8 -8
- package/es/tooltip/index.js +8 -8
- package/es/transfer/index.js +8 -8
- package/es/tree/index.js +8 -8
- package/es/tree-select/index.js +8 -8
- package/es/upload/index.js +8 -8
- package/es/utils/UniRTCv2.js +12 -2
- package/es/verification-code/index.js +2 -2
- package/lib/cui.common.js +796 -754
- package/lib/cui.umd.js +796 -754
- package/lib/cui.umd.min.js +39 -39
- package/package.json +2 -2
- package/packages/big-table/src/BigTable.vue +3044 -3044
- package/packages/big-table/src/utils/batchEditing.js +610 -610
- package/packages/big-table/src/utils/bigTableProps.js +95 -95
- package/packages/button/src/ButtonPrint/components/IdentityVerification.vue +181 -181
- package/packages/button/src/ButtonPrint/index.vue +739 -739
- package/packages/fabric-chart/src/components/TimeScaleValue.vue +113 -113
- package/packages/fabric-chart/src/const/defaultVaule.js +59 -59
- package/packages/fabric-chart/src/fabric-chart/FabricScaleValue.vue +135 -135
- package/packages/fabric-chart/src/fabric-chart/FabricTextGroup.vue +558 -558
- package/packages/fabric-chart/src/fabric-chart2/FabricTop.vue +172 -172
- package/packages/form-table/src/FormTable.vue +4 -1
- package/packages/multi-chat/chat/audio.vue +5 -2
- package/packages/multi-chat/chat/chatFooter.vue +1594 -1594
- package/packages/multi-chat/chat/chatHistory.vue +6 -0
- package/packages/multi-chat/chat/index.vue +2 -1
- package/packages/multi-chat/chat/quickReply.vue +439 -439
- package/packages/multi-chat/components/avatar.vue +1 -2
- package/packages/multi-chat/img/replay.png +0 -0
- package/packages/multi-chat/setting/baseInfo/index.vue +1316 -1316
- package/packages/multi-chat/setting/sessionList/messageRecord.vue +9 -0
- package/packages/multi-chat/store/getters.js +3 -0
- package/packages/multi-chat/store/mutation.js +3 -0
- package/packages/multi-chat/store/state.js +113 -112
- package/packages/scale-view/formitem/r-choice.vue +714 -714
- package/packages/scale-view/scaleView.vue +2010 -2010
- package/packages/table-filter/src/components/c-tree-select/tree-select.vue +336 -336
- package/packages/table-filter/src/components/multi-select/multi-select.vue +219 -219
- package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +340 -340
- package/packages/table-filter/src/components/search-condition/SearchCondition.vue +1825 -1825
- package/packages/table-filter/src/const/dataOptions.js +43 -43
- package/src/directive/preventReClick.js +12 -12
- package/src/utils/UniRTCv2.js +7 -2
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-show="isShow" class="c-time-scalevalue" :style="{ '--left': popupStyle.left, '--top': popupStyle.top, '--height': popupStyle.height, '--width': popupStyle.width }">
|
|
3
|
-
<span
|
|
4
|
-
class="c-time-scalevalue-list"
|
|
5
|
-
v-show="index % 2 == 0"
|
|
6
|
-
v-for="(item, index) in times"
|
|
7
|
-
:key="item.left"
|
|
8
|
-
:style="{ left: `${item.left - item.width / 2}px`, '--font-size': popupStyle.fontSize }"
|
|
9
|
-
>
|
|
10
|
-
{{ item.time }}
|
|
11
|
-
</span>
|
|
12
|
-
</div>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script>
|
|
16
|
-
// import Vue from 'vue';
|
|
17
|
-
// import DomPortal from 'vue-dom-portal';
|
|
18
|
-
import vexutils from '@/utils/vexutils';
|
|
19
|
-
import fabricCommon from '../mixins/fabricCommon';
|
|
20
|
-
|
|
21
|
-
export default {
|
|
22
|
-
mixins: [fabricCommon],
|
|
23
|
-
props: {
|
|
24
|
-
times: {
|
|
25
|
-
type: Array,
|
|
26
|
-
required: true
|
|
27
|
-
}
|
|
28
|
-
// to: {
|
|
29
|
-
// type: String,
|
|
30
|
-
// default: 'body'
|
|
31
|
-
// }
|
|
32
|
-
},
|
|
33
|
-
// beforeCreate() {
|
|
34
|
-
// Vue.use(DomPortal);
|
|
35
|
-
// },
|
|
36
|
-
data() {
|
|
37
|
-
return {
|
|
38
|
-
cFabricChart: null,
|
|
39
|
-
scrollEvent: null,
|
|
40
|
-
top: 0,
|
|
41
|
-
popupStyle: {
|
|
42
|
-
width: '1000px',
|
|
43
|
-
height: '80px',
|
|
44
|
-
left: 0,
|
|
45
|
-
top: 0,
|
|
46
|
-
fontSize: '12px'
|
|
47
|
-
},
|
|
48
|
-
isShow: false
|
|
49
|
-
};
|
|
50
|
-
},
|
|
51
|
-
mounted() {
|
|
52
|
-
this.$nextTick(() => {
|
|
53
|
-
setTimeout(() => {
|
|
54
|
-
this.init();
|
|
55
|
-
}, 0);
|
|
56
|
-
});
|
|
57
|
-
},
|
|
58
|
-
methods: {
|
|
59
|
-
init() {
|
|
60
|
-
// this.to = this.templateData.top?.xScalevalue?.to || 'body';
|
|
61
|
-
const { xScalevalue } = this.$attrs.templateData.top || {};
|
|
62
|
-
const { canvasWidth, spaceHeight, xCellWidth } = this.propItems;
|
|
63
|
-
this.cFabricChart = document.querySelector('.c-fabric-chart');
|
|
64
|
-
// this.bodyHeight = document.body.getBoundingClientRect().height;
|
|
65
|
-
this.top = this.cFabricChart.getBoundingClientRect().top;
|
|
66
|
-
this.popupStyle = {
|
|
67
|
-
left: `${this.cFabricChart.getBoundingClientRect().left}px`,
|
|
68
|
-
top: `${xScalevalue?.popupTop || 0}px`,
|
|
69
|
-
width: `${canvasWidth}px`,
|
|
70
|
-
height: `${spaceHeight}px`,
|
|
71
|
-
fontSize: `${xScalevalue.style?.fontSize || 12}px`
|
|
72
|
-
};
|
|
73
|
-
// const spaceGridNumber = xScalevalue.spaceGridNumber || 3;
|
|
74
|
-
// this.marginLeft = `${xCellWidth * spaceGridNumber}px`;
|
|
75
|
-
// 节流的间隔时间不宜太大,因为实际top值不准,会造成判断条件不准确
|
|
76
|
-
this.scrollEvent = vexutils.throttle(this.scroll, 100);
|
|
77
|
-
window.addEventListener('scroll', this.scrollEvent, true);
|
|
78
|
-
},
|
|
79
|
-
scroll() {
|
|
80
|
-
if (this.cFabricChart) {
|
|
81
|
-
const { originY, spaceHeight } = this.propItems;
|
|
82
|
-
const top = this.cFabricChart.getBoundingClientRect().top;
|
|
83
|
-
const newOriginY = originY - spaceHeight;
|
|
84
|
-
const { xScalevalue } = this.$attrs.templateData.top || {};
|
|
85
|
-
const popupTop = xScalevalue?.popupTop || 0;
|
|
86
|
-
this.isShow = top + newOriginY < popupTop ? true : false;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
beforeDestroy() {
|
|
91
|
-
window.removeEventListener('scroll', this.scroll, true);
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
</script>
|
|
95
|
-
|
|
96
|
-
<style lang="less" scoped>
|
|
97
|
-
.c-time-scalevalue {
|
|
98
|
-
position: fixed;
|
|
99
|
-
z-index: 999;
|
|
100
|
-
left: var(--left);
|
|
101
|
-
top: var(--top);
|
|
102
|
-
width: var(--width);
|
|
103
|
-
height: var(--height);
|
|
104
|
-
background: rgba(0, 0, 0, 0.6);
|
|
105
|
-
color: #fff;
|
|
106
|
-
&-list {
|
|
107
|
-
position: absolute;
|
|
108
|
-
line-height: var(--height);
|
|
109
|
-
transform-origin: center;
|
|
110
|
-
font-size: var(--font-size);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div v-show="isShow" class="c-time-scalevalue" :style="{ '--left': popupStyle.left, '--top': popupStyle.top, '--height': popupStyle.height, '--width': popupStyle.width }">
|
|
3
|
+
<span
|
|
4
|
+
class="c-time-scalevalue-list"
|
|
5
|
+
v-show="index % 2 == 0"
|
|
6
|
+
v-for="(item, index) in times"
|
|
7
|
+
:key="item.left"
|
|
8
|
+
:style="{ left: `${item.left - item.width / 2}px`, '--font-size': popupStyle.fontSize }"
|
|
9
|
+
>
|
|
10
|
+
{{ item.time }}
|
|
11
|
+
</span>
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script>
|
|
16
|
+
// import Vue from 'vue';
|
|
17
|
+
// import DomPortal from 'vue-dom-portal';
|
|
18
|
+
import vexutils from '@/utils/vexutils';
|
|
19
|
+
import fabricCommon from '../mixins/fabricCommon';
|
|
20
|
+
|
|
21
|
+
export default {
|
|
22
|
+
mixins: [fabricCommon],
|
|
23
|
+
props: {
|
|
24
|
+
times: {
|
|
25
|
+
type: Array,
|
|
26
|
+
required: true
|
|
27
|
+
}
|
|
28
|
+
// to: {
|
|
29
|
+
// type: String,
|
|
30
|
+
// default: 'body'
|
|
31
|
+
// }
|
|
32
|
+
},
|
|
33
|
+
// beforeCreate() {
|
|
34
|
+
// Vue.use(DomPortal);
|
|
35
|
+
// },
|
|
36
|
+
data() {
|
|
37
|
+
return {
|
|
38
|
+
cFabricChart: null,
|
|
39
|
+
scrollEvent: null,
|
|
40
|
+
top: 0,
|
|
41
|
+
popupStyle: {
|
|
42
|
+
width: '1000px',
|
|
43
|
+
height: '80px',
|
|
44
|
+
left: 0,
|
|
45
|
+
top: 0,
|
|
46
|
+
fontSize: '12px'
|
|
47
|
+
},
|
|
48
|
+
isShow: false
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
mounted() {
|
|
52
|
+
this.$nextTick(() => {
|
|
53
|
+
setTimeout(() => {
|
|
54
|
+
this.init();
|
|
55
|
+
}, 0);
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
methods: {
|
|
59
|
+
init() {
|
|
60
|
+
// this.to = this.templateData.top?.xScalevalue?.to || 'body';
|
|
61
|
+
const { xScalevalue } = this.$attrs.templateData.top || {};
|
|
62
|
+
const { canvasWidth, spaceHeight, xCellWidth } = this.propItems;
|
|
63
|
+
this.cFabricChart = document.querySelector('.c-fabric-chart');
|
|
64
|
+
// this.bodyHeight = document.body.getBoundingClientRect().height;
|
|
65
|
+
this.top = this.cFabricChart.getBoundingClientRect().top;
|
|
66
|
+
this.popupStyle = {
|
|
67
|
+
left: `${this.cFabricChart.getBoundingClientRect().left}px`,
|
|
68
|
+
top: `${xScalevalue?.popupTop || 0}px`,
|
|
69
|
+
width: `${canvasWidth}px`,
|
|
70
|
+
height: `${spaceHeight}px`,
|
|
71
|
+
fontSize: `${xScalevalue.style?.fontSize || 12}px`
|
|
72
|
+
};
|
|
73
|
+
// const spaceGridNumber = xScalevalue.spaceGridNumber || 3;
|
|
74
|
+
// this.marginLeft = `${xCellWidth * spaceGridNumber}px`;
|
|
75
|
+
// 节流的间隔时间不宜太大,因为实际top值不准,会造成判断条件不准确
|
|
76
|
+
this.scrollEvent = vexutils.throttle(this.scroll, 100);
|
|
77
|
+
window.addEventListener('scroll', this.scrollEvent, true);
|
|
78
|
+
},
|
|
79
|
+
scroll() {
|
|
80
|
+
if (this.cFabricChart) {
|
|
81
|
+
const { originY, spaceHeight } = this.propItems;
|
|
82
|
+
const top = this.cFabricChart.getBoundingClientRect().top;
|
|
83
|
+
const newOriginY = originY - spaceHeight;
|
|
84
|
+
const { xScalevalue } = this.$attrs.templateData.top || {};
|
|
85
|
+
const popupTop = xScalevalue?.popupTop || 0;
|
|
86
|
+
this.isShow = top + newOriginY < popupTop ? true : false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
beforeDestroy() {
|
|
91
|
+
window.removeEventListener('scroll', this.scroll, true);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
</script>
|
|
95
|
+
|
|
96
|
+
<style lang="less" scoped>
|
|
97
|
+
.c-time-scalevalue {
|
|
98
|
+
position: fixed;
|
|
99
|
+
z-index: 999;
|
|
100
|
+
left: var(--left);
|
|
101
|
+
top: var(--top);
|
|
102
|
+
width: var(--width);
|
|
103
|
+
height: var(--height);
|
|
104
|
+
background: rgba(0, 0, 0, 0.6);
|
|
105
|
+
color: #fff;
|
|
106
|
+
&-list {
|
|
107
|
+
position: absolute;
|
|
108
|
+
line-height: var(--height);
|
|
109
|
+
transform-origin: center;
|
|
110
|
+
font-size: var(--font-size);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
</style>
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
const data = {
|
|
2
|
-
style: {
|
|
3
|
-
evented: false,
|
|
4
|
-
selectable: false
|
|
5
|
-
},
|
|
6
|
-
rectStyle: {
|
|
7
|
-
fill: 'transparent',
|
|
8
|
-
stroke: '#999',
|
|
9
|
-
strokeWidth: 1
|
|
10
|
-
},
|
|
11
|
-
textStyle: {
|
|
12
|
-
fontFamily: '微软雅黑',
|
|
13
|
-
fontSize: 12,
|
|
14
|
-
fill: '#000',
|
|
15
|
-
lineHeight: 1
|
|
16
|
-
},
|
|
17
|
-
borderStyle: {
|
|
18
|
-
stroke: '#999',
|
|
19
|
-
strokeWidth: 1,
|
|
20
|
-
selectable: false,
|
|
21
|
-
evented: false
|
|
22
|
-
},
|
|
23
|
-
// 折线图中的点
|
|
24
|
-
pointStyle: {
|
|
25
|
-
fill: '#ffffff', // 填充色
|
|
26
|
-
stroke: '#000000', // 描边色
|
|
27
|
-
originX: 'center',
|
|
28
|
-
originY: 'center'
|
|
29
|
-
},
|
|
30
|
-
// 折线图中的线
|
|
31
|
-
lineStyle: {
|
|
32
|
-
stroke: '#000', // 描边色
|
|
33
|
-
strokeWidth: 1, // 描边宽度
|
|
34
|
-
originX: 'center',
|
|
35
|
-
originY: 'center'
|
|
36
|
-
},
|
|
37
|
-
topSpaceHeight: 10, // templateData.top.spaceHeight
|
|
38
|
-
topSpaceGridNumber: 3, // templateData.top.xScalevalue.spaceGridNumber
|
|
39
|
-
leftSpaceGridNumber: 2, // templateData.left.leftYScalevalue.spaceGridNumber
|
|
40
|
-
rightSpaceGridNumber: 2, // templateData.right.rightYScalevalue.spaceGridNumber
|
|
41
|
-
topTotal: {
|
|
42
|
-
title: '总量',
|
|
43
|
-
width: 0,
|
|
44
|
-
style: {
|
|
45
|
-
fontFamily: '微软雅黑',
|
|
46
|
-
fontSize: 12,
|
|
47
|
-
fill: '#000',
|
|
48
|
-
lineHeight: 1
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
criticalStyle: { // 危急值样式
|
|
52
|
-
stroke: 'purple', // 颜色 默认 #999
|
|
53
|
-
strokeWidth: 1, // 线宽 默认 1
|
|
54
|
-
strokeDashArray: [0, 0] // 实线设置 默认[0, 0]
|
|
55
|
-
},
|
|
56
|
-
bottomNumberLeftSpace: 10 // 底部标记的序号与标记之间的距离
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export default data;
|
|
1
|
+
const data = {
|
|
2
|
+
style: {
|
|
3
|
+
evented: false,
|
|
4
|
+
selectable: false
|
|
5
|
+
},
|
|
6
|
+
rectStyle: {
|
|
7
|
+
fill: 'transparent',
|
|
8
|
+
stroke: '#999',
|
|
9
|
+
strokeWidth: 1
|
|
10
|
+
},
|
|
11
|
+
textStyle: {
|
|
12
|
+
fontFamily: '微软雅黑',
|
|
13
|
+
fontSize: 12,
|
|
14
|
+
fill: '#000',
|
|
15
|
+
lineHeight: 1
|
|
16
|
+
},
|
|
17
|
+
borderStyle: {
|
|
18
|
+
stroke: '#999',
|
|
19
|
+
strokeWidth: 1,
|
|
20
|
+
selectable: false,
|
|
21
|
+
evented: false
|
|
22
|
+
},
|
|
23
|
+
// 折线图中的点
|
|
24
|
+
pointStyle: {
|
|
25
|
+
fill: '#ffffff', // 填充色
|
|
26
|
+
stroke: '#000000', // 描边色
|
|
27
|
+
originX: 'center',
|
|
28
|
+
originY: 'center'
|
|
29
|
+
},
|
|
30
|
+
// 折线图中的线
|
|
31
|
+
lineStyle: {
|
|
32
|
+
stroke: '#000', // 描边色
|
|
33
|
+
strokeWidth: 1, // 描边宽度
|
|
34
|
+
originX: 'center',
|
|
35
|
+
originY: 'center'
|
|
36
|
+
},
|
|
37
|
+
topSpaceHeight: 10, // templateData.top.spaceHeight
|
|
38
|
+
topSpaceGridNumber: 3, // templateData.top.xScalevalue.spaceGridNumber
|
|
39
|
+
leftSpaceGridNumber: 2, // templateData.left.leftYScalevalue.spaceGridNumber
|
|
40
|
+
rightSpaceGridNumber: 2, // templateData.right.rightYScalevalue.spaceGridNumber
|
|
41
|
+
topTotal: {
|
|
42
|
+
title: '总量',
|
|
43
|
+
width: 0,
|
|
44
|
+
style: {
|
|
45
|
+
fontFamily: '微软雅黑',
|
|
46
|
+
fontSize: 12,
|
|
47
|
+
fill: '#000',
|
|
48
|
+
lineHeight: 1
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
criticalStyle: { // 危急值样式
|
|
52
|
+
stroke: 'purple', // 颜色 默认 #999
|
|
53
|
+
strokeWidth: 1, // 线宽 默认 1
|
|
54
|
+
strokeDashArray: [0, 0] // 实线设置 默认[0, 0]
|
|
55
|
+
},
|
|
56
|
+
bottomNumberLeftSpace: 10 // 底部标记的序号与标记之间的距离
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export default data;
|
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<TimeScaleValue v-if="templateData.top.xScalevalue.popupTop" :times="timeList" :templateData="templateData" />
|
|
3
|
-
</template>
|
|
4
|
-
|
|
5
|
-
<script>
|
|
6
|
-
import fabricCommon from '../mixins/fabricCommon';
|
|
7
|
-
import defaultVaule from '../const/defaultVaule';
|
|
8
|
-
import TimeScaleValue from '../components/TimeScaleValue.vue';
|
|
9
|
-
|
|
10
|
-
export default {
|
|
11
|
-
name: 'fabric-scale-value',
|
|
12
|
-
mixins: [fabricCommon],
|
|
13
|
-
components: {
|
|
14
|
-
TimeScaleValue
|
|
15
|
-
},
|
|
16
|
-
props: {
|
|
17
|
-
templateData: {
|
|
18
|
-
type: Object,
|
|
19
|
-
required: true
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
data() {
|
|
23
|
-
return {
|
|
24
|
-
timeList: []
|
|
25
|
-
};
|
|
26
|
-
},
|
|
27
|
-
computed: {
|
|
28
|
-
defaultTextStyle() {
|
|
29
|
-
return {
|
|
30
|
-
...defaultVaule.textStyle,
|
|
31
|
-
centeredRotation: true,
|
|
32
|
-
originX: 'center',
|
|
33
|
-
originY: 'center'
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
mounted() {
|
|
38
|
-
this.$nextTick(() => {
|
|
39
|
-
this.topScaleValue(this.templateData.top);
|
|
40
|
-
this.rightScaleValue(this.templateData.right);
|
|
41
|
-
this.leftScaleValue(this.templateData.left);
|
|
42
|
-
this.canvas.renderAll();
|
|
43
|
-
});
|
|
44
|
-
},
|
|
45
|
-
methods: {
|
|
46
|
-
// x轴时间刻度绘制
|
|
47
|
-
topScaleValue(obj) {
|
|
48
|
-
const { originX, originY, xCellWidth, spaceHeight } = this.propItems;
|
|
49
|
-
const spaceGridNumber = obj.xScalevalue.spaceGridNumber || 3;
|
|
50
|
-
const defaultSpaceMinute = obj.xScalevalue.defaultSpaceTime || 15;
|
|
51
|
-
const defaultSpaceTime = defaultSpaceMinute * 60 * 1000;
|
|
52
|
-
const style = obj.xScalevalue.style || {};
|
|
53
|
-
const customStyle = obj.xScalevalue.customStyle || {};
|
|
54
|
-
const top = originY - Math.floor(spaceHeight / 2);
|
|
55
|
-
let textList = [];
|
|
56
|
-
const list = obj.xScalevalue.list || [];
|
|
57
|
-
list.reduce((pre, cur, i) => {
|
|
58
|
-
const newStyle = pre && new Date(cur).getTime() - new Date(pre).getTime() < defaultSpaceTime ? { ...style, ...customStyle } : style;
|
|
59
|
-
const text = this.createText(cur.slice(-5), originX + i * spaceGridNumber * xCellWidth, top, 'center', newStyle);
|
|
60
|
-
textList.push(text);
|
|
61
|
-
this.timeList.push({
|
|
62
|
-
time: cur.slice(-5),
|
|
63
|
-
left: originX + i * spaceGridNumber * xCellWidth,
|
|
64
|
-
width: text.width
|
|
65
|
-
});
|
|
66
|
-
return cur;
|
|
67
|
-
}, '');
|
|
68
|
-
const group = new this.fabric.Group([...textList], {
|
|
69
|
-
evented: false,
|
|
70
|
-
selectable: false
|
|
71
|
-
});
|
|
72
|
-
this.canvas.add(group);
|
|
73
|
-
this.canvas.sendBackwards(group);
|
|
74
|
-
},
|
|
75
|
-
rightScaleValue(obj) {
|
|
76
|
-
if (!obj) return;
|
|
77
|
-
const spaceGridNumber = obj.rightYScalevalue.spaceGridNumber || 2;
|
|
78
|
-
const marginLeft = obj.rightYScalevalue.marginLeft || 3;
|
|
79
|
-
const originX = this.propItems.endX + marginLeft;
|
|
80
|
-
const style = obj.rightYScalevalue.style ? obj.rightYScalevalue.style : {};
|
|
81
|
-
let textList = [];
|
|
82
|
-
obj.rightYScalevalue.list.forEach((item, index) => {
|
|
83
|
-
textList.push(this.createText(item, originX, this.propItems.endY - index * this.propItems.yCellHeight * spaceGridNumber, 'left', style));
|
|
84
|
-
});
|
|
85
|
-
// 添加单位
|
|
86
|
-
if (obj.rightYScalevalue.unit) {
|
|
87
|
-
const top = this.propItems.endY - obj.rightYScalevalue.list.length * this.propItems.yCellHeight * spaceGridNumber + this.propItems.yCellHeight;
|
|
88
|
-
textList.push(this.createText(obj.rightYScalevalue.unit, originX, top, 'left', style));
|
|
89
|
-
}
|
|
90
|
-
const group = new this.fabric.Group([...textList], {
|
|
91
|
-
evented: false,
|
|
92
|
-
selectable: false
|
|
93
|
-
});
|
|
94
|
-
this.canvas.add(group);
|
|
95
|
-
this.canvas.sendBackwards(group);
|
|
96
|
-
},
|
|
97
|
-
leftScaleValue(obj) {
|
|
98
|
-
const { endY, yCellHeight } = this.propItems;
|
|
99
|
-
const spaceGridNumber = obj.leftYScalevalue.spaceGridNumber || 2;
|
|
100
|
-
const [titleMarginRight, titleMarginButton] = obj.leftYScalevalue?.titleMargin || [5, 30];
|
|
101
|
-
const listMarginRight = obj.leftYScalevalue.listMarginRight || 3;
|
|
102
|
-
const style = obj.leftYScalevalue.style || {};
|
|
103
|
-
const originX = this.propItems.originX;
|
|
104
|
-
let textList = [];
|
|
105
|
-
obj.leftYScalevalue.list.forEach((item, index) => {
|
|
106
|
-
textList.push(this.createText(item, originX - listMarginRight, endY - index * yCellHeight * spaceGridNumber, 'right', style));
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
// 添加标题和单位
|
|
110
|
-
let txt = '';
|
|
111
|
-
txt = obj.leftYScalevalue.name || '';
|
|
112
|
-
if (obj.leftYScalevalue.unit) txt += '\n' + obj.leftYScalevalue.unit;
|
|
113
|
-
if (txt) {
|
|
114
|
-
const top = endY - (obj.leftYScalevalue.list.length - 1) * yCellHeight * spaceGridNumber - titleMarginButton;
|
|
115
|
-
textList.push(this.createText(txt, originX - titleMarginRight, top, 'right', { ...style, textAlign: 'right', originY: 'bottom' }));
|
|
116
|
-
}
|
|
117
|
-
const group = new this.fabric.Group([...textList], {
|
|
118
|
-
evented: false,
|
|
119
|
-
selectable: false
|
|
120
|
-
});
|
|
121
|
-
this.canvas.add(group);
|
|
122
|
-
this.canvas.sendBackwards(group);
|
|
123
|
-
},
|
|
124
|
-
createText(text, left, top, originX, style) {
|
|
125
|
-
return new this.fabric.Text(String(text), {
|
|
126
|
-
...this.defaultTextStyle,
|
|
127
|
-
left,
|
|
128
|
-
top,
|
|
129
|
-
...style,
|
|
130
|
-
originX
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
</script>
|
|
1
|
+
<template>
|
|
2
|
+
<TimeScaleValue v-if="templateData.top.xScalevalue.popupTop" :times="timeList" :templateData="templateData" />
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script>
|
|
6
|
+
import fabricCommon from '../mixins/fabricCommon';
|
|
7
|
+
import defaultVaule from '../const/defaultVaule';
|
|
8
|
+
import TimeScaleValue from '../components/TimeScaleValue.vue';
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
name: 'fabric-scale-value',
|
|
12
|
+
mixins: [fabricCommon],
|
|
13
|
+
components: {
|
|
14
|
+
TimeScaleValue
|
|
15
|
+
},
|
|
16
|
+
props: {
|
|
17
|
+
templateData: {
|
|
18
|
+
type: Object,
|
|
19
|
+
required: true
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
data() {
|
|
23
|
+
return {
|
|
24
|
+
timeList: []
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
computed: {
|
|
28
|
+
defaultTextStyle() {
|
|
29
|
+
return {
|
|
30
|
+
...defaultVaule.textStyle,
|
|
31
|
+
centeredRotation: true,
|
|
32
|
+
originX: 'center',
|
|
33
|
+
originY: 'center'
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
mounted() {
|
|
38
|
+
this.$nextTick(() => {
|
|
39
|
+
this.topScaleValue(this.templateData.top);
|
|
40
|
+
this.rightScaleValue(this.templateData.right);
|
|
41
|
+
this.leftScaleValue(this.templateData.left);
|
|
42
|
+
this.canvas.renderAll();
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
methods: {
|
|
46
|
+
// x轴时间刻度绘制
|
|
47
|
+
topScaleValue(obj) {
|
|
48
|
+
const { originX, originY, xCellWidth, spaceHeight } = this.propItems;
|
|
49
|
+
const spaceGridNumber = obj.xScalevalue.spaceGridNumber || 3;
|
|
50
|
+
const defaultSpaceMinute = obj.xScalevalue.defaultSpaceTime || 15;
|
|
51
|
+
const defaultSpaceTime = defaultSpaceMinute * 60 * 1000;
|
|
52
|
+
const style = obj.xScalevalue.style || {};
|
|
53
|
+
const customStyle = obj.xScalevalue.customStyle || {};
|
|
54
|
+
const top = originY - Math.floor(spaceHeight / 2);
|
|
55
|
+
let textList = [];
|
|
56
|
+
const list = obj.xScalevalue.list || [];
|
|
57
|
+
list.reduce((pre, cur, i) => {
|
|
58
|
+
const newStyle = pre && new Date(cur).getTime() - new Date(pre).getTime() < defaultSpaceTime ? { ...style, ...customStyle } : style;
|
|
59
|
+
const text = this.createText(cur.slice(-5), originX + i * spaceGridNumber * xCellWidth, top, 'center', newStyle);
|
|
60
|
+
textList.push(text);
|
|
61
|
+
this.timeList.push({
|
|
62
|
+
time: cur.slice(-5),
|
|
63
|
+
left: originX + i * spaceGridNumber * xCellWidth,
|
|
64
|
+
width: text.width
|
|
65
|
+
});
|
|
66
|
+
return cur;
|
|
67
|
+
}, '');
|
|
68
|
+
const group = new this.fabric.Group([...textList], {
|
|
69
|
+
evented: false,
|
|
70
|
+
selectable: false
|
|
71
|
+
});
|
|
72
|
+
this.canvas.add(group);
|
|
73
|
+
this.canvas.sendBackwards(group);
|
|
74
|
+
},
|
|
75
|
+
rightScaleValue(obj) {
|
|
76
|
+
if (!obj) return;
|
|
77
|
+
const spaceGridNumber = obj.rightYScalevalue.spaceGridNumber || 2;
|
|
78
|
+
const marginLeft = obj.rightYScalevalue.marginLeft || 3;
|
|
79
|
+
const originX = this.propItems.endX + marginLeft;
|
|
80
|
+
const style = obj.rightYScalevalue.style ? obj.rightYScalevalue.style : {};
|
|
81
|
+
let textList = [];
|
|
82
|
+
obj.rightYScalevalue.list.forEach((item, index) => {
|
|
83
|
+
textList.push(this.createText(item, originX, this.propItems.endY - index * this.propItems.yCellHeight * spaceGridNumber, 'left', style));
|
|
84
|
+
});
|
|
85
|
+
// 添加单位
|
|
86
|
+
if (obj.rightYScalevalue.unit) {
|
|
87
|
+
const top = this.propItems.endY - obj.rightYScalevalue.list.length * this.propItems.yCellHeight * spaceGridNumber + this.propItems.yCellHeight;
|
|
88
|
+
textList.push(this.createText(obj.rightYScalevalue.unit, originX, top, 'left', style));
|
|
89
|
+
}
|
|
90
|
+
const group = new this.fabric.Group([...textList], {
|
|
91
|
+
evented: false,
|
|
92
|
+
selectable: false
|
|
93
|
+
});
|
|
94
|
+
this.canvas.add(group);
|
|
95
|
+
this.canvas.sendBackwards(group);
|
|
96
|
+
},
|
|
97
|
+
leftScaleValue(obj) {
|
|
98
|
+
const { endY, yCellHeight } = this.propItems;
|
|
99
|
+
const spaceGridNumber = obj.leftYScalevalue.spaceGridNumber || 2;
|
|
100
|
+
const [titleMarginRight, titleMarginButton] = obj.leftYScalevalue?.titleMargin || [5, 30];
|
|
101
|
+
const listMarginRight = obj.leftYScalevalue.listMarginRight || 3;
|
|
102
|
+
const style = obj.leftYScalevalue.style || {};
|
|
103
|
+
const originX = this.propItems.originX;
|
|
104
|
+
let textList = [];
|
|
105
|
+
obj.leftYScalevalue.list.forEach((item, index) => {
|
|
106
|
+
textList.push(this.createText(item, originX - listMarginRight, endY - index * yCellHeight * spaceGridNumber, 'right', style));
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
// 添加标题和单位
|
|
110
|
+
let txt = '';
|
|
111
|
+
txt = obj.leftYScalevalue.name || '';
|
|
112
|
+
if (obj.leftYScalevalue.unit) txt += '\n' + obj.leftYScalevalue.unit;
|
|
113
|
+
if (txt) {
|
|
114
|
+
const top = endY - (obj.leftYScalevalue.list.length - 1) * yCellHeight * spaceGridNumber - titleMarginButton;
|
|
115
|
+
textList.push(this.createText(txt, originX - titleMarginRight, top, 'right', { ...style, textAlign: 'right', originY: 'bottom' }));
|
|
116
|
+
}
|
|
117
|
+
const group = new this.fabric.Group([...textList], {
|
|
118
|
+
evented: false,
|
|
119
|
+
selectable: false
|
|
120
|
+
});
|
|
121
|
+
this.canvas.add(group);
|
|
122
|
+
this.canvas.sendBackwards(group);
|
|
123
|
+
},
|
|
124
|
+
createText(text, left, top, originX, style) {
|
|
125
|
+
return new this.fabric.Text(String(text), {
|
|
126
|
+
...this.defaultTextStyle,
|
|
127
|
+
left,
|
|
128
|
+
top,
|
|
129
|
+
...style,
|
|
130
|
+
originX
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
</script>
|