zjk
2026-07-31 dc2872d6d346a7de629b3b0686057ab54f216f09
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) {
@@ -231,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) {
@@ -246,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,
@@ -271,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
@@ -286,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