elementui展示多张图片_vue+element ui 上传多张图片或视频-程序员宅基地

技术标签: elementui展示多张图片  

:limit="5"

action=""

accept=".jpg,.jpeg,.JPG,.JPEG,.png,.PNG"

list-type="picture-card"

:on-preview="handlePictureCardPreview"

:on-remove="handleRemove2"

:http-request="handleUploadImage"

:before-upload="beforeImageUpload"

:on-change="changeImgStatus"

:file-list="temp_img_list">

           

上传失败了!

import {VueCropper} from 'vue-cropper';

import selector from '@/components/selector'

import bus from '../common/bus.js';

import config from '../../config'

export default {

name: "edit_face_adv",

components: {

selector,

VueCropper,

},

data() {

let checkNum = (rule, value, callback) => {

if (!value) {

return callback(new Error('红包数量不能为空'));

} else {

const reg = /^\+?[1-9][0-9]*$/;

if (reg.test(value)) {

let hb_num = Math.ceil(this.adv_group.hb_budget * 1.5);

if (parseInt(value) > hb_num) {

return callback(new Error("红包数量不能超过" + hb_num + "个"))

} else {

callback();

}

} else {

return callback(new Error("请输入正确的红包数量"));

}

}

};

let checkHbBudget = (rule, value, callback) => {

if (!value) {

return callback(new Error('红包金额不能为空'));

} else {

const reg = /^\+?[1-9][0-9]*$/;

if (reg.test(value)) {

if (value < 1) {

return callback(new Error("红包金额不能小于1元"))

} else {

callback();

}

} else {

return callback(new Error("请输入正确的红包金额"));

}

}

};

return {

wxapp_id:'',

multipleSelection: [],

title: '',

form: {},

loadingData: true,

loadingText: '拼命加载中',

garden_filter_text: '',

isIndeterminate: false,

checked_garden_list: [],

checked_region_list: [],

checked_garden_num: 0,

checked_adv_list: '',

CheckedNodes: [],

region_list: [],

adv_category_list: [],

tpl_list: [],

defaultProps: {

children: 'children',

label: 'name'

},

defaultProps2: {

children: 'children',

label: 'ad_name'

},

adv_group: {},

limit: {

push_hour: 0,//推送时段的选择 0不限 1有限制

},

active_step: 1,

pickerOptions: this.api.get_time_config(),

adv_tree: [],

adv_category_select: [],

adv_list: [],

goods: {

list: [],

},

copy: {

id: '',

visible: false,

},

video: {

path: '',

visible: false,

status: 0,

file: [],

fileList: []

},

crop: {

file: '',

fileList: [],

fileName: '',

info: true, //裁剪框的大小信息

outputSize: 1, // 裁剪生成图片的质量

canScale: true, // 图片是否允许滚轮缩放

autoCrop: true, // 是否默认生成截图框

visible: false,//是否显示弹窗

fixedBox: true,// 固定截图框大小 不允许改变  可选值:true | false

cropImg: '',

imgList: [],

imgSrc: '',//图片地址

autoCropWidth: 450, // 默认生成截图框宽度

autoCropHeight: 250, // 默认生成截图框高度

fixed: true, //是否开启截图框宽高固定比例

fixedNumber: [9, 5], //截图框的宽高比例

centerBox: true,//截图框是否被限制在图片里面

enlarge: 1, // 输出图像比例

editKey: '',//当前编辑的图片在数组中的key值

},

crop2: {

file: '',

fileList: [],

fileName: '',

info: true, //裁剪框的大小信息

outputSize: 1, // 裁剪生成图片的质量

canScale: true, // 图片是否允许滚轮缩放

autoCrop: true, // 是否默认生成截图框

visible: false,//是否显示弹窗

fixedBox: true,// 固定截图框大小 不允许改变  可选值:true | false

cropImg: '',

imgList: [],

imgSrc: '',//图片地址

autoCropWidth: 200, // 默认生成截图框宽度

autoCropHeight: 200, // 默认生成截图框高度

fixed: true, //是否开启截图框宽高固定比例

fixedNumber: [1, 1], //截图框的宽高比例

centerBox: true,//截图框是否被限制在图片里面

enlarge: 1, // 输出图像比例

editKey: '',//当前编辑的图片在数组中的key值

},

imgFileName: '',

rules1: {

push_limit: [

{required: true, message: '请输入推送限制', trigger: 'blur'}

],

click_limit: [

{required: true, message: '请输入点击限制', trigger: 'blur'}

],

fee_method: [

{required: true, message: '请选择广告计费方式', trigger: 'blur'}

],

unit_price: [

{required: true, message: '请填写广告单价', trigger: 'blur'}

],

settle_method: [

{required: true, message: '请选择广告结算方式', trigger: 'blur'}

],

hb_budget: [

{required: true, validator: checkHbBudget, trigger: 'blur', min: 1}

],

hb_num_budget: [

{required: true, message: '请填写红包限领次数', trigger: 'blur'}

],

hb_day_num_budget: [

{required: true, message: '请填写红包日限领次数', trigger: 'blur'}

],

hb_total_num_budget: [

{required: true, validator: checkNum, trigger: 'blur'}

],

hb_min: [

{required: true, message: '请填写红包最小限额', trigger: 'blur'}

],

hb_max: [

{required: true, message: '请填写红包最高限额', trigger: 'blur'}

],

service_fee_percent: [

{required: true, message: '请填写该商户发放红包收取的服务费比例', trigger: 'blur'}

]

},

rules3: {

ad_name: [

{required: true, message: '请输入广告名称', trigger: 'blur'}

],

ad_link: [

{required: true, message: '请输入广告链接', trigger: 'blur'}

],

sort: [

{required: true, message: '请输入广告排序', trigger: 'blur'}

],

intro: [

{required: true, message: '请输入引导词', trigger: 'blur'}

],

cate_id: [

{required: true, message: '请选择广告分类', trigger: 'blur'}

],

type: [

{required: true, message: '请选择广告投放类型', trigger: 'blur'}

],

push_type: [

{required: true, message: '请选择广告投放类型', trigger: 'blur'}

],

theme_id: [

{required: true, message: '请选择加入主题的广告', trigger: 'blur'}

]

},

//2020.10.30新增

gardenForm:{

garden_sum:'',

},

garden_news_data:[],

show_a:0,

uploadForm:{},

temp_img_list: [], //图片列表

temp_video_list: [], //视频

filenews:'', //要上传的图片二进制参数

fileVideonews:'', //要上传的视频二进制参数

ImgdialogVisible:false,

VideodialogVisible:false,

temp_img_url:'',

temp_video_url:'',

upload_status:'',

img_num:'',

video_num:'',

upload_img_list:[], //图片参数

upload_video_list:[], //提交给后台的视频参数

postFormData:{}, //提交给后台的数据

ad_link:'', //提交到后台的参数 广告文件内容

upload_img_str: '',

upload_video_str: '',

agent_data:[], //agent数据信息

age_data:[], //年龄投放段

editData:[],

checked_garden_keys: [],

// get_band_gardens:[],

}

},

watch: {

garden_filter_text(val) {

this.$refs.tree.filter(val);

},

// checked_garden_list() {

//     this.checked_garden_num = this.checked_garden_list.length;

// },

'adv_group.fee_method': function (val) {

if (val == 0) {

this.adv_group.settle_method = 2;

}

},

'form.type': function (val) {

if (val == 4) {

this.form.push_type = 1;

this.form.is_charge = 0;

this.getAdvList();

}

if (val == 5) {

this.crop.autoCropWidth = 288;

this.crop.autoCropHeight = 557;

} else {

this.crop.autoCropWidth = 450;

this.crop.autoCropHeight = 250;

}

},

},

created() {

let adv_id = this.$route.query.adv_id;

this.adv_id = adv_id;

console.log('adv_id-----',adv_id);

//获取agent数据信息

this.getData();

if (this.$refs['form1'] !== undefined) {

this.$refs['form'].resetFields();

}

if (this.$refs['form2'] !== undefined) {

this.$refs['form'].resetFields();

}

if (this.$refs['form3'] !== undefined) {

this.$refs['form'].resetFields();

}

this.garden_filter_text = '';

},

activated() {

let adv_id = this.$route.query.adv_id;

this.adv_id = adv_id;

this.getData();

},

methods: {

// 获取广告数据

getData() {

this.handleEdit();

},

//获取年龄投放段 /api/adv/get_age_slot

get_age_slot(){

this.$post(config.wsURL+'/api/adv/get_age_slot').then((res) => {

this.age_data = res.data;

})

},

//修改

async handleEdit() {

let res = await this.$post(config.wsURL+'/api/adv/get_adv_row', {adv_id: this.adv_id});

if(!res) {

this.loadingData = false;

}

let advs = res.data.advs; //广告数据

let gardens = res.data.gardens; //小区数据

let group = res.data.group; //小区分组数据

this.crop.imgSrc = '';

if (this.$refs.tree) {

this.$refs.tree.setCheckedNodes([]);

}

this.checked_garden_list = [];

this.temp_img_list = [];

this.adv_group = {

enable: true,

start_time: group.start_time,

end_time: group.end_time,

sex_limit: String(group.sex_limit),

age_limit: String(group.age_limit),

system_limit: '',

click_limit: '0',

day_click_limit: '0',

push_limit: '0',

day_push_limit: '0',

week_push_limit: '0',

week_click_limit: '0',

unit_price: '0',

jump_limit: '1',

fee_method: String(group.fee_method),

day_budget: '0',

total_budget: group.total_budget,

buyout: '0',

settle_method: '2',

has_hb: false,

hb_range_limit: false,

hb_budget: 0,

hb_total_num_budget: 0,

hb_num_budget: 1,

hb_day_num_budget: 1,

push_hour: '',

garden_list: gardens, //选中的小区数据

time_range: [new Date(group.start_time * 1000), new Date(group.end_time * 1000)],

};

let type = String(this.$route.params.type)? String(this.$route.params.type):'1';

this.form = {

id: advs.id,

ad_name: advs.ad_name,

type: String(advs.adv_type),

cate_id: '',

cate_pid: '',

ad_link: '',

desc: '',

sort: advs.sort,

push_type: type === '6' ? true : 0,

theme_id: '',

from: 1,

video: '',

wxapp: {

url: '',

source_id: '',

top: 0,

},

intro: "查看详情",

is_wxapp:'0',

wxapp_id:'',

path:'',

act: 'edit'

};

// this.form.type= String(this.$route.params.type);

let date = new Date();

let year = date.getFullYear();

let month = date.getMonth() + 1;

let day = date.getDate();

let time = year + "-" + month + "-" + day + " " + "00:00:00";

let year2 = date.getFullYear() + 1;

let time2 = year2 + "-" + month + "-" + day + " " + "00:00:00";

let ad_str = advs.ad_link;

let ad_arr = ad_str.split(',');

for(let i=0;i

if(i === 0 && ad_str){

console.log(ad_arr[i]);

this.temp_img_list.push({

'url': ad_arr[i],

});

}else{

this.temp_img_list.push({

'url': '',

});

}

// console.log(i);

}

},

// ---------------------------- 上传文件st -------------------

//处理上传图片数据格式

handleimgStrData(){

for (let i = 0; i < this.temp_img_list.length; i++) {

let url = this.temp_img_list[i].url;

this.upload_img_list.push(url);

}

let imgStr = "";

this.upload_img_list.filter((item,i)=>{

if(i == this.upload_img_list.length-1) {

imgStr+=item;

}else{

imgStr+=item+",";

}

})

this.upload_img_str = imgStr;

},

//处理上传视频数据格式

handleVideoStrData(){

for (let i = 0; i < this.temp_video_list.length; i++) {

let url = this.temp_video_list[i].url;

this.upload_video_list.push(url);

}

let videoStr = "";

this.upload_video_list.filter((item,i)=>{

if(i == this.upload_video_list.length-1) {

videoStr+=item;

}else{

videoStr+=item+",";

}

})

this.upload_video_str = videoStr;

},

//图片放大预览

handlePictureCardPreview(file) {

this.temp_img_url = file.url;

this.ImgdialogVisible = true;

},

//删除图片

handleRemove2(file,fileList) {

for (let i = 0; i < this.temp_img_list.length; i++) {

if (this.temp_img_list[i]['uid'] === file.uid) {

this.temp_img_list.splice(i, 1)

}

}

},

//获取图片上传的总数

changeImgStatus(file, fileList){

this.img_num = fileList.length;

},

//获取视频上传的总数

changeVideoStatus(file, fileList){

this.video_num = fileList.length;

},

//上传图片前判断

beforeImageUpload(file) {

var formData = new FormData();

formData.append('file',file);

this.filenews = formData;

const isLt5M = file.size / 1024 / 1024 < 2;

if (!isLt5M) {

this.$message.error('上传图片大小不能超过 2MB!');

}

if (this.temp_img_list.length === 5) {

this.$message.error('最多上传5张图片!');

}

},

//上传图片方法

handleUploadImage(e){

const file = e.file;

const isLt1M = file.size / 1024 / 1024 <= 2;

if (!isLt1M) {

this.$message.error('上传图片大小不能超过 2MB!');

return  false;

}

this.$post(config.wsURL+'/api/cos/upload',  this.filenews).then((res) => {

if (res) {

this.temp_img_list.push({

'url': res.data.src,

});

} else {

this.$message.error("上传图片失败");

this.upload_status = 2;

}

});

return false;

},

//删除视频

handleRemoveVideo(file,fileList) {

for (let i = 0; i < this.temp_video_list.length; i++) {

if (this.temp_video_list[i]['uid'] === file.uid) {

this.temp_video_list.splice(i, 1)

}

}

},

handleVideoCardPreview(file) {

this.temp_video_url = file.url;

this.ImgdialogVisible = true;

},

beforeVideoUpload(file, fileList) {

var formData = new FormData();

formData.append('file',file);

this.fileVideonews = formData;

this.video.fileList = [];

if (!/\.(mp4|3gp|flv|avi|wmv)$/.test(file.name)) {

this.$message.error('视频类型必须是mp4,3gp,flv,avi,wmv中的一种');

this.video.fileList = [];

return false

}

if (file.size > 6291456) {

this.$message.error('视频大小不能超过6M');

this.video.fileList = [];

return false

}

this.video.file = document.querySelector('input[type=file]').files[0];

this.video.path = file.url;

this.temp_video_url = file.url;

},

//上传视频

handleUploadVideo(e) {

if (this.form.video) {

return true;

}

this.$post(config.wsURL+'/api/cos/upload',this.fileVideonews).then((res) => {

if (res) {

this.temp_video_list.push({

'url': res.data.src,

});

this.temp_video_url = res.data.src;

} else {

this.$message.error('上传视频失败!');

this.loadingData = false;

throw false;

}

});

},

// ---------------------------- 上传文件end ------------------

// 保存编辑/新增

async saveEdit() {

this.loadingText = '提交中,请等待片刻...';

this.loadingData = true;

//处理表单校验失败后,去除Loading

try {

await this.$refs['form3'].validate();

} catch (e) {

if (!e) {

this.$message.error('请填写广告完整信息!');

this.loadingData = false;

throw false;

}

}

//对推送时间段的处理

this.checkPushHour();

//对主题广告的处理

if (this.form.type === '4') {

this.getCheckedAdv();

}

this.adv_group.start_time = new Date(this.adv_group.time_range[0]).getTime() / 1000;

this.adv_group.end_time = new Date(this.adv_group.time_range[1]).getTime() / 1000;

this.form.adv_group = this.adv_group;

this.form.adv_group.garden_list = this.checked_garden_list;

//

// agent_idinteger是广告商id

// ad_namestring是广告名字

// adv_typeinteger是广告类型 1图片 2视频

// ad_linkstring是广告文件内容

// tmp_idinteger是模版id

// start_timestring是广告开始投放时间

// end_timestring是广告结束投放时间

// sex_limitinteger是性别投放限制 0无限制 1男 2女

// age_limitinteger是年龄段投放限制

// fee_methodstring是计费方式

// total_budgetstring是总预算

// band_codeobject是投放小区

//获取处理好的上传图片数据格式

this.handleimgStrData();

//获取上传视频数据

this.handleVideoStrData();

// console.log(this.upload_img_str);

// console.log(this.upload_video_str);

// return false;

if(this.form.type == 1){ //图片

this.ad_link = this.upload_img_str;

}else if(this.form.type == 2){ //视频

this.ad_link = this.upload_video_str;

}else{

this.ad_link = '';

}

// this.adv_group.time_range.join(',');

// let start_time_arr = this.adv_group.time_range[0].toString();

// let end_time_arr = this.adv_group.time_range[1].toString();

// let start_time = start_time_arr.substring(0,10);

// let end_time = end_time_arr.substring(0,10);

// console.log(this.adv_group.start_time);

// console.log(this.adv_group.end_time);

// console.log(this.form.adv_group.garden_list);

this.postFormData = {

'agent_id': this.agent_data.id,

'agent_pid': this.agent_data.pid,

'ad_name': this.form.ad_name,

'adv_type':this.form.type,

'ad_link':this.ad_link,

'tmp_id':'1',

'start_time':this.adv_group.start_time,

'end_time':this.adv_group.end_time,

'sex_limit':this.adv_group.sex_limit,

'age_limit':this.adv_group.age_limit,

'fee_method':this.adv_group.fee_method,

'total_budget':this.adv_group.total_budget,

'band_code': this.form.adv_group.garden_list,

'sort':this.form.sort,

'id' : this.adv_id,

};

console.log(this.postFormData);

// return false;

this.loadingData = false;

this.$post(config.wsURL+'/api/adv/edit',this.postFormData).then((res) => {

this.loadingData = false;

if (res.code === 1) {

this.$message.success(res.msg);

this.$router.push({name: 'face_adv',params:{tag:'edit_face_adv'}});

} else {

this.loadingData = false;

this.$message.error(res.msg);

}

})

},

handleClick(tab, event) {

},

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39853892/article/details/111512584

智能推荐

从零开始搭建Hadoop_创建一个hadoop项目-程序员宅基地

文章浏览阅读331次。第一部分:准备工作1 安装虚拟机2 安装centos73 安装JDK以上三步是准备工作,至此已经完成一台已安装JDK的主机第二部分:准备3台虚拟机以下所有工作最好都在root权限下操作1 克隆上面已经有一台虚拟机了,现在对master进行克隆,克隆出另外2台子机;1.1 进行克隆21.2 下一步1.3 下一步1.4 下一步1.5 根据子机需要,命名和安装路径1.6 ..._创建一个hadoop项目

心脏滴血漏洞HeartBleed CVE-2014-0160深入代码层面的分析_heartbleed代码分析-程序员宅基地

文章浏览阅读1.7k次。心脏滴血漏洞HeartBleed CVE-2014-0160 是由heartbeat功能引入的,本文从深入码层面的分析该漏洞产生的原因_heartbleed代码分析

java读取ofd文档内容_ofd电子文档内容分析工具(分析文档、签章和证书)-程序员宅基地

文章浏览阅读1.4k次。前言ofd是国家文档标准,其对标的文档格式是pdf。ofd文档是容器格式文件,ofd其实就是压缩包。将ofd文件后缀改为.zip,解压后可看到文件包含的内容。ofd文件分析工具下载:点我下载。ofd文件解压后,可以看到如下内容: 对于xml文件,可以用文本工具查看。但是对于印章文件(Seal.esl)、签名文件(SignedValue.dat)就无法查看其内容了。本人开发一款ofd内容查看器,..._signedvalue.dat

基于FPGA的数据采集系统(一)_基于fpga的信息采集-程序员宅基地

文章浏览阅读1.8w次,点赞29次,收藏313次。整体系统设计本设计主要是对ADC和DAC的使用,主要实现功能流程为:首先通过串口向FPGA发送控制信号,控制DAC芯片tlv5618进行DA装换,转换的数据存在ROM中,转换开始时读取ROM中数据进行读取转换。其次用按键控制adc128s052进行模数转换100次,模数转换数据存储到FIFO中,再从FIFO中读取数据通过串口输出显示在pc上。其整体系统框图如下:图1:FPGA数据采集系统框图从图中可以看出,该系统主要包括9个模块:串口接收模块、按键消抖模块、按键控制模块、ROM模块、D.._基于fpga的信息采集

微服务 spring cloud zuul com.netflix.zuul.exception.ZuulException GENERAL-程序员宅基地

文章浏览阅读2.5w次。1.背景错误信息:-- [http-nio-9904-exec-5] o.s.c.n.z.filters.post.SendErrorFilter : Error during filteringcom.netflix.zuul.exception.ZuulException: Forwarding error at org.springframework.cloud..._com.netflix.zuul.exception.zuulexception

邻接矩阵-建立图-程序员宅基地

文章浏览阅读358次。1.介绍图的相关概念  图是由顶点的有穷非空集和一个描述顶点之间关系-边(或者弧)的集合组成。通常,图中的数据元素被称为顶点,顶点间的关系用边表示,图通常用字母G表示,图的顶点通常用字母V表示,所以图可以定义为:  G=(V,E)其中,V(G)是图中顶点的有穷非空集合,E(G)是V(G)中顶点的边的有穷集合1.1 无向图:图中任意两个顶点构成的边是没有方向的1.2 有向图:图中..._给定一个邻接矩阵未必能够造出一个图

随便推点

MDT2012部署系列之11 WDS安装与配置-程序员宅基地

文章浏览阅读321次。(十二)、WDS服务器安装通过前面的测试我们会发现,每次安装的时候需要加域光盘映像,这是一个比较麻烦的事情,试想一个上万个的公司,你天天带着一个光盘与光驱去给别人装系统,这将是一个多么痛苦的事情啊,有什么方法可以解决这个问题了?答案是肯定的,下面我们就来简单说一下。WDS服务器,它是Windows自带的一个免费的基于系统本身角色的一个功能,它主要提供一种简单、安全的通过网络快速、远程将Window..._doc server2012上通过wds+mdt无人值守部署win11系统.doc

python--xlrd/xlwt/xlutils_xlutils模块可以读xlsx吗-程序员宅基地

文章浏览阅读219次。python–xlrd/xlwt/xlutilsxlrd只能读取,不能改,支持 xlsx和xls 格式xlwt只能改,不能读xlwt只能保存为.xls格式xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改xlrd打开文件import xlrdexcel=xlrd.open_workbook('E:/test.xlsx') 返回值为xlrd.book.Book对象,不能修改获取sheett_xlutils模块可以读xlsx吗

关于新版本selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘等问题_unresolved attribute reference 'find_element_by_id-程序员宅基地

文章浏览阅读8.2w次,点赞267次,收藏656次。运行Selenium出现'WebDriver' object has no attribute 'find_element_by_id'或AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'等定位元素代码错误,是因为selenium更新到了新的版本,以前的一些语法经过改动。..............._unresolved attribute reference 'find_element_by_id' for class 'webdriver

DOM对象转换成jQuery对象转换与子页面获取父页面DOM对象-程序员宅基地

文章浏览阅读198次。一:模态窗口//父页面JSwindow.showModalDialog(ifrmehref, window, 'dialogWidth:550px;dialogHeight:150px;help:no;resizable:no;status:no');//子页面获取父页面DOM对象//window.showModalDialog的DOM对象var v=parentWin..._jquery获取父window下的dom对象

什么是算法?-程序员宅基地

文章浏览阅读1.7w次,点赞15次,收藏129次。算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵 魂。二、算法的特征1.可行性 算法中执行的任何计算步骤都可以分解为基本可执行的操作步,即每个计算步都可以在有限时间里完成(也称之为有效性) 算法的每一步都要有确切的意义,不能有二义性。例如“增加x的值”,并没有说增加多少,计算机就无法执行明确的运算。 _算法

【网络安全】网络安全的标准和规范_网络安全标准规范-程序员宅基地

文章浏览阅读1.5k次,点赞18次,收藏26次。网络安全的标准和规范是网络安全领域的重要组成部分。它们为网络安全提供了技术依据,规定了网络安全的技术要求和操作方式,帮助我们构建安全的网络环境。下面,我们将详细介绍一些主要的网络安全标准和规范,以及它们在实际操作中的应用。_网络安全标准规范