Browse Source

Merge branch '线上版本' of http://121.40.253.172:3000/longyong/jsh_erp_app into 线上版本

hi 1 tháng trước cách đây
mục cha
commit
f8db1b5cdd
2 tập tin đã thay đổi với 94 bổ sung37 xóa
  1. 93 36
      common/utils/app-update.js
  2. 1 1
      env.js

+ 93 - 36
common/utils/app-update.js

@@ -1,42 +1,99 @@
 export function downloadApkWithJsonPost(apiUrl, requestData) {
-  fetch(apiUrl, {
-    method: "POST",
-    headers: {
-      "Content-Type": "application/json",
-    },
-    body: JSON.stringify(requestData),
-  })
-    .then((response) => {
-      if (!response.ok) throw new Error("下载失败");
-      return response.blob(); // 获取二进制 APK 文件
-    })
-    .then((blob) => {
-      saveBlobToFile(blob); // 保存到本地
-    })
-    .catch((err) => {
-      plus.nativeUI.alert("更新失败:" + err.message);
-    });
-}
+  // 下载文件的本地存储路径
+  const downloadPath = "_doc/update/";
+  const apkFileName = "app.apk";
+  const apkFilePath = downloadPath + apkFileName;
 
-function saveBlobToFile(blob) {
-  const apkPath = "_doc/update/app.apk";
-
-  plus.io.resolveLocalFileSystemURL("_doc/", function (dirEntry) {
-    dirEntry.getDirectory("update", { create: true }, function (updateDir) {
-      updateDir.getFile("app.apk", { create: true }, function (fileEntry) {
-        fileEntry.createWriter(function (writer) {
-          writer.onwrite = function () {
-            console.log("文件保存成功");
-            installApk(fileEntry.toLocalURL());
-          };
-          writer.onerror = function (e) {
-            plus.nativeUI.alert("保存文件失败:" + e.message);
-          };
-          writer.write(blob);
-        });
-      });
+  // 显示下载进度
+  let downloadTask;
+  const progressTip = plus.nativeUI.showWaiting("准备下载更新...");
+
+  try {
+    // 确保下载目录存在
+    plus.io.resolveLocalFileSystemURL(
+      "_doc/",
+      function (entry) {
+        entry.getDirectory(
+          "update",
+          { create: true },
+          function (dirEntry) {
+            startDownload();
+          },
+          function (err) {
+            handleError("创建下载目录失败:" + JSON.stringify(err));
+          }
+        );
+      },
+      function (err) {
+        handleError("访问存储失败:" + JSON.stringify(err));
+      }
+    );
+  } catch (e) {
+    handleError("初始化下载失败:" + e.message);
+  }
+
+  function startDownload() {
+    // 创建下载任务
+    downloadTask = plus.downloader.createDownload(
+      apiUrl,
+      {
+        method: "POST",
+        data: JSON.stringify(requestData),
+        filename: apkFilePath,
+      },
+      function (download, status) {
+        progressTip.close();
+
+        // 下载完成
+        if (status === 200) {
+          console.log("下载成功: " + download.filename);
+          installApk(download.filename);
+        } else {
+          handleError("下载失败,状态码: " + status);
+        }
+      }
+    );
+
+    // 设置POST请求头
+    downloadTask.setRequestHeader("Content-Type", "application/json");
+
+    // 监听下载进度
+    downloadTask.addEventListener("statechanged", function (task, status) {
+      switch (task.state) {
+        case 1: // 开始
+          progressTip.setTitle("开始下载...");
+          break;
+        case 2: // 已连接到服务器
+          progressTip.setTitle("已连接到服务器...");
+          break;
+        case 3: // 接收数据
+          const progress = parseInt(
+            (task.downloadedSize / task.totalSize) * 100
+          );
+          progressTip.setTitle(`正在下载更新包(${progress}%)...`);
+          break;
+        case 4: // 下载完成
+          progressTip.setTitle("下载完成,准备安装...");
+          break;
+      }
     });
-  });
+
+    // 启动下载
+    downloadTask.start();
+  }
+
+  function handleError(message) {
+    if (progressTip) {
+      progressTip.close();
+    }
+
+    if (downloadTask && downloadTask.state < 4) {
+      downloadTask.abort();
+    }
+
+    console.error("下载错误:", message);
+    plus.nativeUI.alert(message);
+  }
 }
 
 function installApk(filepath) {

+ 1 - 1
env.js

@@ -1,7 +1,7 @@
 /**
  *  全局配置文件
  */
-export const BASE_URL = process.env.NODE_ENV === "development" ? 'http://192.168.168.42:8080' : 'https://erp.xianglitech.com.cn/prod-api'
+export const BASE_URL = process.env.NODE_ENV === "development" ? 'https://erp.xianglitech.com.cn/prod-api' : 'https://erp.xianglitech.com.cn/prod-api'
 // https://erp.xianglitech.com.cn/prod-api
 // https://test-erp.xianglitech.com.cn/stage-api