| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- <template>
 
-   <view>
 
-     <!-- 触发按钮 -->
 
-     <slot name="trigger" :uploading="uploading">
 
-       <button 
 
-         :disabled="uploading"
 
-         @click="choosePdf"
 
-         class="upload-btn"
 
-       >
 
-         {{ uploading ? '上传中...' : '上传PDF' }}
 
-       </button>
 
-     </slot>
 
-   </view>
 
- </template>
 
- <script>
 
- export default {
 
-   name: 'PdfUploader',
 
-   props: {
 
-     // 上传接口地址
 
-     uploadUrl: {
 
-       type: String,
 
-       required: true
 
-     },
 
-     // 最大文件大小(单位:MB)
 
-     maxSize: {
 
-       type: Number,
 
-       default: 50
 
-     }
 
-   },
 
-   data() {
 
-     return {
 
-       uploading: false
 
-     }
 
-   },
 
-   methods: {
 
-     // 选择PDF文件
 
-     async choosePdf() {
 
-       if (this.uploading) return
 
-       
 
-       try {
 
-         const [file] = await this.selectFile()
 
-         await this.verifyFile(file)
 
-         const result = await this.uploadFile(file)
 
-         this.$emit('success', result)
 
-       } catch (error) {
 
-         this.$emit('error', error)
 
-         this.showToast(error.message)
 
-       }
 
-     },
 
-     // 选择文件
 
-     selectFile() {
 
-       return new Promise((resolve, reject) => {
 
-         uni.chooseFile({
 
-           count: 1,
 
-           type: 'file',
 
-           extension: ['pdf'],
 
-           success: res => resolve(res.tempFiles),
 
-           fail: () => reject(new Error('取消选择'))
 
-         })
 
-       })
 
-     },
 
-     // 验证文件
 
-     verifyFile(file) {
 
-       const maxBytes = this.maxSize * 1024 * 1024
 
-       
 
-       if (!file.type.includes('pdf')) {
 
-         throw new Error('请选择PDF文件')
 
-       }
 
-       
 
-       if (file.size > maxBytes) {
 
-         throw new Error(`文件大小不能超过${this.maxSize}MB`)
 
-       }
 
-       
 
-       return true
 
-     },
 
-     // 执行上传
 
-     uploadFile(file) {
 
-       this.uploading = true
 
-       
 
-       return new Promise((resolve, reject) => {
 
-         uni.uploadFile({
 
-           url: this.uploadUrl,
 
-           filePath: file.path,
 
-           name: 'file',
 
-           formData: {
 
-             filename: file.name
 
-           },
 
-           success: (res) => {
 
-             if (res.statusCode === 200) {
 
-               resolve(JSON.parse(res.data))
 
-             } else {
 
-               reject(new Error('上传失败'))
 
-             }
 
-           },
 
-           fail: () => reject(new Error('网络错误')),
 
-           complete: () => (this.uploading = false)
 
-         })
 
-       })
 
-     },
 
-     // 显示提示
 
-     showToast(message) {
 
-       uni.showToast({
 
-         title: message,
 
-         icon: 'none',
 
-         duration: 3000
 
-       })
 
-     }
 
-   }
 
- }
 
- </script>
 
- <style scoped>
 
- .upload-btn {
 
-   background-color: #007AFF;
 
-   color: white;
 
-   padding: 10px 20px;
 
-   border-radius: 5px;
 
-   font-size: 14px;
 
- }
 
- .upload-btn[disabled] {
 
-   background-color: #cccccc;
 
- }
 
- </style>
 
- <!--  <SimplePdfUploader
 
-       upload-url="https://your-api.com/upload"
 
-       :max-size="30"
 
-       @success="handleSuccess"
 
-       @error="handleError"
 
-     >
 
-       <!-- 自定义触发按钮 -->
 
-       <template v-slot:trigger="{ uploading }">
 
-         <button 
 
-           :disabled="uploading"
 
-           class="custom-btn"
 
-         >
 
-           {{ uploading ? '正在上传...' : '选择PDF文件' }}
 
-         </button>
 
-       </template>
 
-     </SimplePdfUploader> -->
 
 
  |