|
|
@@ -15,6 +15,7 @@
|
|
|
<el-select v-model="editRowData.point_name" placeholder="请选择点位" style="width: 170px;" @focus="refreshPointList">
|
|
|
<el-option v-for="point in availablePoints" :key="point" :label="'点位 ' + point" :value="point"/>
|
|
|
</el-select>
|
|
|
+ <el-button size="small" plain style="margin-left: 8px;" @click="onRefreshPointList" v-log="{ describe: { action: '点击刷新点位列表' } }">刷新点位</el-button>
|
|
|
</el-form-item>
|
|
|
|
|
|
<!-- 多相机模式 - 仅拍照模式 -->
|
|
|
@@ -123,6 +124,7 @@ const isMultiCameraMode = computed(() => userInfoStore.isMultiCameraMode)
|
|
|
const availablePoints = ref<string[]>(['A'])
|
|
|
|
|
|
// 刷新点位列表(从 getAllUserConfigs API 获取已绑定相机的点位)
|
|
|
+// 同时会校验当前选中的点位:若该点位已不再可用,自动回退到第一个可用点位
|
|
|
const refreshPointList = async () => {
|
|
|
try {
|
|
|
const result = await getAllUserConfigs({})
|
|
|
@@ -139,6 +141,35 @@ const refreshPointList = async () => {
|
|
|
if (availablePoints.value.length === 0) {
|
|
|
availablePoints.value = ['A']
|
|
|
}
|
|
|
+
|
|
|
+ // 若当前选中的点位已经不在可用列表里(例如在设置页修改相机配置后),
|
|
|
+ // 自动回退到第一个可用点位,避免下拉框停留在一个无效值上
|
|
|
+ if (
|
|
|
+ isMultiCameraMode.value &&
|
|
|
+ initStatus.value &&
|
|
|
+ editRowData.value.point_name &&
|
|
|
+ !availablePoints.value.includes(editRowData.value.point_name)
|
|
|
+ ) {
|
|
|
+ editRowData.value.point_name = availablePoints.value[0]
|
|
|
+ ElMessage.warning(`原点位相机不可用,已自动切换到点位 ${availablePoints.value[0]}`)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 点击「刷新点位」按钮:重新拉取点位列表,并强制通知父组件按当前选中的点位刷新预览。
|
|
|
+ * 解决:在设置页修改相机配置后,因 el-select 单选项不展开 / @focus 不触发,
|
|
|
+ * 导致 availablePoints 无法更新、当前点位可能已无效。
|
|
|
+ */
|
|
|
+const onRefreshPointList = async () => {
|
|
|
+ const previousPoint = editRowData.value.point_name
|
|
|
+ await refreshPointList()
|
|
|
+ // 即便点位没变也 emit 一次,确保父组件预览按最新点位重新打开
|
|
|
+ // (watch 监听 point_name 在新旧值相同时不会触发,这里手动补一次)
|
|
|
+ if (editRowData.value.point_name) {
|
|
|
+ emit('onPointChange', editRowData.value.point_name)
|
|
|
+ } else if (previousPoint !== editRowData.value.point_name && availablePoints.value[0]) {
|
|
|
+ emit('onPointChange', availablePoints.value[0])
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 定义 props
|