uniapp小程序上传pdf文件

<template><view class="mainInnBox"><view class="formBox"><!-- 注意,如果需要兼容微信小程序,最好通过setRules方法设置rules规则 --><u-form :model="form" ref="uForm" :rules="rules"><u-form-item label="故障车辆" labelWidth="80px" prop="licensePlate" borderBottom><u--input:placeholder="vehOptions.licensePlate"placeholder-style="color: #333;"disabledColor="#ffffff"border="none"inputAlign="right"disabledreadonly/></u-form-item><u-form-item label="发生时间" labelWidth="80px" prop="occurreTime" borderBottom @click="showDate = true"><!-- <span class="redStar">*</span> --><u--inputv-model.trim="form.occurreTime"placeholder="请选择发生时间"disabledColor="#ffffff"border="none"inputAlign="right"disabledreadonly/></u-form-item><u-form-item label="事件类型" labelWidth="80px" prop="typeName" borderBottom @click="showSelect = true"><!-- <span class="redStar">*</span> --><u-inputv-model="form.typeName"placeholder="请选择事件类型"disabledColor="#ffffff"border="none"inputAlign="right"disabledreadonly><!-- <template v-show="form.publishCycle" slot="suffix"><span>天</span></template> --></u-input></u-form-item><view class="form_label">描述</view><u-form-item label=" " labelWidth="0" labelPosition="top" prop="description" borderBottom><u--textareav-model.trim="form.description"border="none"placeholder="请输入描述..."placeholderStyle="#999999"maxlength="100"height="50":count="false"borderBottom/></u-form-item><view class="form_label">附件文件</view><view class="form_label_tip">文件大小不大于10M,支持PDF</view><!-- 上传文件展示 --><view class="uploadContent"><view class="uploadFileBox" v-if="pdfInfo.length!=0"><view class="uploadTexts" @click="jump(pdfInfo[0].url)">{{pdfInfo[0].name}}</view><u-icon name="close" @click="deleteFile()"></u-icon></view><view v-else class="uploadChoose" @click="selectFile()"><u-icon name="plus"></u-icon></view></view><!-- 上传文件按钮 --></u-form></view><view class="btnBox"><view class="btn" @click="submitFunc">提交</view></view><view><!-- 发生时间 --><u-datetime-picker :show="showDate" v-model="datetime" mode="datetime" @cancel="closeDate" @confirm="sureDate"></u-datetime-picker><!-- 事件类型 --><u-picker :show="showSelect" :columns="columnsSelect" keyName="label" @cancel="closeSelect" @confirm="confirmSelect"></u-picker></view><u-modal:show="successModalShow"confirmText="理赔记录"cancelText="返回首页"@confirm="confirmFunc"@cancel="cancelFunc":showConfirmButton="true":showCancelButton="true"confirmColor="#ffffff"cancelColor="#333"><view class="slot-content"><u-icon name="checkmark-circle-fill" color="#70b603" size="28" label="上报成功" labelPos="bottom" labelSize="16px" labelColor="#333"></u-icon><view style="text-align: center;padding: 30rpx 0 0; font-size: 24rpx;">出险信息已上报</view></view></u-modal></view>
</template><script>import { getToken } from '@/assets/scripts/auth'export default {data() {return {imgUrl: this.$imgUrl,recordId: '', // 保险记录idvehOptions: {},showDate: false, // 发生时间选择datetime: Number(new Date()),showSelect: false, // 事件类型选择columnsSelect: [[{label: '出险', value: 1},{label: '维修', value: 2}, {label: '理赔', value: 3}]],form: {occurreTime: '',typeName: '',description: '',},rules: {occurreTime: [{ required: true, message: '请选择发生时间', trigger: ['change']},], typeName: [{ required: true, message: '请选择事件类型', trigger: ['change']},],description: [{ required: false, message: '请输入描述', trigger: ['blur', 'change']},{ min: 1, max: 100, message: '长度在100个字符之间'},],},btnStatus: false,successModalShow: false,pdfInfo: []}},onShow() {},onLoad(option) {// 点击理赔记录-上报--跳转过来。console.log(option)this.recordId = option.recordIdthis.vehOptions = option},onReady() {this.$nextTick(()=>{//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。this.$refs.uForm.setRules(this.rules)})},methods: {// 发生时间选择closeDate () {this.showDate = false},sureDate (e) {// console.log(e, this.value1)this.form.occurreTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')this.$refs.uForm.clearValidate('occurreTime')this.showDate = false},// 事件类型选择closeSelect() {this.showSelect = false},confirmSelect(e) {// console.log(e)this.form.type = e.value[0].valuethis.form.typeName = e.value[0].labelthis.$refs.uForm.clearValidate('typeName')this.showSelect = false},// 上传pdfselectFile(){// console.log('111', this.pdfInfo)if(this.pdfInfo.length != 0){ // this.pdfInfo 要求不可重复上传this.$toast('如果重新上传请先删除已有的附件~')return}let that = thisuni.chooseMessageFile({count: 1, //最多可以选择的文件个数,可以 1type: 'file', //所选的文件的类型,具体看官方文档extension: ['.pdf'], //文件类型, '.docx''.doc', success (res) {// console.log('上传', res)// // tempFilePath可以作为img标签的src属性显示图片const tempFilePaths = res.tempFiles[0].pathlet filename = res.tempFiles[0].name; //用于页面显示的名字// console.log(filename)// 这一步判断可以省略,如果需求没有格式要求的话if(filename.indexOf(".pdf")==-1){that.$toast('暂时仅支持pdf格式的文件')return} else if (res.tempFiles[0].size > (10 * 1024 * 1024)) { //这里限制了文件的大小和具体文件类型,如果不限制文件类型则去掉'|| filename.indexOf(".pdf") == -1'that.$toast('文件大小不能超过10MB')// wx.showToast({// 		title: '文件大小不能超过10MB',// 		icon: "none",// 		duration: 2000,// 		mask: true// })} else {// console.log("开始上传")uni.uploadFile({url: uni.$u.http.config.baseURL + 'file/upload', // '这里是您后台提供文件上传的API':上传的路径filePath: tempFilePaths, //刚刚在data保存的文件路径name: 'file',   //后台获取的凭据formData:{ //如果是需要带参数,请在formData里面添加,不需要就去掉这个就可以的fileGroup: 'leasContract'},header: {'Content-Type': 'multipart/form-data','Authorization': 'Bearer ' + getToken(),},success: (uploadFileRes) => {// console.log(uploadFileRes)if (uploadFileRes.errMsg === 'uploadFile:ok') {let result = JSON.parse(uploadFileRes.data)// console.log('=====', result)that.pdfInfo.push({name: filename, url: result.data.previewUrl})that.$forceUpdate() //有时候页面渲染不上,这里强制刷新if (result.code === 200 && result.headImg) {this.$toast('保存成功')}}}})// console.log('上传到服务器')}},fail: (err) => {console.log(err, 'err');that.$forceUpdate()}})},// 删除pdfdeleteFile() {this.pdfInfo = []},// 预览pdfjump(linkUrl) {// console.log("发送跳转页面地址112:" + linkUrl)if(linkUrl){let linkUrlNew = encodeURIComponent(linkUrl)// console.log("发送跳转页面地址111:" + linkUrlNew )uni.navigateTo({url: '/subPackages/home/claim/index?url='+ linkUrlNew})}},// 提交submitFunc() {if (this.btnStatus) {return}let that = this// 限制用户多次触发this.btnStatus = truethat.$refs.uForm.validate().then(res => {let params = {recordId: that.recordId,occurreTime: that.form.occurreTime,type: that.form.type,description: that.form.description}// 附件pdfif(this.pdfInfo.length>0) {params.attachment = this.pdfInfo[0].picUrlparams.attachmentName = this.pdfInfo[0].name}console.log('提交的表单', params)uni.showLoading({title: '提交中'})this.$http.post('/mobile/leaseContract/insurance/claim', params).then((res) => {if (res.code === 200) {// console.log(res)uni.hideLoading()this.successModalShow = truesetTimeout(function() {that.btnStatus = false}, 1100)}}).catch((error) => {console.log(error)uni.hideLoading()this.$toast(error.msg)// 填好提交,但是接口报错,这里要释放按钮限制that.btnStatus = false})}).catch(errors => {// uni.$u.toast('校验失败')// 没有填写信息,就点击了提交按钮,校验不通过,然后填好信息后,再点击提交that.btnStatus = false})},// 提交成功后的弹窗cancelFunc () {this.successModalShow = false// uni.switchTab({ url: '/pages/index' })uni.redirectTo({ url: '/pages/index' })// uni.navigateBack()},confirmFunc () {this.successModalShow = falselet params = {from: 'addform',id: this.vehOptions.vehicleId,vin: this.vehOptions.vin,licensePlate: this.vehOptions.licensePlate}uni.redirectTo({ url: '/subPackages/home/record/claim'  + uni.$u.queryParams(params)})},}}
</script><style scoped lang="scss">
.mainInnBox {height: 100vh;padding-top: 18rpx;padding-bottom: calc(18rpx + constant(safe-area-inset-bottom));padding-bottom: calc(18rpx + env(safe-area-inset-bottom));background: #FFFFFF;border-top: 20rpx solid #EDF1F5;.formBox {flex: 1;// background-color: #fff;padding: 0 48rpx 150rpx;.item {display: flex;flex-direction: row;padding: 28rpx 0;border-bottom: 1rpx solid #EDF1F5;position: relative;.label {font-family: PingFangSC, PingFang SC;font-weight: 400;font-size: 28rpx;color: #666666;text-align: left;font-style: normal;margin-right: 40rpx;}.inBox {flex: 1;display: flex;align-items: center;justify-content: flex-end;.input {text-align: right;color: #212121;font-family: PingFangSC, PingFang SC;font-weight: 400;font-size: 28rpx;}}&.block {flex-direction: column;border: 0;padding: 28rpx 0 0 0;.inBox {flex: 1;display: flex;align-items: center;justify-content: flex-start;border-bottom: 1rpx solid #EDF1F5;padding: 0 0 24rpx 0;.input {text-align: left;color: #212121;}}}.dateBox {position: absolute;left: 0;right: 0;top: 0;bottom: 0;z-index: 999;}.tip {font-family: PingFangSC, PingFang SC;font-weight: 400;font-size: 28rpx;color: #999999;font-style: normal;margin: 16rpx 0 20rpx 0;}.update {width: 136rpx;height: 136rpx;background: #FFFFFF;border-radius: 12rpx;border: 2rpx dashed #126DCC;}}}.form_label {color: #303133;font-size: 30rpx;padding-top: 20rpx;}.form_label_tip {font-weight: 400;font-size: 28rpx;color: #999999;}.btnBox {position: fixed;left: 0;right: 0;bottom: 0;z-index: 1;padding-top: 32rpx;padding-bottom: calc(32rpx + constant(safe-area-inset-bottom));padding-bottom: calc(32rpx + env(safe-area-inset-bottom));.btn {width: 600rpx;height: 80rpx;background: #4095FF;box-shadow: 0rpx -4rpx 20rpx 0rpx rgba(0,0,0,0.06);border-radius: 12rpx;margin: 0 auto;border-radius: 12rpx;font-family: PingFangSC, PingFang SC;font-weight: 500;font-size: 32rpx;color: #FFFFFF;line-height: 80rpx;letter-spacing: 2px;text-align: center;font-style: normal;}}
}.uploadContent {padding-top: 20rpx;.uploadFileBox {display: flex;justify-content: space-between;background: #eeeeee;padding: 18rpx 30rpx;border-radius: 4rpx;}.uploadChoose {width: 140rpx;height: 140rpx;background: #EDF1F5;display: flex;align-items: center;justify-content: center;}}
</style>

 pdf.vue

<template><!-- <view>kkkk</view> --><!-- <web-view src="https://www.baidu.com/"></web-view> --><web-view :src="toUrl"></web-view>
</template><script>// import { getToken } from '@/assets/scripts/auth'export default {data() {return {toUrl: '' // http://112.17.37.24:6090/web/country_6_wechart/stealOil_heatmap.html/?token=' + getToken() + '&httpUrl=' + }},onLoad (option) {// console.log(option)this.toUrl = decodeURIComponent(option.url)}}
</script><style>
</style>

 pages.json

{// 如果您是通过uni_modules形式引入uView,可以忽略此配置"easycom": {"^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue"},"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages{"path": "pages/index","style": {"navigationStyle": "custom","enablePullDownRefresh": true}},{"path": "pages/login/login","style": {"navigationStyle": "custom","enablePullDownRefresh": false}},{"path": "pages/home/index","style": {"navigationStyle": "custom","enablePullDownRefresh": true}},{"path": "pages/vehicles/index","style": {"navigationStyle": "custom"}},{"path": "pages/user/index","style": {"navigationBarTitleText": "我的"}},{"path": "pages/warn/index","style": {"navigationBarTitleText": "报警"}}],"subPackages": [{"root": "subPackages","pages": [{"path": "home/claim/index","style": {"navigationBarTitleText": "出险上报","enablePullDownRefresh": false}},{"path": "home/claim/pdf","style": {"navigationBarTitleText": "预览PDF","enablePullDownRefresh": false}}, ]}],"globalStyle": {"navigationBarTextStyle": "black","navigationBarTitleText": "","navigationBarBackgroundColor": "#FFF","backgroundColor": "#FFF","enablePullDownRefresh": false,"onReachBottomDistance": 100}
}

wx.chooseMessageFile 使用小程序API,要登录小程序管理后台,设置用户隐私协议:设置--基本信息--服务内容声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/381166.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言:数组-学习笔记(万字笔记)——翻新版

目录 前言&#xff1a; 1、 数组的概念 1.1 什么是数组 1.2 为什么学习数组&#xff1f; 2. ⼀维数组的创建和初始化 2.1 数组创建 2.2 数组的初始化 2.3 数组的类型 2.3.1 什么是数组类型&#xff1f; 2.3.2 数组类型的作用 3、 一维数组的使用 3.1 数组下标 3.2 数…

ExoPlayer架构详解与源码分析(15)——Renderer

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

CentOS 7 初始化环境配置详细

推荐使用xshell远程连接&#xff0c;如链接不上 请查看 CentOS 7 网络配置 修改主机名 hostname hostnamectl set-hostname xxx bash 关闭 SElinux 重启之后生效 配置yum源&#xff08;阿里&#xff09; 先备份CentOS-Base.repo&#xff0c;然后再下载 mv /etc/yum.repos…

《昇思25天学习打卡营第24天|基于 MindSpore 实现 BERT 对话情绪识别》

1. BERT 模型概述 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一个预训练的语言表示模型&#xff0c;可以应用于多种自然语言处理任务&#xff0c;包括对话情绪识别。BERT 通过双向 Transformer 编码器&#xff0c;能同时考虑句子…

什么是单例模式,有哪些应用?

目录 一、定义 二、应用场景 三、6种实现方式 1、懒汉式&#xff0c;线程不安全。 2、懒汉式&#xff0c;线程安全 3、双检锁/双重校验锁&#xff08;DCL&#xff0c;即 double-checked locking&#xff09; 4、静态内部类方式-------只适用于静态域 5、饿汉式 6、枚举…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 图像物体的边界(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

NFT革命:数字资产的确权、营销与元宇宙的未来

目录 1、NFT&#xff1a;数字社会的数据确权制度 2、基于低成本及永久产权的文化发现 3、PFP&#xff1a;从“小图片”到“身份表达”&#xff0c;再到社区筛选 4、透明表达&#xff1a;NFT 在数字化营销中的商业价值 5、可编程性&#xff1a;赋予 NFT 无限可能的应用 5.…

系统架构设计师教程(清华第二版) 第3章 信息系统基础知识-3.2 业务处理系统-解读

教材中,一会儿“业务处理系统”,一会儿“事务处理系统”,语法毛病一堆。真是清华的水平!!! 系统架构设计师教程 第3章 信息系统基础知识-3.2 业务处理系统 3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能3.2.2.1 数据输入3.2.2.2 数据处理3.2.2.2.1 批处理 (Batch …

驱动框架——CMSIS第一部分 RTE驱动框架介绍

一、介绍CMISIS 什么是CMSIS&#xff08;cortex microcontrol software interface standard一种软件标准接口&#xff09;&#xff0c;官网地址&#xff1a;https://arm-software.github.io/CMSIS_6/latest/General/index.html 包含的core、driver、RTOS、dsp、nn等部分&…

Synchronized升级到重量级锁会发生什么?

我们从网上看到很多&#xff0c;升级到重量锁的时候不会降级&#xff0c;再来线程都是重量级锁 今天我们来实验一把真的是这样的吗 1.首选导入Java对象内存布局的工具库&#xff1a; <dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-…

redis的学习(一):下载安装启动连接

简介 redis的下载&#xff0c;安装&#xff0c;启动&#xff0c;连接使用 nosql nosql&#xff0c;即非关系型数据库&#xff0c;和传统的关系型数据库的对比&#xff1a; sqlnosql数据结构结构化非结构化数据关联关联的非关联的查询方式sql查询非sql查询事务特性acidbase存…

Python数据风险案例54——人工智能热门概念股爬虫分析其价值(三因子模型)

案例背景 人工智能概念如火如荼的夏天&#xff0c;在这个2024年&#xff0c;我觉得需要提早布局一下这个概念。所以我们找一下A股里面人们的人工智能概念股&#xff0c;然后分析他们的数据应用三因子模型&#xff0c;也就是最经典的资本资产定价模型的衍生版去研究他们各自的投…

ZYNQ 入门笔记(零):概述

文章目录 引言产品线Zynq™ 7000 SoCZynq UltraScale™ MPSoCZynq UltraScale RFSoCVersal™ Adaptive SoC 开发环境 引言 Xilinx FPGA 产品线从经济型的 Spartan、Artix 系列到高性能的 Kintex、Virtex、Versal 系列&#xff0c;可以说涵盖了 FPGA 的绝大部分应用场景&#x…

开发工具推荐:await-to-js

目录 前言&#xff1a; 1. .then().catch() 2. async await 3. await-to-js 前言&#xff1a; 今天给大家推荐一块我觉得用着还不错的工具&#xff0c;await-to-js&#xff1b; await-to-js - npm GitHub - scopsy/await-to-js: Async await wrapper for easy error ha…

element UI :el-table横向列内容超出宽度,滚动条不显示问题

是否能解决你问题的前提 **看到这篇文章的解决问题的方案之前&#xff0c;请先回忆你是否在项目中的全局样式或者私有组件中去单独设置过滚动条样式。如果有 请继续往下看&#xff1a;**单独设置过滚动条样式代码实例&#xff1a; ::-webkit-scrollbar {/*滚动条整体样式*/wi…

VulnHub:insomnia

靶机下载地址 信息收集 主机发现和端口扫描 攻击机网段192.168.31.0/24。 # 主机发现 nmap 192.168.31.0/24 -Pn -T4 # 靶机ip:192.168.31.207 端口扫描 nmap 192.168.31.207 -A -p- -T4 经过nmap扫描发现目标主机有http服务&#xff0c;端口是8080。 目录扫描 访问http…

SQL Server 使用 OPTION (RECOMPILE) 和查询存储的查询

设置 我们正在使用 WideWorldImporters 数据库&#xff0c;您可以从 Github 下载【sql-server-samples/samples/databases/wide-world-importers at master microsoft/sql-server-samples GitHub】。我正在运行SQL Server 2017 的最新 CU【https://sqlserverbuilds.b…

R绘制Venn图及其变换

我自己在用R做各种分析时有不少需要反复用到的基础功能&#xff0c;比如一些简单的统计呀&#xff0c;画一些简单的图等等&#xff0c;虽说具体实现的代码也不麻烦&#xff0c;但还是不太想每次用的时候去找之前的代码。 索性将常用的各种函数整成了一个包&#xff1a;pcutils…

更加深入Mysql-04-MySQL 多表查询与事务的操作

文章目录 多表查询内连接隐式内连接显示内连接 外连接左外连接右外连接 子查询 事务事务隔离级别 多表查询 有时我们不仅需要一个表的数据&#xff0c;数据可能关联到俩个表或者三个表&#xff0c;这时我们就要进行夺标查询了。 数据准备&#xff1a; 创建一个部门表并且插入…

【Qt】常用控件

文章目录 QWidgetenabledgeometrywindow framewindowTitlewindowIconqrc资源管理windowOpacitycursorfonttoolTipfocusPolicystyleSheet 按钮类PushButtonRadioButtonCheckBoxSignals 显示类LabelLCDNumberProgressBarCalendar 输入类LineEditTextEditComboBoxSpinBoxDateTimeE…