From 089bf5d2378b3c4a61d795b2a92bede2c193b771 Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:22:58 +0800
Subject: [PATCH] 1

---
 src/components/file-upload/index.vue |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/src/components/file-upload/index.vue b/src/components/file-upload/index.vue
new file mode 100644
index 0000000..e499d01
--- /dev/null
+++ b/src/components/file-upload/index.vue
@@ -0,0 +1,72 @@
+<template>
+  <div>
+    <el-upload
+      :action="$http.adornUrl('/admin/file/upload/element')"
+      :headers="{Authorization: $cookie.get('Authorization')}"
+      :on-remove="handleRemove"
+      :on-success="handleUploadSuccess"
+      :before-remove="beforeRemove"
+      :file-list="fileList"
+      multiple>
+      <el-button size="small" type="primary">点击上传</el-button>
+    </el-upload>
+  </div>
+</template>
+
+<script>
+  export default {
+    data () {
+      return {
+        resourcesUrl: process.env.VUE_APP_RESOURCES_URL
+      }
+    },
+    props: {
+      value: {
+        default: '',
+        type: String
+      }
+    },
+    computed: {
+      fileList () {
+        let res = []
+        if (this.value) {
+          let fileArray = this.value.split(',')
+          for (let i = 0; i < fileArray.length; i++) {
+            res.push({name: fileArray[i], url: this.resourcesUrl + fileArray[i], response: fileArray[i]})
+          }
+        }
+        this.$emit('input', this.value)
+        return res
+      }
+    },
+    methods: {
+      // 图片上传
+      handleUploadSuccess (response, file, fileList) {
+        let files = fileList.map(file => {
+          return file.response
+        }).join(',')
+        this.$emit('change', files)
+      },
+      // 限制图片上传大小
+      beforeAvatarUpload (file) {
+        const isLt2M = file.size / 1024 / 1024 < 2
+        if (!isLt2M) {
+          this.$message.error('上传图片大小不能超过 2MB!')
+        }
+        return isLt2M
+      },
+      handleRemove (file, fileList) {
+        let files = fileList.map(file => {
+          return file.response
+        }).join(',')
+        this.$emit('change', files)
+      },
+      beforeRemove (file, fileList) {
+        return this.$confirm(`确定移除 ${file.name}?`)
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+</style>

--
Gitblit v1.9.3