From 8665daa7aa863f96d0d8f27c167edae1efc38022 Mon Sep 17 00:00:00 2001
From: zjk <852185829@qq.com>
Date: 星期五, 31 七月 2026 14:46:19 +0800
Subject: [PATCH] Merge branch 'master' into dev

---
 visitor-admin-ui/js/version-update.js |   41 ++++++++++++++++++++++++++++-------------
 1 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/visitor-admin-ui/js/version-update.js b/visitor-admin-ui/js/version-update.js
index 33bfd5b..6c8622f 100644
--- a/visitor-admin-ui/js/version-update.js
+++ b/visitor-admin-ui/js/version-update.js
@@ -3,7 +3,7 @@
     apiBaseUrl: "http://localhost:9098"
   }, window.VISITOR_LOGIN_CONFIG || {});
 
-  var MAX_PACKAGE_SIZE = 60 * 1024 * 1024;
+  var MAX_PACKAGE_SIZE = 200 * 1024 * 1024;
   var state = {
     pageNum: 1,
     pageSize: 20,
@@ -69,6 +69,7 @@
   function bindPageActions() {
     var uploadDrop = document.getElementById("uploadDrop");
     var packageFile = document.getElementById("packageFile");
+    var versionNoInput = document.getElementById("versionNo");
 
     document.getElementById("addVersionButton").addEventListener("click", openAddModal);
     document.getElementById("versionForm").addEventListener("submit", function (event) {
@@ -78,6 +79,10 @@
         return;
       }
       saveVersion();
+    });
+
+    versionNoInput.addEventListener("input", function () {
+      versionNoInput.value = versionNoInput.value.replace(/[^\d.]/g, "").replace(/\.{2,}/g, ".");
     });
 
     document.querySelectorAll("[data-close='version']").forEach(function (button) {
@@ -155,11 +160,6 @@
         '  <td>' + escapeHtml(item.versionNo || "-") + '</td>',
         '  <td class="version-content-cell">',
         '    <span class="version-content-text">' + escapeHtml(item.updateContent || "-") + '</span>',
-        '    <div class="content-preview">',
-        '      <div class="preview-index">' + rowIndex + '</div>',
-        '      <div class="preview-content">' + escapeHtml(item.updateContent || "-") + '</div>',
-        '      <div class="preview-foot">' + escapeHtml(item.packageName || "安装包") + ' ' + escapeHtml(shortDate(item.createTime)) + '</div>',
-        '    </div>',
         '  </td>',
         '  <td>' + escapeHtml(item.createTime || "-") + '</td>',
         '  <td><div class="table-actions">',
@@ -236,11 +236,15 @@
 
   function saveVersion() {
     var saveButton = document.getElementById("saveVersionButton");
-    var versionNo = normalizeVersionNo(document.getElementById("versionNo").value);
+    var versionNumber = document.getElementById("versionNo").value.trim();
     var updateContent = document.getElementById("updateContent").value.trim();
 
-    if (!versionNo) {
+    if (!versionNumber) {
       AppMessage.error("操作失败:请输入版本号");
+      return;
+    }
+    if (!/^\d+(\.\d+)*$/.test(versionNumber)) {
+      AppMessage.error("操作失败:版本号格式不正确,请输入数字或使用小数点分隔");
       return;
     }
     if (!updateContent) {
@@ -251,13 +255,17 @@
       AppMessage.error("操作失败:请上传安装包");
       return;
     }
+    if (isPackageTooLarge(state.packageFile)) {
+      AppMessage.error("操作失败:安装包大小必须小于200M");
+      return;
+    }
 
     saveButton.disabled = true;
     uploadPackage().then(function (fileInfo) {
       return apiRequest("/system/version/update/add", {
         method: "POST",
         body: JSON.stringify({
-          versionNo: versionNo,
+          versionNo: normalizeVersionNo(versionNumber),
           updateContent: updateContent,
           packageUrl: fileInfo.url || fileInfo.fileName || "",
           packageName: fileInfo.originalFilename || fileInfo.newFileName || state.packageFile.name,
@@ -276,9 +284,12 @@
   }
 
   function uploadPackage() {
+    if (isPackageTooLarge(state.packageFile)) {
+      return Promise.reject(new Error("安装包大小必须小于200M"));
+    }
     var formData = new FormData();
     formData.append("file", state.packageFile);
-    return apiRequest("/common/upload", {
+    return apiRequest("/system/version/update/upload", {
       method: "POST",
       body: formData,
       skipJson: true
@@ -291,20 +302,24 @@
       updatePackageTip();
       return;
     }
-    if (file.size > MAX_PACKAGE_SIZE) {
+    if (isPackageTooLarge(file)) {
       state.packageFile = null;
       document.getElementById("packageFile").value = "";
       updatePackageTip();
-      AppMessage.error("操作失败:安装包大小不能超过60M");
+      AppMessage.error("操作失败:安装包大小必须小于200M");
       return;
     }
     state.packageFile = file;
     updatePackageTip(file.name);
   }
 
+  function isPackageTooLarge(file) {
+    return !!file && file.size >= MAX_PACKAGE_SIZE;
+  }
+
   function updatePackageTip(fileName) {
     var uploadDrop = document.getElementById("uploadDrop");
-    var text = fileName || "请上传安装包文件,大小在60M以内";
+    var text = fileName || "请上传安装包文件,大小须小于200M";
     document.getElementById("packageTip").textContent = text;
     uploadDrop.classList.toggle("has-file", !!fileName);
     uploadDrop.querySelector("span").innerHTML = fileName

--
Gitblit v1.7.1