From 911d0d17acced1ad45523d151cab87eb73b69751 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E5=98=89=E8=B1=AA?=
<42510293+ziyujiahao@users.noreply.github.com>
Date: Mon, 4 Aug 2025 10:23:24 +0800
Subject: [PATCH] =?UTF-8?q?feat(=E4=BB=AA=E8=A1=A8=E6=9D=BF=E3=80=81?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=A7=E5=B1=8F):=20=E5=9B=BE=E7=89=87?=
=?UTF-8?q?=E7=BB=84=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AE=E5=88=B7=E6=96=B0?=
=?UTF-8?q?=E9=A2=91=E7=8E=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../custom-component/picture-group/Attr.vue | 10 +++
.../picture-group/Component.vue | 37 ++++++++++-
.../picture-group/PictureGroupUploadAttr.vue | 61 ++++++++++++++++++-
3 files changed, 106 insertions(+), 2 deletions(-)
diff --git a/core/core-frontend/src/custom-component/picture-group/Attr.vue b/core/core-frontend/src/custom-component/picture-group/Attr.vue
index 4ad2b096eb..4a432e8ac9 100644
--- a/core/core-frontend/src/custom-component/picture-group/Attr.vue
+++ b/core/core-frontend/src/custom-component/picture-group/Attr.vue
@@ -32,6 +32,7 @@ const { curComponent, canvasViewInfo, mobileInPc, batchOptStatus } = storeToRefs
@@ -81,4 +82,13 @@ const { curComponent, canvasViewInfo, mobileInPc, batchOptStatus } = storeToRefs
justify-content: flex-start;
}
}
+
+.refresh-area {
+ width: 100%;
+ padding: 0 8px;
+
+ .no-margin-bottom {
+ margin-bottom: 8px;
+ }
+}
diff --git a/core/core-frontend/src/custom-component/picture-group/Component.vue b/core/core-frontend/src/custom-component/picture-group/Component.vue
index 5eb2775d97..8cc0fa4e5e 100644
--- a/core/core-frontend/src/custom-component/picture-group/Component.vue
+++ b/core/core-frontend/src/custom-component/picture-group/Component.vue
@@ -60,6 +60,12 @@ const props = defineProps({
type: String,
default: 'preview'
},
+ // 仪表板刷新计时器
+ searchCount: {
+ type: Number,
+ required: false,
+ default: 0
+ },
view: {
type: Object as PropType,
default() {
@@ -76,11 +82,39 @@ const dataRowNameSelect = ref({})
const dataRowFiledName = ref([])
let carouselTimer = null
const { element, view, showPosition } = toRefs(props)
-
+let innerRefreshTimer = null
+let innerSearchCount = 0
const isEditMode = computed(
() => showPosition.value.includes('canvas') && !mobileInPc.value && !fullscreenFlag.value
)
+watch([() => props.searchCount], () => {
+ // 内部计时器启动 忽略外部计时器
+ if (!innerRefreshTimer) {
+ calcData(view.value, () => {
+ // do searchCount
+ })
+ }
+})
+
+// 编辑状态下 不启动刷新
+const buildInnerRefreshTimer = (
+ refreshViewEnable = false,
+ refreshUnit = 'minute',
+ refreshTime = 5
+) => {
+ if (showPosition.value === 'preview' && !innerRefreshTimer && refreshViewEnable) {
+ innerRefreshTimer && clearInterval(innerRefreshTimer)
+ const timerRefreshTime = refreshUnit === 'second' ? refreshTime * 1000 : refreshTime * 60000
+ innerRefreshTimer = setInterval(() => {
+ calcData(view.value, () => {
+ // do innerRefreshTimer
+ })
+ innerSearchCount++
+ }, timerRefreshTime)
+ }
+}
+
watch(
() => isEditMode.value,
() => {
@@ -262,6 +296,7 @@ onBeforeMount(() => {
clearInterval(carouselTimer)
carouselTimer = null
}
+ buildInnerRefreshTimer()
})
defineExpose({
diff --git a/core/core-frontend/src/custom-component/picture-group/PictureGroupUploadAttr.vue b/core/core-frontend/src/custom-component/picture-group/PictureGroupUploadAttr.vue
index 32b341e7aa..6bcc9691a4 100644
--- a/core/core-frontend/src/custom-component/picture-group/PictureGroupUploadAttr.vue
+++ b/core/core-frontend/src/custom-component/picture-group/PictureGroupUploadAttr.vue
@@ -28,12 +28,16 @@ const props = defineProps({
}
}
}
+ },
+ view: {
+ type: Object,
+ required: true
}
})
const dvMainStore = dvMainStoreWithOut()
const snapshotStore = snapshotStoreWithOut()
-const { element } = toRefs(props)
+const { element, view } = toRefs(props)
const { curComponent } = storeToRefs(dvMainStore)
@@ -106,6 +110,14 @@ watch(
}
)
+const onRefreshChange = val => {
+ onStyleChange()
+ if (val === '' || parseFloat(val).toString() === 'NaN' || parseFloat(val) < 1) {
+ ElMessage.error(t('chart.only_input_number'))
+ return
+ }
+}
+
onMounted(() => {
init()
eventBus.on('uploadImg', goFile)
@@ -171,6 +183,49 @@ onBeforeUnmount(() => {
+
+
+
+ {{ t('visualization.refresh_frequency') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -331,4 +386,8 @@ onBeforeUnmount(() => {
border-top: none !important;
}
}
+
+.refresh-area {
+ width: 100%;
+}