Sfoglia il codice sorgente

feat(versionManagement): 添加应用下载文件生成功能

- 新增 generateAppDownLoadFile API 接口用于生成应用下载链接
- 新增 uploadAppFileAsync API 接口用于上传应用文件
- 在版本管理表格操作列中添加生成下载链接按钮
- 实现 generateAppDownLoadFile2 方法处理下载链接生成逻辑
- 将下载链接字段验证规则改为非必填
- 替换文件上传接口从 uploadTournament 为 uploadAppFileAsync
- 更新 OSS 文件上传成功后的链接协议为 HTTPS
fugui001 1 mese fa
parent
commit
9754108f30

+ 23 - 0
src/api/system/business/versionManagement/index.ts

@@ -80,3 +80,26 @@ export const downloadAppIosUrl = () => {
     method: 'get'
   });
 };
+export const generateAppDownLoadFile = (id: string | number): AxiosPromise<VersionManagementVO> => {
+  return request({
+    url: '/business/versionManagement/generateAppDownLoadFile/' + id,
+    method: 'get'
+  });
+};
+/**
+ * 上传 比赛图标
+ * @param file 文件
+ */
+export const uploadAppFileAsync = async (file: File) => {
+  const formData = new FormData();
+  formData.append('file', file); // 后端接收的参数名是 "file"
+  const res = await request({
+    url: '/business/versionManagement/uploadAppFileAsync',
+    method: 'POST',
+    data: formData,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  });
+  return res;
+};

+ 26 - 22
src/views/system/business/versionManagement/index.vue

@@ -30,7 +30,7 @@
           </el-col>
           <el-col :span="1.5">
             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['business:versionManagement:edit']"
-              >修改</el-button
+            >修改</el-button
             >
           </el-col>
           <el-col :span="1.5">
@@ -41,7 +41,7 @@
               :disabled="multiple"
               @click="handleDelete()"
               v-hasPermi="['business:versionManagement:remove']"
-              >删除</el-button
+            >删除</el-button
             >
           </el-col>
           <!--          <el-col :span="1.5">
@@ -97,22 +97,19 @@
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template #default="scope">
             <el-tooltip content="修改" placement="top">
-              <el-button
-                link
-                type="primary"
-                icon="Edit"
-                @click="handleUpdate(scope.row)"
-                v-hasPermi="['business:versionManagement:edit']"
-              ></el-button>
+              <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['business:versionManagement:edit']"
+              >修改</el-button
+              >
             </el-tooltip>
             <el-tooltip content="删除" placement="top">
-              <el-button
-                link
-                type="primary"
-                icon="Delete"
-                @click="handleDelete(scope.row)"
-                v-hasPermi="['business:versionManagement:remove']"
-              ></el-button>
+              <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['business:versionManagement:remove']"
+              >删除</el-button
+              >
+            </el-tooltip>
+            <el-tooltip content="生成下载链接" placement="top">
+              <el-button link type="primary" icon="Edit" @click="generateAppDownLoadFile2(scope.row)" v-hasPermi="['business:versionManagement:edit']"
+              >生成下载链接</el-button
+              >
             </el-tooltip>
           </template>
         </el-table-column>
@@ -201,10 +198,11 @@ import {
   getVersionManagement,
   delVersionManagement,
   addVersionManagement,
-  updateVersionManagement
+  updateVersionManagement,
+  generateAppDownLoadFile,
+  uploadAppFileAsync
 } from '@/api/system/business/versionManagement';
 import { VersionManagementVO, VersionManagementQuery, VersionManagementForm } from '@/api/system/business/versionManagement/types';
-import { uploadTournament } from '@/api/system/business/tournaments';
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { is_force_update, mobile_sys_type } = toRefs<any>(proxy?.useDict('is_force_update', 'mobile_sys_type'));
@@ -267,7 +265,7 @@ const data = reactive<PageData<VersionManagementForm, VersionManagementQuery>>({
     versionName: [{ required: true, message: '版本名称不能为空', trigger: 'blur' }],
     releaseDate: [{ required: true, message: '发布日期不能为空', trigger: 'blur' }],
     updateContent: [{ required: true, message: '更新内容不能为空', trigger: 'change' }],
-    downloadLink: [{ required: true, message: '下载链接不能为空', trigger: 'blur' }],
+    downloadLink: [{ required: false, message: '下载链接不能为空', trigger: 'blur' }],
     osType: [{ required: true, message: '系统类型不能为空', trigger: 'change' }]
   }
 });
@@ -333,7 +331,6 @@ const handleUpdate = async (row?: VersionManagementVO) => {
   dialog.visible = true;
   dialog.title = '修改';
 };
-
 /** 提交按钮 */
 const submitForm = () => {
   versionManagementFormRef.value?.validate(async (valid: boolean) => {
@@ -372,6 +369,13 @@ const handleDelete = async (row?: VersionManagementVO) => {
   proxy?.$modal.msgSuccess('删除成功');
   await getList();
 };
+const generateAppDownLoadFile2 = async (row?: VersionManagementVO) => {
+  const _ids = row?.id || ids.value;
+  await proxy?.$modal.confirm('是否生成下载链接?').finally(() => (loading.value = false));
+  await generateAppDownLoadFile(_ids.toString());
+  proxy?.$modal.msgSuccess('生成成功');
+  await getList();
+};
 
 /** 导出按钮操作 */
 const handleExport = () => {
@@ -421,7 +425,7 @@ const handleIconChange = async (file) => {
 
   try {
     const rawFile = file.raw;
-    const res = await uploadTournament(rawFile);
+    const res = await uploadAppFileAsync(rawFile);
     if (res.code === 200) {
       // 更新文件状态为成功
       const uploadedFile = {
@@ -438,7 +442,7 @@ const handleIconChange = async (file) => {
       }
 
       // 设置下载链接
-      form.value.downloadLink = 'http://oss.hunanpt.cn/' + uploadedFile.fileName;
+      form.value.downloadLink = 'https://oss.hunanpt.cn/' + uploadedFile.fileName;
       ElMessage.success('上传成功');
     } else {
       throw new Error(res.msg);