提交 d06980af authored 作者: 钟是志's avatar 钟是志

签章组件 拖拽不够精确的bug

上级 c8d2cc35
...@@ -98,11 +98,17 @@ export default function PictureSignature({ ...@@ -98,11 +98,17 @@ export default function PictureSignature({
objs: signConfig.map((g) => { objs: signConfig.map((g) => {
// 1200 的 x => 1500的 x // 1200 的 x => 1500的 x
// //
g.x = parseInt(g.x * ratioX, 10); g.x = Math.ceil(g.x * ratioX, 10);
g.y = parseInt(g.y * ratioX, 10); g.y = Math.ceil(g.y * ratioX, 10);
if (g.type === 'text') { if (g.type === 'text') {
g.fontSize = Math.ceil(g.fontSize * ratioX);
g.y = g.y + 20; g.y = g.y + 20;
g.x = g.x + 20; // g.x = g.x + 20;
}
if(g.type === 'image'){
g.w = Math.ceil(g.w * ratioX);
g.h = Math.ceil(g.h * ratioX);
} }
// console.log(g); // console.log(g);
return g; return g;
...@@ -217,6 +223,7 @@ export default function PictureSignature({ ...@@ -217,6 +223,7 @@ export default function PictureSignature({
<div <div
key={g.key} key={g.key}
data-mes={g.key} data-mes={g.key}
data-get={'draggable'} // 可拖拽元素
draggable={false} draggable={false}
className={styles.oneSetItem} className={styles.oneSetItem}
style={{ style={{
...@@ -225,8 +232,9 @@ export default function PictureSignature({ ...@@ -225,8 +232,9 @@ export default function PictureSignature({
}} }}
> >
<div className={styles.draggableIcon} <div className={styles.draggableIcon}
data-mes={g.key}
draggable={true}> draggable={true}>
<Icon type="edit"/> <Icon type="scissor" />
</div> </div>
<ShowItem {...g} <ShowItem {...g}
basicUrl={basicUrl} basicUrl={basicUrl}
......
...@@ -50,6 +50,15 @@ export const dragEventList = (setOtherProps, otherProps) => { ...@@ -50,6 +50,15 @@ export const dragEventList = (setOtherProps, otherProps) => {
// 保存拖动元素的引用(ref.) // 保存拖动元素的引用(ref.)
draggedRef = event.target; draggedRef = event.target;
// 使其半透明 // 使其半透明
draggedRef.nextSibling.style.display = 'none'; // 使兄弟元素隐藏
// let displayNoneDoms = document.querySelectorAll('div[data-get="draggable"]');
// for(let item of displayNoneDoms){
// if(item.dataset.mes !== draggedRef.dataset.mes){
// item.style.display = 'none';
// // item.style.opacity = 0.5;
// }
// }
event.target.style.opacity = 0.5; event.target.style.opacity = 0.5;
}, },
false, false,
...@@ -59,6 +68,12 @@ export const dragEventList = (setOtherProps, otherProps) => { ...@@ -59,6 +68,12 @@ export const dragEventList = (setOtherProps, otherProps) => {
(event) => { (event) => {
// 重置透明度 // 重置透明度
event.target.style.opacity = ''; event.target.style.opacity = '';
event.target.nextSibling.style.display = 'block';
// let displayNoneDoms = document.querySelectorAll("div[get=draggable]");
// for(let item of displayNoneDoms){
// item.style.display = 'block';
// // item.style.opacity = 1;
// }
}, },
false, false,
); );
...@@ -79,32 +94,59 @@ export const dragEventList = (setOtherProps, otherProps) => { ...@@ -79,32 +94,59 @@ export const dragEventList = (setOtherProps, otherProps) => {
event.preventDefault(); event.preventDefault();
// 将拖动的元素到所选择的放置目标节点中 // 将拖动的元素到所选择的放置目标节点中
// console.log('drop'); // console.log('drop');
if (event.target.id === 'dropZone') { // console.log(event.target);
let left = event.offsetX; console.log(event.clientX, event.clientY);
if (left > event.target.offsetWidth - draggedRef.offsetWidth - 10) { let infoClientRect = document.getElementById('dropZone').getBoundingClientRect();
console.log('拖拽到了图片区域外部,不能进行拖拽'); let leftNew = Math.ceil(event.clientX - infoClientRect.left);
return false; let topNew = Math.ceil(event.clientY - infoClientRect.top);
} if(leftNew < 0 || leftNew > infoClientRect.width || topNew < 0 || topNew > infoClientRect.height){
let top = event.offsetY; console.log('拖拽到了图片区域外部,不能进行拖拽');
let key = draggedRef?.dataset?.mes || draggedRef?.parentNode?.dataset?.mes; return false;
let item = otherProps.signConfig.find((g) => {
return g.key === key;
});
if(!item){
return false;
}
// left = left - (item.x /2 );
// top = top - (item.y / 2);
item.x = left;
item.y = top;
// console.log(left, top);
setOtherProps({
...otherProps,
signConfig: otherProps.signConfig,
})
draggedRef.style.left = left; // `${left}px`;
draggedRef.style.top = top; // `${top}px`;
} }
let key = draggedRef?.dataset?.mes || draggedRef?.parentNode?.dataset?.mes;
let item = otherProps.signConfig.find((g) => {
return g.key === key;
});
if(!item){
return false;
}
item.x = leftNew;
item.y = topNew;
setOtherProps({
...otherProps,
signConfig: otherProps.signConfig,
})
draggedRef.style.left = leftNew; // `${left}px`;
draggedRef.style.top = topNew; // `${top}px`;
return true;
//
// if (event.target.id === 'dropZone') {
// let left = event.offsetX;
// if (left > event.target.offsetWidth - draggedRef.offsetWidth - 10) {
// console.log('拖拽到了图片区域外部,不能进行拖拽');
// return false;
// }
// let top = event.offsetY;
// let key = draggedRef?.dataset?.mes || draggedRef?.parentNode?.dataset?.mes;
// let item = otherProps.signConfig.find((g) => {
// return g.key === key;
// });
// if(!item){
// return false;
// }
// // left = left - (item.x /2 );
// // top = top - (item.y / 2);
// item.x = left;
// item.y = top;
// // console.log(left, top);
// setOtherProps({
// ...otherProps,
// signConfig: otherProps.signConfig,
// })
// draggedRef.style.left = left; // `${left}px`;
// draggedRef.style.top = top; // `${top}px`;
// }
return true; return true;
}, },
false, false,
......
...@@ -62,4 +62,5 @@ ...@@ -62,4 +62,5 @@
top: 10; top: 10;
//border: 1px solid #f2f2f2; //border: 1px solid #f2f2f2;
color: red; color: red;
z-index: 10000;
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论