diff --git a/core/core-frontend/src/components/data-visualization/CanvasAttr.vue b/core/core-frontend/src/components/data-visualization/CanvasAttr.vue
index 90c23a19aa..67a37243fb 100644
--- a/core/core-frontend/src/components/data-visualization/CanvasAttr.vue
+++ b/core/core-frontend/src/components/data-visualization/CanvasAttr.vue
@@ -3,7 +3,7 @@ import { dvMainStoreWithOut } from '@/store/modules/data-visualization/dvMain'
import { snapshotStoreWithOut } from '@/store/modules/data-visualization/snapshot'
import { storeToRefs } from 'pinia'
import { nextTick, onMounted, ref } from 'vue'
-import { ElFormItem } from 'element-plus-secondary'
+import { ElFormItem, ElIcon } from 'element-plus-secondary'
import { merge, cloneDeep } from 'lodash-es'
import { useEmitt } from '@/hooks/web/useEmitt'
@@ -11,12 +11,20 @@ import ComponentColorSelector from '@/components/dashboard/subject-setting/dashb
import OverallSetting from '@/components/dashboard/subject-setting/dashboard-style/OverallSetting.vue'
import CanvasBackground from '@/components/visualization/component-background/CanvasBackground.vue'
import SeniorStyleSetting from '@/components/dashboard/subject-setting/dashboard-style/SeniorStyleSetting.vue'
+import Icon from '../icon-custom/src/Icon.vue'
const dvMainStore = dvMainStoreWithOut()
const snapshotStore = snapshotStoreWithOut()
const { canvasStyleData, canvasViewInfo } = storeToRefs(dvMainStore)
let canvasAttrInit = false
const canvasAttrActiveNames = ref(['size', 'background', 'color'])
+
+const screenAdaptorList = [
+ { label: '宽度优先', value: 'widthFirst' },
+ { label: '高度优先', value: 'heightFirst' },
+ { label: '铺满全屏', value: 'full' },
+ { label: '不缩放', value: 'keepSize' }
+]
const init = () => {
nextTick(() => {
canvasAttrInit = true
@@ -105,6 +113,33 @@ onMounted(() => {
+
+
+ 缩放方式
+
+
+ 预览时生效
+
+
+
+
+
+
+
+
+
+
@@ -129,6 +164,10 @@ onMounted(() => {
diff --git a/core/core-frontend/src/utils/canvasUtils.ts b/core/core-frontend/src/utils/canvasUtils.ts
index 9f65374438..385ecbf3be 100644
--- a/core/core-frontend/src/utils/canvasUtils.ts
+++ b/core/core-frontend/src/utils/canvasUtils.ts
@@ -130,6 +130,7 @@ export function historyAdaptor(
//历史字段适配
canvasStyleResult.component['seniorStyleSetting'] =
canvasStyleResult.component['seniorStyleSetting'] || deepCopy(SENIOR_STYLE_SETTING_LIGHT)
+ canvasStyleResult['screenAdaptor'] = canvasStyleResult['screenAdaptor'] || 'widthFirst'
canvasStyleResult['popupAvailable'] =
canvasStyleResult['popupAvailable'] === undefined ? true : canvasStyleResult['popupAvailable'] //兼容弹框区域开关
const reportFilterInfo = canvasInfo.reportFilterInfo
diff --git a/core/core-frontend/src/utils/changeComponentsSizeWithScale.ts b/core/core-frontend/src/utils/changeComponentsSizeWithScale.ts
index 950d8916ca..1bd6efdd84 100644
--- a/core/core-frontend/src/utils/changeComponentsSizeWithScale.ts
+++ b/core/core-frontend/src/utils/changeComponentsSizeWithScale.ts
@@ -8,16 +8,24 @@ const dvMainStore = dvMainStoreWithOut()
const { componentData, curComponentIndex, canvasStyleData } = storeToRefs(dvMainStore)
const needToChangeAttrs = ['top', 'left', 'width', 'height', 'fontSize', 'letterSpacing']
+const needToChangeDirectionAttrs = {
+ width: ['left', 'width', 'fontSize', 'letterSpacing'],
+ height: ['top', 'height']
+}
export function changeSizeWithScale(scale) {
return changeComponentsSizeWithScale(scale)
}
-export function changeComponentsSizeWithScale(scale) {
+export function changeSizeWithDirectionScale(scale, direction) {
+ return changeComponentsSizeWithScale(scale, needToChangeDirectionAttrs[direction])
+}
+
+export function changeComponentsSizeWithScale(scale, changeAttrs = needToChangeAttrs) {
const componentDataCopy = deepCopy(componentData.value)
componentDataCopy.forEach(component => {
Object.keys(component.style).forEach(key => {
- if (needToChangeAttrs.includes(key)) {
+ if (changeAttrs.includes(key)) {
if (key === 'fontSize' && component.style[key] === '') return
// 根据原来的比例获取样式原来的尺寸
// 再用原来的尺寸 * 现在的比例得出新的尺寸
@@ -52,21 +60,35 @@ export function changeComponentsSizeWithScale(scale) {
})
}
-export function changeRefComponentsSizeWithScale(componentDataRef, canvasStyleDataRef, scale) {
+export function changeRefComponentsSizeWithScale(
+ componentDataRef,
+ canvasStyleDataRef,
+ scaleWidth,
+ scaleHeight
+) {
componentDataRef.forEach(component => {
Object.keys(component.style).forEach(key => {
- if (needToChangeAttrs.includes(key)) {
- if (key === 'fontSize' && component.style[key] === '') return
+ if (key === 'fontSize' && component.style[key] === '') return
+ if (needToChangeDirectionAttrs.width.includes(key)) {
// 根据原来的比例获取样式原来的尺寸
// 再用原来的尺寸 * 现在的比例得出新的尺寸
component.style[key] = format(
getOriginStyle(component.style[key], canvasStyleDataRef.scale),
- scale
+ scaleWidth
+ )
+ } else if (needToChangeDirectionAttrs.height.includes(key)) {
+ // 根据原来的比例获取样式原来的尺寸
+ // 再用原来的尺寸 * 现在的比例得出新的尺寸
+ component.style[key] = format(
+ getOriginStyle(component.style[key], canvasStyleDataRef.scale),
+ scaleHeight
)
}
})
})
- canvasStyleDataRef.scale = scale
+ canvasStyleDataRef.scale = scaleWidth
+ canvasStyleDataRef.scaleWidth = scaleWidth
+ canvasStyleDataRef.scaleHeight = scaleHeight
}
const needToChangeAttrs2 = ['width', 'height', 'fontSize']
diff --git a/core/core-frontend/src/views/chart/components/editor/util/dataVisualization.ts b/core/core-frontend/src/views/chart/components/editor/util/dataVisualization.ts
index 10fb24790e..ea8f05674e 100644
--- a/core/core-frontend/src/views/chart/components/editor/util/dataVisualization.ts
+++ b/core/core-frontend/src/views/chart/components/editor/util/dataVisualization.ts
@@ -85,6 +85,7 @@ export const DEFAULT_CANVAS_STYLE_DATA_BASE = {
refreshUnit: 'minute', // 仪表板刷新时间带外 默认 分钟
refreshTime: 5, // 仪表板刷新时间 默认5分钟
popupAvailable: true, // 弹窗区域是否可用 默认为true
+ screenAdaptor: 'widthFirst', // 屏幕适配方式 widthFirst=宽度优先 heightFirst=高度优先 full=铺满全屏 keepSize=不缩放
scale: 60,
scaleWidth: 100,
scaleHeight: 100,