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

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签