优化Signature

master
LiuJiaNan 2025-11-15 17:13:57 +08:00
parent d887d709b6
commit d6e0c2b396
2 changed files with 8 additions and 2 deletions

View File

@ -16,6 +16,8 @@ export interface SignatureProps {
width?: number; width?: number;
/** 签字区域高度,默认为 300 */ /** 签字区域高度,默认为 300 */
height?: number; height?: number;
/** 回显的签字图片 */
url?: string;
} }
/** /**

View File

@ -1,6 +1,6 @@
import { Button, Image, message, Modal } from "antd"; import { Button, Image, message, Modal } from "antd";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useRef, useState } from "react"; import { useEffect, useRef, useState } from "react";
import SignatureCanvas from "react-signature-canvas"; import SignatureCanvas from "react-signature-canvas";
import { base642File } from "../../utils"; import { base642File } from "../../utils";
@ -12,12 +12,16 @@ function Signature(props) {
onConfirm, onConfirm,
width = 752, width = 752,
height = 300, height = 300,
url = "",
...restProps ...restProps
} = props; } = props;
const [signatureModalOpen, setSignatureModalOpen] = useState(false); const [signatureModalOpen, setSignatureModalOpen] = useState(false);
const signatureCanvas = useRef(null); const signatureCanvas = useRef(null);
const [base64, setBase64] = useState(""); const [base64, setBase64] = useState("");
useEffect(() => {
setBase64(url);
}, [url]);
const onOk = () => { const onOk = () => {
if (signatureCanvas.current.isEmpty()) { if (signatureCanvas.current.isEmpty()) {
@ -49,7 +53,7 @@ function Signature(props) {
</div> </div>
{base64 && ( {base64 && (
<div style={{ border: "1px dashed #d9d9d9", width, height, marginTop: 16 }}> <div style={{ border: "1px dashed #d9d9d9", width, height, marginTop: 16 }}>
<Image src={base64} /> <Image src={base64} style={{ width, height, objectFit: "contain" }} />
</div> </div>
)} )}
<Modal <Modal