fix:文件上次第一次获取不到表单数据

This commit is contained in:
不做码农 2023-04-15 09:25:10 +08:00
parent 012ded8fc1
commit 93e30a1b18
2 changed files with 46 additions and 30 deletions

View File

@ -10,12 +10,12 @@
:on-exceed="handleExceed" :on-exceed="handleExceed"
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
:show-file-list="false" :show-file-list="false"
:data="data" :data="uploadData"
:drag="drag" :drag="drag"
:headers="headers" :headers="headers"
:auto-upload="autoUpload" :auto-upload="autoUpload"
class="upload-file-uploader" class="upload-file-uploader"
ref="upload"> ref="fileUpload">
<!-- 拖拽上传 --> <!-- 拖拽上传 -->
<template v-if="drag"> <template v-if="drag">
<el-icon class="el-icon--upload"> <el-icon class="el-icon--upload">
@ -104,6 +104,7 @@ const uploadFileUrl = ref(baseUrl + import.meta.env.VITE_APP_UPLOAD_URL) // 上
const headers = ref({ Authorization: 'Bearer ' + getToken() }) const headers = ref({ Authorization: 'Bearer ' + getToken() })
const fileList = ref([]) const fileList = ref([])
const showTip = computed(() => props.isShowTip && (props.fileType || props.fileSize)) const showTip = computed(() => props.isShowTip && (props.fileType || props.fileSize))
const uploadData = computed(() => props.data)
watch( watch(
() => props.modelValue, () => props.modelValue,
@ -121,7 +122,6 @@ watch(
item.uid = item.uid || new Date().getTime() + temp++ item.uid = item.uid || new Date().getTime() + temp++
return item return item
}) })
// uploadList.value = fileList
} else { } else {
fileList.value = [] fileList.value = []
return [] return []
@ -183,7 +183,7 @@ function handleUploadSuccess(response, uploadFile) {
const { fileName, url, fileId } = response.data const { fileName, url, fileId } = response.data
const tempFile = { name: fileName, url: url } const tempFile = { name: fileName, url: url }
uploadList.value.push(tempFile) uploadList.value.push(tempFile)
if (uploadList.value.length === number.value) { if (number.value > 0 && uploadList.value.length === number.value) {
fileList.value = fileList.value.filter((f) => f.url !== undefined).concat(uploadList.value) fileList.value = fileList.value.filter((f) => f.url !== undefined).concat(uploadList.value)
uploadList.value = [] uploadList.value = []
number.value = 0 number.value = 0
@ -219,7 +219,7 @@ function listToString(list, separator) {
} }
// //
function submitUpload() { function submitUpload() {
proxy.$refs.upload.submit() proxy.$refs.fileUpload.submit()
} }
defineExpose({ defineExpose({
submitUpload submitUpload

View File

@ -48,7 +48,7 @@
<el-link type="primary" :href="scope.row.accessUrl" target="_blank">{{ scope.row.fileName }}</el-link> <el-link type="primary" :href="scope.row.accessUrl" target="_blank">{{ scope.row.fileName }}</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="accessUrl" align="center" label="预览图" width="100"> <el-table-column prop="accessUrl" align="center" label="预览图" width="80">
<template #default="{ row }"> <template #default="{ row }">
<el-image <el-image
preview-teleported preview-teleported
@ -59,30 +59,26 @@
lazy lazy
class="el-avatar"> class="el-avatar">
<template #error> <template #error>
<i class="document" /> <el-icon><document /></el-icon>
</template> </template>
</el-image> </el-image>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="fileSize" label="文件大小" align="center" :show-overflow-tooltip="true" /> <el-table-column prop="fileSize" label="文件大小" align="center" :show-overflow-tooltip="true" />
<el-table-column prop="fileExt" label="扩展名" align="center" :show-overflow-tooltip="true" width="80px" /> <el-table-column prop="fileExt" label="扩展名" align="center" :show-overflow-tooltip="true" width="80px" />
<el-table-column prop="storeType" label="存储类型" align="center"> <!-- <el-table-column prop="storeType" label="存储类型" align="center">
<template #default="scope"> <template #default="scope">
{{ scope.row.storeType }} <dict-tag :options="storeTypeOptions" :value="parseInt(scope.row.storeType)" />
<!-- <dict-tag :options="storeTypeOptions" :value="parseInt(scope.row.storeType)" /> -->
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column prop="storePath" label="存储目录"></el-table-column>
<el-table-column prop="create_by" label="操作人" align="center" /> <el-table-column prop="create_by" label="操作人" align="center" />
<el-table-column prop="create_time" label="创建日期" align="center" width="150" /> <el-table-column prop="create_time" label="创建日期" align="center" width="150" />
<el-table-column label="操作" align="center" width="230"> <el-table-column label="操作" align="center" width="120">
<template #default="scope"> <template #default="scope">
<el-button text size="small" icon="view" @click="handleView(scope.row)">{{ $t('btn.view') }}</el-button> <el-button text size="small" icon="view" title="查看" @click="handleView(scope.row)"></el-button>
<el-button class="copy-btn-main" icon="document-copy" text size="small" @click="copyText(scope.row.accessUrl)"> <el-button class="copy-btn-main" icon="document-copy" title="复制" text size="small" @click="copyText(scope.row.accessUrl)"> </el-button>
{{ $t('btn.copy') }} <el-button v-hasPermi="['tool:file:delete']" title="删除" text size="small" icon="delete" @click="handleDelete(scope.row)"> </el-button>
</el-button>
<el-button v-hasPermi="['tool:file:delete']" text size="small" icon="delete" @click="handleDelete(scope.row)">
{{ $t('btn.delete') }}
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -102,8 +98,18 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="24"> <el-col :lg="24">
<el-form-item label="存储文件夹" prop="storePath"> <el-form-item label="文件目录" prop="storePath">
<el-input v-model="form.storePath" placeholder="请输入存储文件夹" clearable="" auto-complete="" /> <template #label>
<span>
<el-tooltip content="文件目录不填则默认使用本地上次格式uploads/yyyyMMdd" placement="top">
<el-icon :size="15">
<questionFilled />
</el-icon>
</el-tooltip>
文件目录
</span>
</template>
<el-input v-model="form.storePath" placeholder="请输入文件目录" clearable="" auto-complete="" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="24"> <el-col :lg="24">
@ -187,7 +193,11 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :lg="24"> <el-col :lg="24">
<el-form-item label="存储路径">{{ formView.fileUrl }}</el-form-item> <el-form-item label="存储路径">
<div>
{{ formView.fileUrl }}
</div>
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
@ -270,7 +280,7 @@ const state = reactive({
}) })
const { queryParams, form, rules } = toRefs(state) const { queryParams, form, rules } = toRefs(state)
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const uploadData = ref({}) const uploadData = ref()
// //
function getList() { function getList() {
proxy.addDateRange(queryParams.value, dateRangeAddTime.value, 'Create_time') proxy.addDateRange(queryParams.value, dateRangeAddTime.value, 'Create_time')
@ -362,13 +372,19 @@ function handleUploadSuccess(filelist) {
function submitUpload() { function submitUpload() {
proxy.$refs['formRef'].validate((valid) => { proxy.$refs['formRef'].validate((valid) => {
if (valid) { if (valid) {
uploadData.value = { var result = new Promise((resolve) => {
fileDir: form.value.storePath, uploadData.value = {
fileName: form.value.fileName, fileDir: form.value.storePath,
storeType: form.value.storeType, fileName: form.value.fileName,
fileNameType: form.value.fileNameType storeType: form.value.storeType,
} fileNameType: form.value.fileNameType
proxy.$refs.uploadRef.submitUpload() }
resolve(true)
})
//使
result.then(() => {
proxy.$refs.uploadRef.submitUpload()
})
} }
}) })
} }