app版本管理

dev
qiuhongwu 6 months ago
parent c31531e9da
commit 7e445fcd01

@ -1,8 +1,8 @@
<template>
<Dialog v-model="dialogVisible" title="上传文件" width="50%">
<Dialog v-model="dialogVisible" title="上传App包" width="50%">
<el-form ref="formRef" label-width="140px" :rules="formRules" :model="formData">
<el-form-item label="APP ID" prop="businessFileType">
<el-input v-model="formData.businessFileType" class="!w-250px" placeholder="请输入APP ID" />
<el-input v-model="formData.businessFileType" disabled class="!w-250px" placeholder="请输入APP ID" />
</el-form-item>
<el-form-item label="版本号" prop="businessId">
<el-input v-model="formData.businessId" class="!w-250px" placeholder="请输入版本号" />
@ -10,19 +10,23 @@
<el-form-item label="说明" prop="businessFileRemark">
<el-input v-model="formData.businessFileRemark" class="!w-250px" placeholder="请输入说明" />
</el-form-item>
<el-form-item label="上传附件" prop="createTime">
<el-upload ref="UploadRef" :file-list="uploadFiles" multiple :action="uploadUrl" :headers="{
<el-form-item label="上传">
<el-upload ref="UploadRef" :auto-upload="false" v-model:file-list="uploadFiles" class="upload-demo" :action="uploadUrl" multiple :headers="{
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}" name="files" :show-file-list="false" :auto-upload="false" :data="uploadData" :on-change="UploadChange" :on-error="handleError" :on-success="handleSuccess" :before-upload="before" class="upload-file-uploader">
}" name="files" :on-preview="handlePreview" :on-change="UploadChange" :limit="1">
<el-button type="primary">
<Icon icon="ep:upload-filled" />上传附件
<Icon icon="ep:upload-filled" />上传
</el-button>
<template #tip>
<div class="el-upload__tip">
上传APK格式文件
</div>
</template>
</el-upload>
</el-form-item>
</el-form>
<template #footer>
<el-button :disabled="formLoading" type="primary" @click="submitFileForm"> </el-button>
@ -43,10 +47,10 @@ const formLoading = ref(false) // 表单的加载中
const uploadHeaders = ref() // Header
const fileList = ref([]) //
const formData = ref({
id: '',
fileName: '',
businessId: undefined,
businessType: 'MES_ANDROID_APP',
attachments: []
businessFileType: 'com.chanko.yunxi.mes.android',
businessFileRemark: undefined
})
/** 打开弹窗 */
@ -59,11 +63,14 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
// ==================== =======================================
const uploading = ref(false)
const uploadUrl = ref(import.meta.env.VITE_UPLOAD_BATCH_URL)
const uploadRef = ref()
// const uploadUrl = ref(import.meta.env.VITE_UPLOAD_BATCH_URL)
const UploadRef = ref()
const uploadFiles = ref<UploadUserFile[]>([])
const uploadData = ref({
businessType: 'MES_ANDROID_APP',
businessId: formData.value.id
businessId: formData.value.businessId,
businessFileType: formData.value.businessFileType,
businessFileRemark: formData.value.businessFileRemark
})
// //
// const downloadAttachment = async (name, url) => {
@ -73,82 +80,30 @@ const uploadData = ref({
const UploadChange = (file, files) => {
uploadFiles.value = files
refreshAttachments(files)
}
const refreshAttachments = (files) => {
console.log(files)
formData.value.attachments = formData.value.attachments.filter((value, index, array) => {
return value.id
})
for (let i = 0; i < files.length; i++) {
let file = files[i]
file.createTime = new Date()
formData.value.attachments.push(file)
}
//
formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime)
uploadData.value.businessType = formData.value.businessType
uploadData.value.businessId = formData.value.businessId
uploadData.value.businessFileType = formData.value.businessFileType
uploadData.value.businessFileRemark = formData.value.businessFileRemark
}
//
// const handleDeleteAttachment = async (index) => {
// const deletedAttachments = formData.value.attachments.splice(index, 1)
// for (let i = 0; i < deletedAttachments.length; i++) {
// const attachment = deletedAttachments[i]
// if (attachment.id) {
// //
// await deleteFileLogic(attachment.id)
// }
// //
// uploadFiles.value = uploadFiles.value.filter((file1) => {
// return file1.name != attachment.name
// })
// }
// }
/** 提交表单 */
const submitFileForm = async () => {
//
if (uploadFiles.value.length > 0) {
uploadData.value.businessId = ''
await uploadRef.value!.submit()
}
message.success(t('common.operationSuccess'))
}
// console.log(uploadFiles.value,'1');
// console.log(formData.value,'2');
console.log(uploadData.value,'3');
/** 文件上传成功处理 */
const emit = defineEmits(['success']) // success
const submitFormSuccess = () => {
//
dialogVisible.value = false
formLoading.value = false
unref(uploadRef)?.clearFiles()
//
message.success(t('common.createSuccess'))
emit('success')
}
/** 上传错误提示 */
const submitFormError = (): void => {
message.error('上传失败,请您重新上传!')
formLoading.value = false
await UploadRef.value!.submit()
message.success(t('common.operationSuccess'))
dialogVisible.value = false
} else {
alert('11')
}
}
/** 重置表单 */
const resetForm = () => {
//
formLoading.value = false
uploadRef.value?.clearFiles()
}
/** 文件数超出提示 */
const handleExceed = (): void => {
message.error('最多只能上传一个文件!')
}
//
const before = (rawFile) => {
console.log(rawFile)
UploadRef.value?.clearFiles()
}
</script>

@ -1,121 +1,61 @@
<template>
<!-- <doc-alert title="上传下载" url="https://doc.iocoder.cn/file/" /> -->
<!-- 搜索 -->
<el-card class="hl-card">
<template #header>
<span>App版本管理</span>
</template>
<el-card class="hl-card">
<template #header>
<span>App版本管理</span>
</template>
<ContentWrap>
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="108px"
>
<el-form-item label="APP ID" prop="path">
<el-input
v-model="queryParams.businessFileType"
placeholder="请输入APP ID"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="版本号" prop="type" width="80">
<el-input
v-model="queryParams.businessId"
placeholder="请输入版本号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery" type="primary"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button type="primary" plain @click="openForm">
<Icon icon="ep:upload" class="mr-5px" /> 上传文件
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="APP ID" align="center" prop="businessFileType" :show-overflow-tooltip="true" />
<el-table-column label="版本号" align="center" prop="businessId" :show-overflow-tooltip="true" />
<el-table-column label="URL" align="center" prop="url" :show-overflow-tooltip="true" />
<el-table-column
label="文件大小"
align="center"
prop="size"
width="120"
:formatter="fileSizeFormatter"
/>
<el-table-column label="文件内容" align="center" prop="url" width="110px">
<template #default="{ row }">
<el-image
v-if="row.type.includes('image')"
class="h-80px w-80px"
lazy
:src="row.url"
:preview-src-list="[row.url]"
preview-teleported
fit="cover"
/>
<el-link v-else-if="row.type.includes('pdf')" type="primary" :href="row.url" :underline="false" target="_blank">预览</el-link>
<el-link v-else type="primary" download :href="row.url" :underline="false" target="_blank">下载</el-link>
</template>
</el-table-column>
<el-table-column
label="上传时间"
align="center"
prop="createTime"
width="180"
:formatter="dateFormatter"
/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['infra:config:delete']"
>
删除
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="108px">
<el-form-item label="APP ID" prop="path">
<el-input v-model="queryParams.businessFileType" placeholder="请输入APP ID" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="版本号" prop="type" width="80">
<el-input v-model="queryParams.businessId" placeholder="请输入版本号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker v-model="queryParams.createTime" value-format="YYYY-MM-DD HH:mm:ss" type="daterange" start-placeholder="" end-placeholder="" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" />
</el-form-item>
<el-form-item>
<el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
<el-button
link
type="primary"
@click="downloadAttachment(scope.row.id)"
>
下载
<el-button type="primary" plain @click="openForm">
<Icon icon="ep:upload" class="mr-5px" /> 上传文件
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list">
<el-table-column label="APP ID" align="center" prop="businessFileType" :show-overflow-tooltip="true" />
<el-table-column label="版本号" align="center" prop="businessId" :show-overflow-tooltip="true" />
<el-table-column label="URL" align="center" prop="url" :show-overflow-tooltip="true" />
<el-table-column label="文件大小" align="center" prop="size" width="120" :formatter="fileSizeFormatter" />
<el-table-column label="上传时间" align="center" prop="createTime" width="180" :formatter="dateFormatter" />
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button link type="danger" @click="handleDelete(scope.row.id)" v-hasPermi="['infra:config:delete']">
删除
</el-button>
<el-button link type="primary" @click="downloadAttachment(scope.row.id)">
下载
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
</ContentWrap>
</el-card>
</el-card>
<!-- 表单弹窗添加/修改 -->
<FileForm ref="formRef" @success="getList" />
<FileForm ref="formRef" @success="getappList" />
</template>
<script lang="ts" setup>
import { fileSizeFormatter } from '@/utils'
@ -140,6 +80,7 @@ const queryParams = reactive({
createTime: []
})
const queryFormRef = ref() //
const reload: any = inject('reload')
/** 查询列表 */
const getList = async () => {
@ -152,7 +93,14 @@ const getList = async () => {
loading.value = false
}
}
const getappList = async () => {
const data = await FileApi.getFilePage(queryParams)
list.value = data
total.value = data.total
reload()
console.log(list.value);
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1

Loading…
Cancel
Save