avue强大的upload表单项内置方法的使用,用这个可以配合$DialogForm.show()弹框完美使用上传控件

news/2024/11/20 4:56:28/
avue强大的upload表单项内置方法的使用,可以配合$DialogForm.show()弹框完美使用上传控件,支持非标准化后端返回数据
upload可使用的内置方法
uploadAfter()
uploadBefore()
uploadDelete()
uploadError()
uploadExceed()
uploadPreview()
可以用cangechange: ({ value, column, item, dic }) 事件把表单项的内置方法
change: ({ value, column, item, dic }) => {// obj.$message.success("change事件查看控制台");console.log("值改变", value, column, item, dic);
},

column 对象如下所示

在这里插入图片描述

后端不是按标准的 mame和url返回数据时,需要配置

propsHttp: {url: "attachPath",name: "originalName",res: "data",},

当dataType: “object”,时,点提交时有更多的数据,数据默认是name和url,如果想改成其他

props: {label: "originalName",value: "attachPath",
},

如果保存数据时需要更多的数据,可以用

uploadAfter: (res, done, loading, column) => {obj.$message.success("上传后事件,数据请看控制台");console.log("res:", res, "column:", column);done();},
  • res中包含所有上传服务器返回的数据,如上图的res

上传后端代码

<?php
/** @Description: * @Version: 1.0* @Autor: Tj* @Date: 2023-03-22 16:39:49*/
header("Access-Control-Allow-Origin:*");
header("Content-type:application/json");
$data["data"]  = ["originalName" => "d8b52e565ad93b692ecccc24ebff7b89.jpg","attachPath" => "https://api.avuejs.com/imgview/d8b52e565ad93b692ecccc24ebff7b89.jpg","attachId" => "1234567890"
];
echo json_encode($data);

完整代码

AvueDialogFormCTRView.vue

<!--* @Description: * @Version: 1.0* @Autor: Tj* @Date: 2023-03-17 09:40:03
-->
<template><div><div><el-button type="primary" @click="showDialog">弹窗表单(字段联动,初始化约束)</el-button></div><el-dialogtitle="预览"v-dialogDrag:visible.sync="previewImageFlag"class="avue-dialog"width="85%"top="10px"><el-link :href="previewImageUrl" target="_blank"><el-image :src="previewImageUrl"></el-image></el-link><div class="avue-dialog__footer"><el-button @click="previewImageFlag = false" size="small" type="">关 闭</el-button></div></el-dialog></div>
</template>
<script>
import { AvueDialogFormCTROption } from "@/options/AvueDialogFormCTRViewOption.js";
export default {name: "DialogForm",components: {},data() {return {previewImageFlag: false,previewImageUrl: "",model: {text1: "字段1数据",text2: "字段2数据",text3: "字段3数据",control1: "3",},dicData: [{ label: "开放1个字段", value: "1" },{ label: "开放2个字段", value: "2" },{ label: "开放3个字段", value: "3" },],};},methods: {showDialog() {this.$DialogForm.show({title: "弹窗表单(字段联动,初始化约束)",width: "550px",top:"10px",menuPosition: "right",data: this.model, //初始数据option: AvueDialogFormCTROption(this, this.model), //表单项form: "form",callback: (res) => {console.log(res.data);this.$message.success("关闭等待框");setTimeout(() => {res.done();setTimeout(() => {this.$message.success("关闭弹窗");res.close();}, 1000);}, 1000);},beforeClose: (done) => {this.$message.info("正在关闭弹窗");done();},});},uploadBefore(file, done, loading, column) {console.log(file, column);//如果你想修改file文件,由于上传的file是只读文件,必须复制新的file才可以修改名字,完后赋值到done函数里,如果不修改的话直接写done()即可var newFile = new File([file], "1234", { type: file.type });done(newFile);this.$message.success("上传前的方法");},uploadAfter(res, done, loading, column) {console.log(res, column);done();this.$message.success("上传后的方法");},},
};
</script>
<style scoped type="scss">
.margin-top {margin-top: 20px;
}
</style>

AvueDialogFormCTRViewOption.js

/** @Description:* @Version: 1.0* @Autor: Tj* @Date: 2023-03-21 11:02:42*/
export const AvueDialogFormCTROption = (obj, formData) => {// let actionUpload = "https://api.avuejs.com/imgupload";let actionUpload = "http://localhost/php/upload_data.php";return {labelWidth: 100, //整体列标签宽度submitText: "提交修改",span: 24,size: "small", //medium/small/minicolumn: [{row: true,order: 100,label: "控制项",prop: "control1",type: "select",props: { label: "label", value: "value" },dicData: obj.dicData,control: (val, from) => {if (val == 1) {from.text2 = "";from.text3 = "";return {text1: {disabled: false,},text2: {disabled: true,},text3: {disabled: true,},};} else if (val == 2) {from.text3 = "";return {text1: {disabled: false,},text2: {disabled: false,},text3: {disabled: true,},};} else if (val == 3) {return {text1: {disabled: false,},text2: {disabled: false,},text3: {disabled: false,},};}},rules: [{ required: true, message: "请选择控制项", trigger: "blur" }],},{row: true,order: 50,label: "字段1",prop: "text1",width: 120,type: "input",disabled: false,value: "",},{row: true,order: 50,label: "字段2",prop: "text2",width: 120,type: "input",disabled: formData.control1 == 2 ? true : false,value: "",},{row: true,order: 50,label: "字段3",prop: "text3",type: "textarea",maxlength: 200,showWordLimit: true,minRows: 2,maxRows: 2,disabled:formData.control1 == 1 || formData.control1 == 2 ? true : false,value: "",change: ({ value, column, item, dic }) => {// obj.$message.success("change事件查看控制台");// console.log("值改变", value, column, item, dic);},},{row: true,order: 50,label: "上传附件",prop: "upload1",type: "upload",fileType: "img", //img/video/audioaccept: "image/png, image/jpeg, image/gif, image/bmp",span: 24,dataType: "object",dragFile: true,props: {label: "originalName",value: "attachPath",},propsHttp: {url: "attachPath",name: "originalName",res: "data",},canvasOption: {//水印text: "avue",ratio: 0.1,},action: actionUpload,disabled: false,change: ({ value, column, item, dic }) => {// obj.$message.success("change事件查看控制台");// console.log("值改变", value, column, item, dic);},uploadAfter: (res, done, loading, column) => {obj.$message.success("上传后事件,数据请看控制台");console.log("res:", res, "column:", column);done();},uploadPreview: (file, column, done) => {let previewType = ["jpg", "jpeg", "gif", "bmp", "png"];let suffix = file.url.substring(file.url.lastIndexOf(".") + 1);if (previewType.includes(suffix)) {done()//默认执行预览// obj.previewImageUrl = file.url;// obj.previewImageFlag = true;} else {obj.$downloadFile(file.url, file.name);}},},],};
};

效果图

在这里插入图片描述


http://www.ppmy.cn/news/34830.html

相关文章

大数据技术之Hive SQL题库-初级

第一章环境准备1.1 建表语句hive>-- 创建学生表 DROP TABLE IF EXISTS student; create table if not exists student_info(stu_id string COMMENT 学生id,stu_name string COMMENT 学生姓名,birthday string COMMENT 出生日期,sex string COMMENT 性别 ) row format delim…

Half-UNet:用于医学图像分割的简化U-Net架构

Half-UNet简化了编码器和解码器&#xff0c;还使用了Ghost模块(GhostNet)。并重新设计的体系结构&#xff0c;把通道数进行统一。 论文动机 编码器的不同类型的架构图&#xff0c;编码器(A-C)的结构分别来源于U-Net的编码器、解码器和全的Unet结构。 下面是上图的一些结果指标…

logstash+elasticsearch+Kibana(ELK)日志收集

文章目录一.安装elasticsearch二. 安装kibana三.配置logstash四.springboot整合logstash五.spring整合Elastic Search不要一股脑执行以下语句,请观察修改要修改的地方 注意给logstash,elasticsearch,kibana释放端口,云服务器提供商和系统的端口 一.安装elasticsearch # 安装e…

数据结构中的堆

一、树的重要知识点 节点的度&#xff1a;一个节点含有的子树的个数称为该节点的度&#xff08;有几个孩子&#xff09;叶节点或终端节点:度为0的节点称为叶节点&#xff1b;如上图&#xff1a;B、C、H、I...等节点为叶节点&#xff08;0个孩子&#xff09;非终端节点或分支节点…

Linux lvm管理讲解及命令

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 前言 目录 一、lvm管理 1.Logical Volume Manager,逻…

基于springboot实现在线blog博客系统 源码+论文 展示

基于springboot实现在线blog博客系统 源码论文开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包…

day15-面向对象总结

Code Mind 根据面对问题不同人层显出来的思维模式不同&#xff0c;可以将编程思维分为三种&#xff1a; 面向过程编程(穷人思想) - 遇到问题马上想到是解决这个问题的具体逻辑和步骤 函数式编程(小资思想) - 遇到问题马上想到有没有一个已经存在的函数可以解决这个问题&#…

面试问了解Linux内存管理吗?10张图给你安排的明明白白

linux内存管理&#xff0c;内存管理好像离我们很远&#xff0c;但这个知识点虽然冷门&#xff08;估计很多人学完根本就没机会用上&#xff09;但绝对是基础中的基础&#xff0c;这就像武侠中的内功修炼&#xff0c;学完之后看不到立竿见影的效果&#xff0c;但对你日后的开发工…