<template> <view> <u-form-item :label="label" :label-position="labelPosition" :prop="prop" :required="required" > <view class="mt-10" style="flex: 1"> <u-upload :file-list="value" :multiple="multiple" :max-count="maxCount" width="76" height="76" :accept="accept" :disabled="disabled" :deletable="!deletable" :capture="capture" @afterRead="fnAfterRead" @delete="fnDelete" /> </view> </u-form-item> <u-line/> </view> </template> <script> import {setFileDelete} from "@/api/api"; export default { props: { value: { type: Array, required: true, default: () => [], }, label: { type: String, default: "图片", }, labelPosition: { type: String, default: "top", }, prop: { type: String, default: "", }, required: { type: Boolean, default: true, }, multiple: { type: Boolean, default: true, }, maxCount: { type: Number, default: 4, }, accept: { type: String, default: "image", }, defineUpload: { type: Boolean, default: true, }, defineDelete: { type: Boolean, default: true, }, disabled: { type: Boolean, default: false, }, deletable: { type: Boolean, default: false, }, capture: { type: Array, default: () => ["album", "camera"], }, }, methods: { fnAfterRead(event) { if (this.multiple) { if (this.defineUpload) { this.$emit('input', [...this.value, ...event.file]) } } else { if (this.defineUpload) { this.$emit('input', [...this.value, event.file]) } } this.$emit('after-read', event.file) }, fnDelete(event) { uni.showModal({ title: "提示", content: "是否删除该图片", success: async (res) => { if (res.confirm) { if (this.defineDelete) { if (event.file.IMGFILES_ID) { await setFileDelete({ IMGFILES_ID: event.file.IMGFILES_ID, postMethod: 'application/json', }); } const value = uni.$u.deepClone(this.value) value.splice(event.index, 1) this.$emit('input', value) } else { this.$emit('delete', event) } } }, }); } }, } </script> <style scoped lang="scss"></style>