|
@@ -26,14 +26,31 @@
|
|
closable
|
|
closable
|
|
type="success"
|
|
type="success"
|
|
@close="deleteFile(index)"
|
|
@close="deleteFile(index)"
|
|
|
|
+ @click.stop.prevent="handlePreview(index)"
|
|
>
|
|
>
|
|
{{ file.name }}
|
|
{{ file.name }}
|
|
</el-tag>
|
|
</el-tag>
|
|
</div>
|
|
</div>
|
|
</el-upload>
|
|
</el-upload>
|
|
|
|
+ <el-drawer
|
|
|
|
+ v-model="PDFVisible"
|
|
|
|
+ :footer="false"
|
|
|
|
+ :header="false"
|
|
|
|
+ :show-close="false"
|
|
|
|
+ destroy-on-close
|
|
|
|
+ direction="rtl"
|
|
|
|
+ :append-to-body="true"
|
|
|
|
+ size="972px"
|
|
|
|
+ >
|
|
|
|
+ <VuePdfEmbed :source="pdfSource" annotation-layer text-layer />
|
|
|
|
+ </el-drawer>
|
|
</template>
|
|
</template>
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
import { ref } from "vue";
|
|
import { ref } from "vue";
|
|
|
|
+import { UploadFile, UploadFiles, UploadUserFile } from "element-plus";
|
|
|
|
+import { uploadFileApi } from "@/api/file";
|
|
|
|
+import PDFView from "@/components/PDFView/index.vue";
|
|
|
|
+import VuePdfEmbed from "vue-pdf-embed";
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
size: {
|
|
size: {
|
|
@@ -49,8 +66,12 @@ const props = defineProps({
|
|
default: "",
|
|
default: "",
|
|
},
|
|
},
|
|
srcList: {
|
|
srcList: {
|
|
- type: Array,
|
|
|
|
- default: [],
|
|
|
|
|
|
+ type: Array<string>,
|
|
|
|
+ default: () => [],
|
|
|
|
+ },
|
|
|
|
+ generatePdf: {
|
|
|
|
+ type: Boolean,
|
|
|
|
+ default: false,
|
|
},
|
|
},
|
|
});
|
|
});
|
|
|
|
|
|
@@ -62,9 +83,6 @@ const emit = defineEmits(["update:src", "update:srcList"]);
|
|
const src = useVModel(props, "src", emit); //单文件用这个
|
|
const src = useVModel(props, "src", emit); //单文件用这个
|
|
const srcList = useVModel(props, "srcList", emit); //多文件用这个
|
|
const srcList = useVModel(props, "srcList", emit); //多文件用这个
|
|
|
|
|
|
-import { UploadFile, UploadFiles, UploadUserFile } from "element-plus";
|
|
|
|
-import { uploadFileApi } from "@/api/file";
|
|
|
|
-
|
|
|
|
// el-upload 绑定的值
|
|
// el-upload 绑定的值
|
|
const fileList = ref<UploadUserFile[]>([]);
|
|
const fileList = ref<UploadUserFile[]>([]);
|
|
|
|
|
|
@@ -74,11 +92,12 @@ const handleChange = async (uploadFile: UploadFile) => {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
loading.value = true;
|
|
loading.value = true;
|
|
- uploadFileApi(uploadFile.raw as File)
|
|
|
|
|
|
+ uploadFileApi(uploadFile.raw as File, props.generatePdf)
|
|
.then((res: any) => {
|
|
.then((res: any) => {
|
|
loading.value = false;
|
|
loading.value = false;
|
|
- src.value = res.data.fileUrl;
|
|
|
|
- srcList.value.push(res.data.fileUrl);
|
|
|
|
|
|
+ let url = props.generatePdf ? res.data.pdfUrl : res.data.fileUrl;
|
|
|
|
+ src.value = url;
|
|
|
|
+ srcList.value.push(url);
|
|
})
|
|
})
|
|
.catch((err) => {
|
|
.catch((err) => {
|
|
ElMessage.error(err.message);
|
|
ElMessage.error(err.message);
|
|
@@ -91,6 +110,16 @@ const deleteFile = (index: number) => {
|
|
fileList.value.splice(index, 1);
|
|
fileList.value.splice(index, 1);
|
|
srcList.value.splice(index, 1);
|
|
srcList.value.splice(index, 1);
|
|
};
|
|
};
|
|
|
|
+
|
|
|
|
+const PDFVisible = ref(false);
|
|
|
|
+const pdfSource = ref("");
|
|
|
|
+const handlePreview = (index: number) => {
|
|
|
|
+ if (srcList.value.length > index && props.generatePdf) {
|
|
|
|
+ pdfSource.value =
|
|
|
|
+ import.meta.env.VITE_APP_UPLOAD_URL + srcList.value[index];
|
|
|
|
+ PDFVisible.value = true;
|
|
|
|
+ }
|
|
|
|
+};
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|