<script>
import {Config} from '@/config.js'
import {mapState} from 'vuex'
import {LocalData, toast, WX} from '@/utils/common'
import {FileUtil} from '@/utils/FileUtil'
import {PayUtil} from '@/utils/PayUtil'
import Vue from 'vue'
import {Checklist, Indicator, Popup} from 'mint-ui'
import xImg from '@/components/x-img' Vue.component(Checklist.name, Checklist)
Vue.component(Popup.name, Popup)
let imgLimit = 100
let vm
export default {
name: 'signing',
components: {
xImg
},
data() {
return {
contractno:undefined,//合同号
totle_sum: undefined,//总车辆数
totle_r: undefined,//常规租赁总租金
totle_s: undefined,//以租代购总租金
totle_b: undefined,//总保证金
first_t: undefined,//首付款总金额
sign_address: '',//签约地点
sing_time: '',//签约时间
sign_remark: '',//备注
operator_name: '',//经办人
imgs: {},
imgLen:0,
updataImg: '../../static/img/update.jpg ', selectImgs: [{}],
images: [],
}
},
computed: {
...mapState({
signContract: state => state.signing.signContract,
totleRent: function () {
this.totle_sum = 0
this.totle_r = 0
this.totle_s = 0
this.totle_b = 0
this.first_t = 0
let _length = this.signContract.cardetail.length
let _array = this.signContract.cardetail
for (let i = 0; i < _length; i++) {
//获取车辆数
this.totle_sum += parseInt(_array[i].number)
//获取常规租赁租金
this.totle_r += parseInt(_array[i].rent_total)
//获取以租代购租金
this.totle_s += parseInt(_array[i].rent_sum)
//获取保证金
this.totle_b += parseInt(_array[i].bond_total)
//获取首付款总额
this.first_t += parseInt(_array[i].first_total) }
},
}),
},
methods: {
getSignContract: function () {
let rel = this;
rel.$store.dispatch('signing/getsignContract', {
params: {
contractno: this.contractno
},
// callBack(data) {
// rel.operator_name = data.operator_name
// }
})
},
selectImage () {
if (this.$refs.fileInput[0].files.length > 0) {
const file = this.$refs.fileInput[0].files[0]
const vm = this
const temp = this.selectImgs[this.selectImgs.length - 1]
Vue.set(temp, 'src', 'loadding')
FileUtil.compress(file, {
onSuccess (result) {
let rst = result[0]
temp.src = rst.base64
temp.file = rst.file
temp.name = rst.origin.name
vm.images.push({
src: rst.base64
})
if (vm.selectImgs.length < imgLimit) {
vm.selectImgs.push({})
}
},
onFail (err) {
temp.src = undefined
toast.show(JSON.stringify(err))
},
onFinish () {
}
})
}
},
delImg (index) {
this.selectImgs.splice(index, 1)
this.images.splice(index, 1)
if (this.selectImgs.length > 0) {
let temp = this.selectImgs[this.selectImgs.length - 1]
if (temp.src) {
this.selectImgs.push({})
}
}
else {
this.selectImgs.push({})
}
},
submit() {
if (!this.sing_time) {
toast.show('请选着签约时间')
return
}
else if(!this.sign_address){
toast.show('请填写签约地址')
return
}
else if(!this.sign_remark){
toast.show('请简要填写备注')
return
}
let formData = new FormData()
formData.append('token', LocalData.getToken())
formData.append('contractno', this.contractno)
formData.append('sing_time', this.sing_time)
formData.append('sign_address', this.sign_address)
formData.append('sign_remark', this.sign_remark)
for (let index = 0; index < this.selectImgs.length - 1; index++) {
if (this.selectImgs[index] != null) {
formData.append('uploadImg', this.selectImgs[index].file, this.selectImgs[index].name)
}
}
let config = {
headers: {
'Content-Type': 'multipart/form-data'
}
}
Indicator.open()
this.$axios.post('applease/internallySignedImg', formData, config).then(
response => {
Indicator.close()
if (response.data.code == 0) { }
toast.show(response.data.message)
}).catch(error => {
console.log(error)
Indicator.close()
toast.show('网络异常,上传失败')
})
}
},
created: function () {
vm = this
this.contractno = this.$route.query.contractNo
this.getSignContract()//合同车辆信息接口处理
}
}
</script>
<div class="img-box">
<div class="up-img">
<template v-for="(img,index) of selectImgs">
<template v-if="!img || !img.src">
<em>
<input type="file" accept="image/jpeg,image/jpg,image/png,image/x-png,image/gif" @change="selectImage"
ref="fileInput"/>
<img :src="updataImg"/>
</em>
</template>
<template v-else>
<label>
<template v-if="img.src && img.src != 'loadding'">
<i slot="icon" class="item-icon parent-h-right icon-close" @click="delImg(index)"></i>
</template>
<x-img :src="img.src" @on-click="preview(index)"></x-img>
</label>
</template>
</template>
</div>
</div>

vue实现上传上删除压缩图片的更多相关文章

  1. js实现上传前删除指定图片

    "上传之前"移除选错图片代码: 此处效果为:点击需要删除的图片,确认删除就可以了.

  2. [java]文件上传下载删除与图片预览

    图片预览 @GetMapping("/image") @ResponseBody public Result image(@RequestParam("imageName ...

  3. vue代码上传服务器后背景图片404解决方法

    问题:代码上传服务器后,图片404,使用的font-awesome图标也是404 解决办法: 如果你用了vue-cil,那么在build目录下找到utils.js中的ExtractTextPlugin ...

  4. iOS 使用AFN 进行单图和多图上传 摄像头/相册获取图片,压缩图片

    图片上传时必要将图片进行压缩,不然会上传失败 首先是同系统相册选择图片和视频.iOS系统自带有UIImagePickerController,可以选择或拍摄图片视频,但是最大的问题是只支持单选,由于项 ...

  5. 又拍云 Node.js 实现文件上传、删除

    Node.js 服务端 使用 Node.js + Express.js 实现 服务端 const express = require("express"); const app = ...

  6. hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images

    hTML5实现表单内的上传文件框,上传前预览图片,针刷新预览images, 本例子主要是使用HTML5 的File API,建立一個可存取到该file的url, 一个空的img标签,ID为img0,把 ...

  7. 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端

    原文地址:http://docode.top/Article/Detail/10002 目录: 1.Http协议上传文件(以图片为例)请求报文体内容格式 2.完整版HttpWebRequest模拟上传 ...

  8. 从web编辑器 UEditor 中单独提取图片上传,包含多图片单图片上传以及在线涂鸦功能

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.(抄的...) UEditor是非常好用的富文 ...

  9. php用jquery-ajax上传多张图片限制图片大小

    php用jquery-ajax上传多张图片限制图片大小 /** * 上传图片,默认大小限制为3M * @param String $fileInputName * @param number $siz ...

  10. 使用C#WebClient类访问(上传/下载/删除/列出文件目录)由IIS搭建的http文件服务器

    前言 为什么要写这边博文呢?其实,就是使用C#WebClient类访问由IIS搭建的http文件服务器的问题花了我足足两天的时间,因此,有必要写下自己所学到的,同时,也能让广大的博友学习学习一下. 本 ...

随机推荐

  1. yii2之前端资源引入

     PS:因新项目后端使用yii2框架,不在使用纯html模板的方式搭建页面(前后端不分离模式)使用yii2的内置boostart封装模板,遂研究了一番yii2 通过yii2官方下载的基础文件结构 其中 ...

  2. POJ 1111

    #include<iostream> #define MAXN 30 using namespace std; char _m[MAXN][MAXN]; bool mark[MAXN][M ...

  3. Scala中使用implict 扩展现有类的方法

    Scala中implict的一种用法就是扩展现有类的方法,有点类似于.Net中的扩展方法(MS对扩展方法的介绍:扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改 ...

  4. 剑指offer三十之连续子数组的最大和

    一.题目 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...

  5. (转) rabbitmq应用场景

    原文:http://blog.csdn.net/wangpengblog/article/details/76405598

  6. python 代码的缩进位置决定执行部分

    通过近期的代码训练,我发现同样的一个语句,在同一行缩进的位置不同,决定的执行部分也不同.先给一个例子(我想打出1-100中的前20个偶数) 比较第一张图和第二张图.第一张截图实现了我想要的功能.可是当 ...

  7. 数据输入——生成你需要的echart图(世界地图,气泡图)

    上一篇文章介绍了:堆积柱状图.扇形图.嵌套环形图,现在来介绍一下:世界地图和气泡图 1.世界地图 http://echarts.baidu.com/examples/editor.html?c=map ...

  8. java_sql_Batch_批处理

    java  JDBC 进行sql语句的批处理的两种方法示例代码.表是oracle数据库里的dept表,为了看清逻辑关系,把异常都throws 出去. package com.ayang.jdbc; i ...

  9. 手机访问电脑中部署的tomcat应用

    手机访问电脑中部署的tomcat应用. 操作步骤: 第一种:有无线路由的情况. 1.建议局域通信. 操作如下:电脑,手机都自动连接到无线路由器中(无线路由不必非要联网). 2.启动电脑用的tomcat ...

  10. ELK日志系统之使用Rsyslog快速方便的收集Nginx日志

    常规的日志收集方案中Client端都需要额外安装一个Agent来收集日志,例如logstash.filebeat等,额外的程序也就意味着环境的复杂,资源的占用,有没有一种方式是不需要额外安装程序就能实 ...