diff --git a/certificate.html b/certificate.html
index 597626d..eb70fbe 100644
--- a/certificate.html
+++ b/certificate.html
@@ -431,6 +431,7 @@
+
@@ -708,10 +709,36 @@
// 保存签名
function saveSignature() {
if (!canvas) return;
- // 将画布转换为base64编码
- const signatureData = canvas.toDataURL('image/png');
- // 存储到隐藏输入字段
- document.getElementById('signature').value = signatureData;
+
+ // 检查画布是否有内容
+ const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
+ const data = imageData.data;
+ let hasContent = false;
+
+ // 遍历像素数据,检查是否有非背景色的像素
+ for (let i = 0; i < data.length; i += 4) {
+ const r = data[i];
+ const g = data[i + 1];
+ const b = data[i + 2];
+ const a = data[i + 3];
+
+ // 检查是否不是透明像素且不是背景色(#f8f9fa)
+ if (a > 0 && !(r === 248 && g === 249 && b === 250)) {
+ hasContent = true;
+ break;
+ }
+ }
+
+ // 只有当画布有内容时才存储签名数据
+ if (hasContent) {
+ // 将画布转换为base64编码
+ const signatureData = canvas.toDataURL('image/png');
+ // 存储到隐藏输入字段
+ document.getElementById('signature').value = signatureData;
+ } else {
+ // 画布为空,清空签名字段
+ document.getElementById('signature').value = '';
+ }
}
// 清除表单
@@ -731,11 +758,11 @@
// 检查提交状态
function checkSubmissionStatus() {
const sessionId = getSessionId();
- const hasSubmitted = localStorage.getItem('certificateSubmitted_' + sessionId);
+ const hasSubmitted = sessionStorage.getItem('certificateSubmitted_' + sessionId);
if (hasSubmitted) {
// 已提交过,显示提示
- if (confirm('您已填写过信息,需要导出当前信息吗?')) {
+ if (confirm('您已填写过信息,需要导出当前信息吗?\n\n如果需要填写新信息,请点击取消后选择"重置提交"。')) {
// 触发导出信息按钮的点击事件
document.getElementById('exportBtn').click();
}
@@ -769,6 +796,19 @@
});
}
+ // 重置提交状态
+ function resetSubmissionStatus() {
+ const sessionId = getSessionId();
+
+ if (confirm('确定要重置提交状态吗?\n\n重置后您将可以重新填写新的合格证信息,同时之前导出的二维码仍然可以查看对应的数据。')) {
+ // 清除会话存储的提交标记
+ sessionStorage.removeItem('certificateSubmitted_' + sessionId);
+
+ // 刷新页面,显示空状态
+ location.reload();
+ }
+ }
+
// 生成二维码并显示
function generateQRCode(url) {
// 创建二维码容器
@@ -865,6 +905,50 @@
// 保存签名
saveSignature();
+ // 验证必填字段
+ const subjectName = document.getElementById('subjectName').value.trim();
+ const productName = document.getElementById('productName').value.trim();
+ const weight = document.getElementById('weight').value.trim();
+ const basis = document.getElementById('basis').value.trim();
+ const origin = document.getElementById('origin').value.trim();
+ const contact = document.getElementById('contact').value.trim();
+ const date = document.getElementById('date').value;
+ const signature = document.getElementById('signature').value;
+
+ // 检查所有必填字段
+ if (!subjectName) {
+ alert('请填写主体名称');
+ return;
+ }
+ if (!productName) {
+ alert('请填写产品名称');
+ return;
+ }
+ if (!weight) {
+ alert('请填写产品重量');
+ return;
+ }
+ if (!basis) {
+ alert('请填写承诺依据');
+ return;
+ }
+ if (!origin) {
+ alert('请填写产地');
+ return;
+ }
+ if (!contact) {
+ alert('请填写联系方式');
+ return;
+ }
+ if (!date) {
+ alert('请选择开具日期');
+ return;
+ }
+ if (!signature) {
+ alert('请进行手写签名');
+ return;
+ }
+
// 收集表单数据
const formData = new FormData(this);
const certificate = {};
@@ -896,7 +980,7 @@
if (data.success) {
// 标记为已提交
const sessionId = getSessionId();
- localStorage.setItem('certificateSubmitted_' + sessionId, 'true');
+ sessionStorage.setItem('certificateSubmitted_' + sessionId, 'true');
// 显示结果
displayCertificate(data.certificate);