fix(update): 修复版本列表排序并改进Android包上传功能

- 将版本查询排序从versionCode改为createdAt以正确显示最新版本
- 为Android包上传表单添加已上传文件显示区域
- 实现删除已上传文件的功能以便重新上传
- 添加上传组件引用以支持文件清除操作
- 增加Document和Delete图标导入用于文件管理界面
- 添加已上传文件信息的样式和布局支持
这个提交包含在:
XuqmGroup 2026-05-21 18:20:06 +08:00
父节点 cfe8d19da9
当前提交 293df1f821

查看文件

@ -797,6 +797,8 @@
</el-form-item> </el-form-item>
<el-form-item v-if="appUploadForm.platform === 'ANDROID'" label="包文件"> <el-form-item v-if="appUploadForm.platform === 'ANDROID'" label="包文件">
<el-upload <el-upload
v-if="!appUploadForm.fileUrl"
ref="appUploadRef"
class="apk-dropzone" class="apk-dropzone"
drag drag
:auto-upload="false" :auto-upload="false"
@ -814,6 +816,13 @@
</div> </div>
</template> </template>
</el-upload> </el-upload>
<div v-else class="uploaded-file-info">
<el-icon class="file-icon"><Document /></el-icon>
<span class="file-name">{{ appUploadForm.file?.name || '已上传文件' }}</span>
<el-button type="danger" link size="small" @click="removeUploadedFile">
<el-icon><Delete /></el-icon>
</el-button>
</div>
</el-form-item> </el-form-item>
<el-form-item v-if="appUploadForm.platform === 'ANDROID' && appPackageUploadProgress > 0" label="文件进度"> <el-form-item v-if="appUploadForm.platform === 'ANDROID' && appPackageUploadProgress > 0" label="文件进度">
<div class="upload-progress-block"> <div class="upload-progress-block">
@ -926,7 +935,7 @@
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue' import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { CircleCheckFilled, Edit, Loading, UploadFilled, WarningFilled } from '@element-plus/icons-vue' import { CircleCheckFilled, Delete, Document, Edit, Loading, UploadFilled, WarningFilled } from '@element-plus/icons-vue'
import { appApi, type App } from '@/api/app' import { appApi, type App } from '@/api/app'
import { fileApi } from '@/api/file' import { fileApi } from '@/api/file'
import { formatTime } from '@/utils/date' import { formatTime } from '@/utils/date'
@ -1083,6 +1092,7 @@ const grayMemberIds = ref<string[]>([])
const appPackageInspecting = ref(false) const appPackageInspecting = ref(false)
const appPackageUploadProgress = ref(0) const appPackageUploadProgress = ref(0)
const appVersionUploadProgress = ref(0) const appVersionUploadProgress = ref(0)
const appUploadRef = ref<any>(null)
const rnInspectUploadProgress = ref(0) const rnInspectUploadProgress = ref(0)
const rnBundleUploadProgress = ref(0) const rnBundleUploadProgress = ref(0)
const operationLogs = ref<{ const operationLogs = ref<{
@ -1964,6 +1974,14 @@ async function onAppPackageChange(uploadFile: { raw?: File } | null) {
} }
} }
function removeUploadedFile() {
appUploadForm.value.file = null
appUploadForm.value.fileUrl = ''
if (appUploadRef.value) {
appUploadRef.value.clearFiles?.()
}
}
async function submitAppUpload() { async function submitAppUpload() {
const f = appUploadForm.value const f = appUploadForm.value
if (f.platform === 'ANDROID' && !f.fileUrl) return ElMessage.warning('请先选择 Android 安装包文件') if (f.platform === 'ANDROID' && !f.fileUrl) return ElMessage.warning('请先选择 Android 安装包文件')
@ -3115,4 +3133,27 @@ onBeforeUnmount(() => {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
} }
/* Uploaded file info */
.uploaded-file-info {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
background: var(--el-fill-color-light);
border-radius: 6px;
border: 1px solid var(--el-border-color-lighter);
}
.uploaded-file-info .file-icon {
font-size: 20px;
color: var(--el-color-primary);
}
.uploaded-file-info .file-name {
flex: 1;
font-size: 14px;
color: var(--el-text-color-primary);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style> </style>