|
|
|
@ -105,7 +105,7 @@
|
|
|
|
|
v-if="!hideOrShowGraffitiFlag"
|
|
|
|
|
style="color: #595959"
|
|
|
|
|
/>
|
|
|
|
|
<div style="position: absolute; bottom: -6px; right: -4px; pointer-events: none">
|
|
|
|
|
<div style="position: absolute; bottom: -12px; right: -5px; pointer-events: none">
|
|
|
|
|
<div
|
|
|
|
|
v-html="
|
|
|
|
|
`${
|
|
|
|
@ -769,7 +769,7 @@
|
|
|
|
|
function refresh() {
|
|
|
|
|
scale.value = 0.9;
|
|
|
|
|
rotationAngle.value = 0;
|
|
|
|
|
graffitiFlag.value = false;
|
|
|
|
|
// graffitiFlag.value = false;
|
|
|
|
|
getImageWidthAndHeight();
|
|
|
|
|
// 复位
|
|
|
|
|
const dragDocument: any = document.querySelector('.dragModal');
|
|
|
|
@ -777,6 +777,7 @@
|
|
|
|
|
dragDocument.style.left = 0 + 'px';
|
|
|
|
|
dragDocument.style.top = 0 + 'px';
|
|
|
|
|
}
|
|
|
|
|
document.body.style.cursor = 'default';
|
|
|
|
|
}
|
|
|
|
|
// 移动到中心位置
|
|
|
|
|
function handlerLocation() {
|
|
|
|
@ -809,6 +810,7 @@
|
|
|
|
|
// 选择当前展示图片-----------------------------------------------
|
|
|
|
|
function setNowShowImageData(value) {
|
|
|
|
|
emits('setNowShowImageData', value);
|
|
|
|
|
graffitiFlag.value = false;
|
|
|
|
|
refresh();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -817,6 +819,7 @@
|
|
|
|
|
const graffitiFlag = ref(false);
|
|
|
|
|
// 设置鼠标格式
|
|
|
|
|
function setGraffiti() {
|
|
|
|
|
refresh();
|
|
|
|
|
graffitiFlag.value = !graffitiFlag.value;
|
|
|
|
|
if (graffitiFlag.value) {
|
|
|
|
|
document.body.style.cursor = 'crosshair';
|
|
|
|
@ -960,7 +963,23 @@
|
|
|
|
|
|
|
|
|
|
// 鼠标按下
|
|
|
|
|
function onMouseDown(event) {
|
|
|
|
|
if (graffitiFlag.value || graffitis.value.some((item) => item.status != 'success')) {
|
|
|
|
|
if (!graffitiFlag.value) {
|
|
|
|
|
{
|
|
|
|
|
// 拖动
|
|
|
|
|
const dragDocument: any = document.querySelector('.dragModal');
|
|
|
|
|
isDragging.value = true;
|
|
|
|
|
initialMouseX = event.clientX;
|
|
|
|
|
initialMouseY = event.clientY;
|
|
|
|
|
initialDocumentX = dragDocument.offsetLeft;
|
|
|
|
|
initialDocumentY = dragDocument.offsetTop;
|
|
|
|
|
dragDocument.style.cursor = 'grabbing';
|
|
|
|
|
window.addEventListener('mousemove', onMouseMove);
|
|
|
|
|
window.addEventListener('mouseup', onMouseUp);
|
|
|
|
|
}
|
|
|
|
|
} else if (
|
|
|
|
|
graffitiFlag.value &&
|
|
|
|
|
(graffitis.value.length == 0 || !graffitis.value.some((item) => item.status != 'success'))
|
|
|
|
|
) {
|
|
|
|
|
// 涂鸦
|
|
|
|
|
if (nowGraffiti.value != -1) return;
|
|
|
|
|
if (graffitis.value.findIndex((item) => item.status == 'mouse') != -1) return;
|
|
|
|
@ -980,75 +999,66 @@
|
|
|
|
|
status: 'edit',
|
|
|
|
|
});
|
|
|
|
|
graffitisClone.value = cloneDeep(graffitis.value);
|
|
|
|
|
window.addEventListener('mousemove', onMouseMove);
|
|
|
|
|
window.addEventListener('mouseup', onMouseUp);
|
|
|
|
|
window.addEventListener('mousemove', onMouseMoveGraffit);
|
|
|
|
|
window.addEventListener('mouseup', onMouseUpGraffit);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 鼠标移动-涂鸦
|
|
|
|
|
function onMouseMoveGraffit(event) {
|
|
|
|
|
// 涂鸦
|
|
|
|
|
const rect = mouseCanvasRef.value.getBoundingClientRect();
|
|
|
|
|
if (!isDragging.value) return;
|
|
|
|
|
endX = event.x - rect.x;
|
|
|
|
|
endY = event.y - rect.y;
|
|
|
|
|
if (endX < 0 && endY < 0) {
|
|
|
|
|
endX = startX;
|
|
|
|
|
endY = startY;
|
|
|
|
|
}
|
|
|
|
|
setMouseData();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 鼠标松开-涂鸦
|
|
|
|
|
function onMouseUpGraffit(event) {
|
|
|
|
|
// 涂鸦
|
|
|
|
|
if (!isDragging.value) return;
|
|
|
|
|
const rect = mouseCanvasRef.value.getBoundingClientRect();
|
|
|
|
|
endX = event.x - rect.x;
|
|
|
|
|
endY = event.y - rect.y;
|
|
|
|
|
if (endX < 0 && endY < 0) {
|
|
|
|
|
endX = startX;
|
|
|
|
|
endY = startY;
|
|
|
|
|
}
|
|
|
|
|
isDragging.value = false;
|
|
|
|
|
if (event.x > rect.right || event.y > rect.bottom) {
|
|
|
|
|
graffitis.value.splice(graffitis.value.length - 1, 1);
|
|
|
|
|
nowGraffiti.value = -1;
|
|
|
|
|
} else {
|
|
|
|
|
// 拖动
|
|
|
|
|
const dragDocument: any = document.querySelector('.dragModal');
|
|
|
|
|
isDragging.value = true;
|
|
|
|
|
initialMouseX = event.clientX;
|
|
|
|
|
initialMouseY = event.clientY;
|
|
|
|
|
initialDocumentX = dragDocument.offsetLeft;
|
|
|
|
|
initialDocumentY = dragDocument.offsetTop;
|
|
|
|
|
dragDocument.style.cursor = 'grabbing';
|
|
|
|
|
window.addEventListener('mousemove', onMouseMove);
|
|
|
|
|
window.addEventListener('mouseup', onMouseUp);
|
|
|
|
|
setMouseData();
|
|
|
|
|
nowGraffiti.value = graffitis.value.length - 1;
|
|
|
|
|
}
|
|
|
|
|
window.removeEventListener('mousemove', onMouseMoveGraffit);
|
|
|
|
|
window.removeEventListener('mouseup', onMouseUpGraffit);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 鼠标移动
|
|
|
|
|
function onMouseMove(event) {
|
|
|
|
|
if (graffitiFlag.value || graffitis.value.some((item) => item.status != 'success')) {
|
|
|
|
|
// 涂鸦
|
|
|
|
|
const rect = mouseCanvasRef.value.getBoundingClientRect();
|
|
|
|
|
if (!isDragging.value) return;
|
|
|
|
|
endX = event.x - rect.x;
|
|
|
|
|
endY = event.y - rect.y;
|
|
|
|
|
if (endX < 0 && endY < 0) {
|
|
|
|
|
endX = startX;
|
|
|
|
|
endY = startY;
|
|
|
|
|
}
|
|
|
|
|
setMouseData();
|
|
|
|
|
} else {
|
|
|
|
|
// 拖动
|
|
|
|
|
const dragDocument: any = document.querySelector('.dragModal');
|
|
|
|
|
if (isDragging.value) {
|
|
|
|
|
const deltaX = event.clientX - initialMouseX;
|
|
|
|
|
const deltaY = event.clientY - initialMouseY;
|
|
|
|
|
dragDocument.style.left = initialDocumentX + deltaX + 'px';
|
|
|
|
|
dragDocument.style.top = initialDocumentY + deltaY + 'px';
|
|
|
|
|
}
|
|
|
|
|
// 拖动
|
|
|
|
|
const dragDocument: any = document.querySelector('.dragModal');
|
|
|
|
|
if (isDragging.value) {
|
|
|
|
|
const deltaX = event.clientX - initialMouseX;
|
|
|
|
|
const deltaY = event.clientY - initialMouseY;
|
|
|
|
|
dragDocument.style.left = initialDocumentX + deltaX + 'px';
|
|
|
|
|
dragDocument.style.top = initialDocumentY + deltaY + 'px';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 鼠标松开
|
|
|
|
|
function onMouseUp(event) {
|
|
|
|
|
if (graffitiFlag.value || graffitis.value.some((item) => item.status != 'success')) {
|
|
|
|
|
// 涂鸦
|
|
|
|
|
if (!isDragging.value) return;
|
|
|
|
|
const rect = mouseCanvasRef.value.getBoundingClientRect();
|
|
|
|
|
|
|
|
|
|
endX = event.x - rect.x;
|
|
|
|
|
endY = event.y - rect.y;
|
|
|
|
|
if (endX < 0 && endY < 0) {
|
|
|
|
|
endX = startX;
|
|
|
|
|
endY = startY;
|
|
|
|
|
}
|
|
|
|
|
isDragging.value = false;
|
|
|
|
|
if (event.x > rect.right || event.y > rect.bottom) {
|
|
|
|
|
graffitis.value.splice(graffitis.value.length - 1, 1);
|
|
|
|
|
nowGraffiti.value = -1;
|
|
|
|
|
} else {
|
|
|
|
|
setMouseData();
|
|
|
|
|
nowGraffiti.value = graffitis.value.length - 1;
|
|
|
|
|
}
|
|
|
|
|
window.removeEventListener('mousemove', onMouseMove);
|
|
|
|
|
window.removeEventListener('mouseup', onMouseUp);
|
|
|
|
|
} else {
|
|
|
|
|
// 拖动
|
|
|
|
|
const dragDocument: any = document.querySelector('.dragModal');
|
|
|
|
|
isDragging.value = false;
|
|
|
|
|
if (dragDocument) {
|
|
|
|
|
dragDocument.style.cursor = 'default';
|
|
|
|
|
}
|
|
|
|
|
// 拖动
|
|
|
|
|
const dragDocument: any = document.querySelector('.dragModal');
|
|
|
|
|
isDragging.value = false;
|
|
|
|
|
if (dragDocument) {
|
|
|
|
|
dragDocument.style.cursor = 'default';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 鼠标滚轮
|
|
|
|
@ -1083,10 +1093,12 @@
|
|
|
|
|
// 鼠标聚焦
|
|
|
|
|
function mouseenter(rect, type) {
|
|
|
|
|
if (graffitiFlag.value) {
|
|
|
|
|
// 鼠标聚焦状态
|
|
|
|
|
if (rect.status != 'edit') {
|
|
|
|
|
rect.status = 'mouse';
|
|
|
|
|
document.body.style.cursor = 'pointer';
|
|
|
|
|
}
|
|
|
|
|
// 编辑状态
|
|
|
|
|
if (rect.status == 'edit') {
|
|
|
|
|
if (type == 'top' || type == 'bottom') {
|
|
|
|
|
document.body.style.cursor = 'ns-resize';
|
|
|
|
@ -1110,10 +1122,8 @@
|
|
|
|
|
if (rect.status == 'mouse') {
|
|
|
|
|
rect.status = 'success';
|
|
|
|
|
}
|
|
|
|
|
if (graffitiFlag.value) {
|
|
|
|
|
if (rect.status == 'edit') {
|
|
|
|
|
document.body.style.cursor = 'crosshair';
|
|
|
|
|
} else {
|
|
|
|
|
document.body.style.cursor = 'pointer';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|