diff --git a/frontend/src/components/canvas/components/editor/ComponentWrapper.vue b/frontend/src/components/canvas/components/editor/ComponentWrapper.vue
index 289774c142..639bb5f740 100644
--- a/frontend/src/components/canvas/components/editor/ComponentWrapper.vue
+++ b/frontend/src/components/canvas/components/editor/ComponentWrapper.vue
@@ -274,7 +274,7 @@ export default {
} else {
return {
...
- getStyle(style, ['top', 'left', 'width', 'height', 'rotate']),
+ getStyle(style, ['top', 'left', 'width', 'height', 'rotate']),
position: 'relative'
}
}
diff --git a/frontend/src/components/canvas/components/editor/Preview.vue b/frontend/src/components/canvas/components/editor/Preview.vue
index 7c523fe88c..9f2dfd1854 100644
--- a/frontend/src/components/canvas/components/editor/Preview.vue
+++ b/frontend/src/components/canvas/components/editor/Preview.vue
@@ -120,6 +120,7 @@ import { userLoginInfo } from '@/api/systemInfo/userLogin'
import html2canvas from 'html2canvasde'
import { queryAll } from '@/api/panel/pdfTemplate'
import PDFPreExport from '@/views/panel/export/PDFPreExport'
+import { listenGlobalKeyDownPreview } from '@/components/canvas/utils/shortcutKey'
const erd = elementResizeDetectorMaker()
export default {
@@ -351,6 +352,9 @@ export default {
}
},
created() {
+ if (this.canvasId === 'canvas-main') {
+ listenGlobalKeyDownPreview()
+ }
// 取消视图请求
this.$cancelRequest('/chart/view/getData/**')
this.$cancelRequest('/api/link/viewDetail/**')
diff --git a/frontend/src/components/canvas/store/copy.js b/frontend/src/components/canvas/store/copy.js
index fbcc6c45a3..e9b6694ded 100644
--- a/frontend/src/components/canvas/store/copy.js
+++ b/frontend/src/components/canvas/store/copy.js
@@ -25,6 +25,24 @@ export default {
}
},
mutations: {
+ // 复制到粘贴板
+ copyToClipboard(state) {
+ if (state.curComponent) {
+ Vue.prototype.$copyText('datease-component-' + state.curComponent.id)
+ }
+ },
+ passFromClipboard(state, componentId) {
+ state.componentData.forEach(item => {
+ if (item.id === componentId) {
+ state.copyData = {
+ data: deepCopy(item),
+ index: state.componentData.length
+ }
+ }
+ })
+ state.isCut = false
+ this.commit('paste')
+ },
copyMultiplexingComponents(state) {
let pYMax = 0
const _this = this
@@ -89,10 +107,8 @@ export default {
paste(state, needAdaptor) {
if (!state.copyData) {
- toast('请选择组件')
return
}
-
const data = state.copyData.data
// 仪表板复制的组件默认不在移动端部署中mobileSelected = false
data.mobileSelected = false
diff --git a/frontend/src/components/canvas/utils/shortcutKey.js b/frontend/src/components/canvas/utils/shortcutKey.js
index 3e1dd16b7f..540c67e8c9 100644
--- a/frontend/src/components/canvas/utils/shortcutKey.js
+++ b/frontend/src/components/canvas/utils/shortcutKey.js
@@ -56,7 +56,27 @@ export function listenGlobalKeyDown() {
if (keyCode === ctrlKey || keyCode === commandKey) {
isCtrlOrCommandDown = true
} else if (isCtrlOrCommandDown) {
- if (keyCode === zKey || keyCode === yKey || keyCode === vKey || keyCode === cKey || keyCode === sKey || keyCode === enlargeKey) {
+ if (keyCode === zKey || keyCode === yKey || keyCode === cKey || keyCode === sKey || keyCode === enlargeKey) {
+ e.preventDefault()
+ unlockMap[keyCode]()
+ }
+ }
+ }
+
+ window.onkeyup = (e) => {
+ if (e.keyCode === ctrlKey || e.keyCode === commandKey) {
+ isCtrlOrCommandDown = false
+ }
+ }
+}
+
+export function listenGlobalKeyDownPreview() {
+ window.onkeydown = (e) => {
+ const { keyCode } = e
+ if (keyCode === ctrlKey || keyCode === commandKey) {
+ isCtrlOrCommandDown = true
+ } else if (isCtrlOrCommandDown) {
+ if (keyCode === enlargeKey) {
e.preventDefault()
unlockMap[keyCode]()
}
@@ -71,12 +91,11 @@ export function listenGlobalKeyDown() {
}
function copy() {
- store.commit('copy')
+ store.commit('copyToClipboard')
}
function paste() {
- store.commit('paste')
- store.commit('recordSnapshot')
+
}
function cut() {
diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue
index 9d34f0a5e5..9b0b7ff39e 100644
--- a/frontend/src/views/chart/view/ChartEdit.vue
+++ b/frontend/src/views/chart/view/ChartEdit.vue
@@ -192,7 +192,7 @@
@command="chartFieldEdit"
>
-
+
-
+
{{ $t('chart.change_chart_type') }}
-
+
@@ -490,8 +490,8 @@
>
{{
- $t('chart.drag_block_table_data_column')
- }}
+ $t('chart.drag_block_table_data_column')
+ }}
{{ $t('chart.drag_block_type_axis') }}
@@ -499,18 +499,18 @@
v-else-if="view.type && view.type.includes('pie')"
>{{ $t('chart.drag_block_pie_label') }}
{{
- $t('chart.drag_block_funnel_split')
- }}
+ $t('chart.drag_block_funnel_split')
+ }}
{{
- $t('chart.drag_block_radar_label')
- }}
+ $t('chart.drag_block_radar_label')
+ }}
{{ $t('chart.area') }}
{{
- $t('chart.drag_block_treemap_label')
- }}
+ $t('chart.drag_block_treemap_label')
+ }}
{{
- $t('chart.drag_block_word_cloud_label')
- }}
+ $t('chart.drag_block_word_cloud_label')
+ }}
{{ $t('chart.drag_block_label') }}
/
{{ $t('chart.dimension') }}
@@ -633,8 +633,8 @@
>
{{
- $t('chart.drag_block_table_data_column')
- }}
+ $t('chart.drag_block_table_data_column')
+ }}
{{ $t('chart.drag_block_value_axis') }}
@@ -642,30 +642,30 @@
v-else-if="view.type && view.type.includes('pie')"
>{{ $t('chart.drag_block_pie_angel') }}
{{
- $t('chart.drag_block_funnel_width')
- }}
+ $t('chart.drag_block_funnel_width')
+ }}
{{
- $t('chart.drag_block_radar_length')
- }}
+ $t('chart.drag_block_radar_length')
+ }}
{{
- $t('chart.drag_block_gauge_angel')
- }}
+ $t('chart.drag_block_gauge_angel')
+ }}
{{ $t('chart.drag_block_label_value') }}
{{ $t('chart.chart_data') }}
{{
- $t('chart.drag_block_treemap_size')
- }}
+ $t('chart.drag_block_treemap_size')
+ }}
{{
- $t('chart.drag_block_value_axis_main')
- }}
+ $t('chart.drag_block_value_axis_main')
+ }}
{{ $t('chart.drag_block_progress') }}
{{
- $t('chart.drag_block_word_cloud_size')
- }}
+ $t('chart.drag_block_word_cloud_size')
+ }}
/
{{ $t('chart.quota') }}
-
+
@@ -1268,7 +1268,7 @@
width="800px"
class="dialog-css"
>
-
+