From 65c64844d1db034194c80c7c10f2f29ceba6ee20 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=20#16584=20(#16605)?=
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 | 63 ++++++++++++++++++-
3 files changed, 107 insertions(+), 3 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 c516223d23..e41e940de1 100644
--- a/core/core-frontend/src/custom-component/picture-group/Attr.vue
+++ b/core/core-frontend/src/custom-component/picture-group/Attr.vue
@@ -31,6 +31,7 @@ const { curComponent, canvasViewInfo, mobileInPc, batchOptStatus } = storeToRefs
@@ -80,4 +81,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 0ce6b1e973..b9a1d91d9d 100644
--- a/core/core-frontend/src/custom-component/picture-group/Component.vue
+++ b/core/core-frontend/src/custom-component/picture-group/Component.vue
@@ -59,6 +59,12 @@ const props = defineProps({
type: String,
default: 'preview'
},
+ // 仪表板刷新计时器
+ searchCount: {
+ type: Number,
+ required: false,
+ default: 0
+ },
view: {
type: Object as PropType,
default() {
@@ -75,11 +81,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,
() => {
@@ -255,6 +289,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 8533585372..dda734786b 100644
--- a/core/core-frontend/src/custom-component/picture-group/PictureGroupUploadAttr.vue
+++ b/core/core-frontend/src/custom-component/picture-group/PictureGroupUploadAttr.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 { ElIcon } from 'element-plus-secondary'
+import { ElIcon, ElMessage } from 'element-plus-secondary'
import { ref, onMounted, onBeforeUnmount, watch, PropType } from 'vue'
import { beforeUploadCheck, uploadFileResult } from '@/api/staticResource'
import { imgUrlTrans } from '@/utils/imgUtils'
@@ -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)
@@ -97,6 +101,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)
@@ -162,6 +174,49 @@ onBeforeUnmount(() => {
+
+
+
+ {{ t('visualization.refresh_frequency') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -322,4 +377,8 @@ onBeforeUnmount(() => {
border-top: none !important;
}
}
+
+.refresh-area {
+ width: 100%;
+}