chore: 文件上传增加category等参数

This commit is contained in:
SADYX 2024-07-15 14:46:48 +08:00
parent 10726d7c4e
commit e87a5d8ba3
4 changed files with 53 additions and 10 deletions

View File

@ -17,6 +17,12 @@ export interface FilePresignedUrlRespVO {
url: string url: string
} }
export interface UploadFileParams {
path?: string
categoryId?: string
categoryPath?: string
}
// 查询文件列表 // 查询文件列表
export const getFilePage = (params: FilePageReqVO) => { export const getFilePage = (params: FilePageReqVO) => {
return request.get({ url: '/infra/file/page', params }) return request.get({ url: '/infra/file/page', params })

View File

@ -9,7 +9,7 @@
:disabled="disabled" :disabled="disabled"
:delete-disabled="delDisabled" :delete-disabled="delDisabled"
:drag="drag" :drag="drag"
:http-request="httpRequest" :http-request="handleRequest"
:limit="props.limit" :limit="props.limit"
:multiple="props.limit > 1" :multiple="props.limit > 1"
:on-error="excelUploadError" :on-error="excelUploadError"
@ -47,7 +47,7 @@
下载 下载
</el-link> </el-link>
</div> </div>
<div class="ml-10px" v-if=!delDisabled> <div class="ml-10px" v-if="!delDisabled">
<el-button link type="danger" @click="handleRemove(row.file)"> 删除</el-button> <el-button link type="danger" @click="handleRemove(row.file)"> 删除</el-button>
</div> </div>
</div> </div>
@ -57,7 +57,13 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { propTypes } from '@/utils/propTypes' import { propTypes } from '@/utils/propTypes'
import type { UploadInstance, UploadProps, UploadRawFile, UploadUserFile } from 'element-plus' import type {
UploadInstance,
UploadProps,
UploadRawFile,
UploadRequestOptions,
UploadUserFile
} from 'element-plus'
import { isString } from '@/utils/is' import { isString } from '@/utils/is'
import { useUpload, ResponseFile } from '@/components/UploadFile/src/useUpload' import { useUpload, ResponseFile } from '@/components/UploadFile/src/useUpload'
import { UploadFile } from 'element-plus/es/components/upload/src/upload' import { UploadFile } from 'element-plus/es/components/upload/src/upload'
@ -76,7 +82,8 @@ const props = defineProps({
drag: propTypes.bool.def(false), // drag: propTypes.bool.def(false), //
isShowTip: propTypes.bool.def(true), // isShowTip: propTypes.bool.def(true), //
disabled: propTypes.bool.def(false), // ==> false disabled: propTypes.bool.def(false), // ==> false
delDisabled: propTypes.bool.def(false) // delDisabled: propTypes.bool.def(false), //
categoryPath: propTypes.string.def('') //
}) })
// ========== ========== // ========== ==========
@ -87,6 +94,15 @@ const uploadNumber = ref<number>(0)
const { uploadUrl, httpRequest } = useUpload() const { uploadUrl, httpRequest } = useUpload()
//
const handleRequest = async (f: UploadRequestOptions) => {
if (!!props.categoryPath) {
httpRequest(f, { categoryPath: props.categoryPath })
} else {
httpRequest(f)
}
}
// //
const beforeUpload: UploadProps['beforeUpload'] = (file: UploadRawFile) => { const beforeUpload: UploadProps['beforeUpload'] = (file: UploadRawFile) => {
if (fileList.value.length >= props.limit) { if (fileList.value.length >= props.limit) {

View File

@ -8,7 +8,7 @@
:class="['upload', drag ? 'no-border' : '']" :class="['upload', drag ? 'no-border' : '']"
:disabled="disabled" :disabled="disabled"
:drag="drag" :drag="drag"
:http-request="httpRequest" :http-request="handleRequest"
:multiple="false" :multiple="false"
:on-error="uploadError" :on-error="uploadError"
:on-success="uploadSuccess" :on-success="uploadSuccess"
@ -47,7 +47,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import type { UploadProps } from 'element-plus' import type { UploadProps, UploadRequestOptions } from 'element-plus'
import { generateUUID } from '@/utils' import { generateUUID } from '@/utils'
import { propTypes } from '@/utils/propTypes' import { propTypes } from '@/utils/propTypes'
@ -79,7 +79,8 @@ const props = defineProps({
width: propTypes.string.def('150px'), // ==> 150px width: propTypes.string.def('150px'), // ==> 150px
borderradius: propTypes.string.def('8px'), // ==> 8px borderradius: propTypes.string.def('8px'), // ==> 8px
showDelete: propTypes.bool.def(true), // showDelete: propTypes.bool.def(true), //
showBtnText: propTypes.bool.def(true) // showBtnText: propTypes.bool.def(true), //
categoryPath: propTypes.string.def('') //
}) })
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
@ -101,6 +102,15 @@ const deleteImg = () => {
const { uploadUrl, httpRequest } = useUpload() const { uploadUrl, httpRequest } = useUpload()
//
const handleRequest = async (f: UploadRequestOptions) => {
if (!!props.categoryPath) {
httpRequest(f, { categoryPath: props.categoryPath })
} else {
httpRequest(f)
}
}
const editImg = () => { const editImg = () => {
const dom = document.querySelector(`#${uuid.value} .el-upload__input`) const dom = document.querySelector(`#${uuid.value} .el-upload__input`)
dom && dom.dispatchEvent(new MouseEvent('click')) dom && dom.dispatchEvent(new MouseEvent('click'))

View File

@ -8,7 +8,7 @@
:class="['upload', drag ? 'no-border' : '']" :class="['upload', drag ? 'no-border' : '']"
:disabled="disabled" :disabled="disabled"
:drag="drag" :drag="drag"
:http-request="httpRequest" :http-request="handleRequest"
:limit="limit" :limit="limit"
:multiple="true" :multiple="true"
:on-error="uploadError" :on-error="uploadError"
@ -47,7 +47,7 @@
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import type { UploadFile, UploadProps, UploadUserFile } from 'element-plus' import type { UploadFile, UploadProps, UploadRequestOptions, UploadUserFile } from 'element-plus'
import { ElNotification } from 'element-plus' import { ElNotification } from 'element-plus'
import { propTypes } from '@/utils/propTypes' import { propTypes } from '@/utils/propTypes'
@ -78,7 +78,8 @@ const props = defineProps({
fileType: propTypes.array.def(['image/jpeg', 'image/png', 'image/gif']), // ==> ["image/jpeg", "image/png", "image/gif"] fileType: propTypes.array.def(['image/jpeg', 'image/png', 'image/gif']), // ==> ["image/jpeg", "image/png", "image/gif"]
height: propTypes.string.def('150px'), // ==> 150px height: propTypes.string.def('150px'), // ==> 150px
width: propTypes.string.def('150px'), // ==> 150px width: propTypes.string.def('150px'), // ==> 150px
borderradius: propTypes.string.def('8px') // ==> 8px borderradius: propTypes.string.def('8px'), // ==> 8px
categoryPath: propTypes.string.def('') //
}) })
const { uploadUrl, httpRequest } = useUpload() const { uploadUrl, httpRequest } = useUpload()
@ -86,6 +87,16 @@ const { uploadUrl, httpRequest } = useUpload()
const fileList = ref<UploadUserFile[]>([]) const fileList = ref<UploadUserFile[]>([])
const uploadNumber = ref<number>(0) const uploadNumber = ref<number>(0)
const uploadList = ref<UploadUserFile[]>([]) const uploadList = ref<UploadUserFile[]>([])
//
const handleRequest = async (f: UploadRequestOptions) => {
if (!!props.categoryPath) {
httpRequest(f, { categoryPath: props.categoryPath })
} else {
httpRequest(f)
}
}
/** /**
* @description 文件上传之前判断 * @description 文件上传之前判断
* @param rawFile 上传的文件 * @param rawFile 上传的文件