|
|
@@ -15,20 +15,17 @@
|
|
|
@dragstart="handleDragStart()"
|
|
|
>
|
|
|
<v-image :config="camera.config" />
|
|
|
- <!-- <v-image :config="defaultIconConfig2" /> -->
|
|
|
<v-image v-if="camera.isDefault" ref="defaultIcon" :config="defaultIconConfig" />
|
|
|
</v-group>
|
|
|
- <!-- <v-image ref="defaultIcon" :config="defaultIconConfig" /> -->
|
|
|
<v-transformer :config="transformerConfig" ref="transformer" />
|
|
|
</v-layer>
|
|
|
</v-stage>
|
|
|
- <!-- <OptBar :disabled="defaultShow" /> -->
|
|
|
<div
|
|
|
@click="setDefaultCamera"
|
|
|
v-show="defaultShow"
|
|
|
class="opt-container"
|
|
|
:style="{ position: 'absolute', left: posX + 'px', top: posY + 'px' }"
|
|
|
- ><div class="opt-item">设为默认相机</div></div
|
|
|
+ ><div class="opt-item" :class="{ disabled: disabledSet }">设为默认相机</div></div
|
|
|
>
|
|
|
<DefaultTip
|
|
|
v-show="tipShow"
|
|
|
@@ -50,7 +47,7 @@
|
|
|
|
|
|
const globSetting = useGlobSetting();
|
|
|
|
|
|
- const emit = defineEmits(['changeDefaultCarema', 'delete']);
|
|
|
+ const emit = defineEmits(['changeDefaultCamera', 'sendCameraId']);
|
|
|
|
|
|
interface caremasImgType {
|
|
|
x?: number;
|
|
|
@@ -97,6 +94,7 @@
|
|
|
//默认相机id
|
|
|
const defaultCameraId = ref('');
|
|
|
const tipShow = ref(false);
|
|
|
+ const disabledSet = ref(false);
|
|
|
|
|
|
//标签
|
|
|
const layer = ref();
|
|
|
@@ -141,7 +139,6 @@
|
|
|
const stage = transformer.value.getNode().getStage();
|
|
|
const defaultNode = stage.findOne('#defaultIcon');
|
|
|
const tipPosition = defaultNode.absolutePosition();
|
|
|
-
|
|
|
posTipX.value = Number(tipPosition?.x.toFixed(2)) || 0;
|
|
|
posTipY.value = Number(tipPosition?.y.toFixed(2)) || 0;
|
|
|
const angle = group.rotation() >= 0 ? group.rotation() : group.rotation() + 360;
|
|
|
@@ -163,7 +160,6 @@
|
|
|
posTipY.value -= 61;
|
|
|
posTipX.value -= 43;
|
|
|
}
|
|
|
- // createDefaultTip(x, y, pos);
|
|
|
}
|
|
|
};
|
|
|
const handleMouseLeave = () => {
|
|
|
@@ -179,6 +175,7 @@
|
|
|
|
|
|
const handleStageClick = (e: any) => {
|
|
|
defaultShow.value = false;
|
|
|
+ disabledSet.value = false;
|
|
|
document.oncontextmenu = () => {
|
|
|
return false;
|
|
|
};
|
|
|
@@ -190,7 +187,8 @@
|
|
|
lastClickedGroupId.value = parent.id();
|
|
|
posX.value = e.evt.offsetX + 20;
|
|
|
posY.value = e.evt.offsetY;
|
|
|
- defaultShow.value = defaultCameraId.value !== parent.id();
|
|
|
+ disabledSet.value = defaultCameraId.value === parent.id();
|
|
|
+ defaultShow.value = true;
|
|
|
}
|
|
|
} else {
|
|
|
lastClickedGroupId.value = null;
|
|
|
@@ -205,7 +203,6 @@
|
|
|
const transformerNode = transformer.value.getNode();
|
|
|
const stage = transformerNode.getStage();
|
|
|
const cameraNode = stage.findOne('#' + camera.id);
|
|
|
-
|
|
|
// 将变换器附加到点击的相机
|
|
|
transformerNode.nodes([cameraNode]);
|
|
|
transformerNode.moveToTop();
|
|
|
@@ -236,7 +233,6 @@
|
|
|
isDefault: false,
|
|
|
};
|
|
|
cameras.value.push(cameraDetail);
|
|
|
-
|
|
|
//当只有一个相机时,自动设置默认相机
|
|
|
if (cameras.value.length === 1) {
|
|
|
cameras.value[0].isDefault = true;
|
|
|
@@ -257,6 +253,22 @@
|
|
|
defaultShow.value = false;
|
|
|
};
|
|
|
|
|
|
+ watch(
|
|
|
+ lastClickedGroupId,
|
|
|
+ () => {
|
|
|
+ emit('changeDefaultCamera', lastClickedGroupId.value);
|
|
|
+ },
|
|
|
+ { immediate: true },
|
|
|
+ );
|
|
|
+
|
|
|
+ watch(
|
|
|
+ () => cameras,
|
|
|
+ () => {
|
|
|
+ emit('sendCameraId', cameras.value);
|
|
|
+ },
|
|
|
+ { immediate: true, deep: true },
|
|
|
+ );
|
|
|
+
|
|
|
const addBg = (imgBg) => {
|
|
|
bgImgUrl.value = imgBg;
|
|
|
bgImg.src = urlJoin(globSetting.imgUrl!, imgBg) as string;
|
|
|
@@ -301,6 +313,8 @@
|
|
|
}
|
|
|
const index = cameras.value.findIndex((item) => item.id === lastClickedGroupId.value);
|
|
|
index >= 0 && cameras.value.splice(index, 1);
|
|
|
+ lastClickedGroupId.value = '';
|
|
|
+
|
|
|
//取消transformer
|
|
|
const transformerNode = transformer.value.getNode();
|
|
|
transformerNode.nodes([]);
|
|
|
@@ -330,8 +344,6 @@
|
|
|
cameras.value = layout.cameraList;
|
|
|
};
|
|
|
|
|
|
- watch();
|
|
|
-
|
|
|
defineExpose({ addBg, createMap, resetMap, addCamera, resizeContainer, saveLayout });
|
|
|
|
|
|
onMounted(() => {
|
|
|
@@ -369,4 +381,10 @@
|
|
|
background-color: #f1f2f5;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .disabled {
|
|
|
+ background-color: #f1f2f5;
|
|
|
+ color: #bcbdc0;
|
|
|
+ cursor: not-allowed;
|
|
|
+ }
|
|
|
</style>
|