|
@@ -286,10 +286,21 @@ const startDrag = (e: MouseEvent) => {
|
|
const startY = e.clientY
|
|
const startY = e.clientY
|
|
const initLeft = pixelPosition.left
|
|
const initLeft = pixelPosition.left
|
|
const initTop = pixelPosition.top
|
|
const initTop = pixelPosition.top
|
|
|
|
+ const canvasSize = props.canvasSize
|
|
|
|
|
|
const onMove = (ev: MouseEvent) => {
|
|
const onMove = (ev: MouseEvent) => {
|
|
- pixelPosition.left = initLeft + (ev.clientX - startX)
|
|
|
|
- pixelPosition.top = initTop + (ev.clientY - startY)
|
|
|
|
|
|
+ // 计算新的位置
|
|
|
|
+ let newLeft = initLeft + (ev.clientX - startX)
|
|
|
|
+ let newTop = initTop + (ev.clientY - startY)
|
|
|
|
+
|
|
|
|
+ // 边界检查 - 确保家具不会超出画布
|
|
|
|
+ newLeft = Math.max(0, Math.min(newLeft, canvasSize - boundingBox.value.width))
|
|
|
|
+ newTop = Math.max(0, Math.min(newTop, canvasSize - boundingBox.value.height))
|
|
|
|
+
|
|
|
|
+ // 更新位置
|
|
|
|
+ pixelPosition.left = newLeft
|
|
|
|
+ pixelPosition.top = newTop
|
|
|
|
+
|
|
updateGeoPosition()
|
|
updateGeoPosition()
|
|
emit('update', { ...localItem })
|
|
emit('update', { ...localItem })
|
|
}
|
|
}
|