记录layui数据表格使用文件上传按钮

news2024/9/22 23:36:41

一、前言

虽然用到这种的情况不多,但是还是记录下

二、相关代码

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
    <meta name="renderer" content="webkit"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta http-equiv="Expires" content="0"/>
    <meta http-equiv="Cache-Control" content="no-cache">
    <title>本地上传</title>
    <link rel="stylesheet" href="../libs/layui/css/layui.css?v=2.8.12">
    <link rel="stylesheet" href="../libs/bootstrap/bootstrap.min.css"/>
    <link rel="stylesheet" href="../libs/layui/css/layui.css?v=2.8.12">
    <link rel="stylesheet" href="../assets/css/custom.css?v=1.0.0"/>
</head>
<style>
    .lay_title {
        height: 40px;
        display: -webkit-box; /*  display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示  */
        -webkit-box-orient: vertical; /*  -webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式  */
        -webkit-line-clamp: 2; /*  -webkit-line-clamp用来限制在一个块元素显示的文本的行数 */
        overflow: hidden;
    }

    .lay_span {
        width: 180px;
        margin-right: 10px;
    }

    .lay_span img {
        margin-top: 5px;
        width: 145px;
        height: 100px;
    }
</style>
<body>
<div class="row">
    <div class="span12">
        <div class="box box-default">
            <!-- box-body -->
            <div class="box-body">
                <table class="layui-hide" id="lay-table" lay-filter="lay-table"></table>
            </div>
        </div>
    </div>
</div>
<div class="row" id="app">
    <div class="span12">
        <div class="box box-default">
            <div class="box-header with-border">
                <h3 class="box-title">
                    <div class="dec_1"></div>
                    扫描件
                </h3>
            </div>
            <div class="box-body" id="scrollBody">
                <div class="form-group" id="smj_list">
                    <div class="span1-5 lay_span" v-for="(value, key) in jsonArray" :id="value.smjmc">
                        <div class="thumbnail">
                            <div @click="showImg(value.smjmc)">
                                <img :src="value.smjpath" :alt="value.name">
                                <hr>
                                <div class="lay_title">{{value.name}}</div>
                            </div>
                            <div class="lay_btn">
                                <a v-on:click="delFile(value.smjmc)" title="文件删除" style="color: red;"><i
                                        class="fa fa-trash-o fa-lg"></i>删除</a>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<script src="../jquery/jquery-1.12.4.min.js"></script>
<script src="../libs/bootstrap/bootstrap.min.js"></script>
<script src="../libs/layui/layui.js?v=2.8.12"></script>
<script src="../ywgj/vue/vue.min.js" charset="utf-8"></script>
<script src="../common/utils/xy-ui.js?v=20230823"></script>
<script>
    var imgArr = [];
    var clList = [{
        "id": "1711031508929916",
        "isNewRecord": false,
        "name": "办结单材料",
        "param": {}
    }, {"id": "2006291937364749", "isNewRecord": false, "name": "有效身份证明", "param": {}}];
    var uploadURL = '/ucm/ucmAction!postFile.do';
    var uploadParams = {
        "loginid": "test_st_a",
        "busitype": "UCM_IMAGE",
        "sysid": "sys_ucm",
        "yab003": "44",
        "aab301": "440000000000"
    };
    layui.use(function () {
        var table = layui.table
            , upload = layui.upload;
        // 渲染
        table.render({
            elem: '#lay-table',
            defaultToolbar: '',
            data: clList,
            page: true,//开启分页
            cols: [[ // 表头
                {field: 'name', title: '材料名称'},
                {
                    fixed: 'right', title: '操作', templet: function (d) {
                        //数据太多,只取需要的数据,也可以直接把整个行数据传过去
                        var rows = {
                            id: d.id,
                            name: d.name
                        }
                        return '<div class="layui-btn-container">' +
                            '<a type="button" class="layui-btn layui-btn-sm lay-upload-img" lay-value="' + JSON.stringify(rows).replace(/"/g, '&quot;') + '"><i class="layui-icon layui-icon-upload"></i>上传图片</a>' +
                            '<a type="button" class="layui-btn layui-bg-blue layui-btn-sm" lay-value="' + JSON.stringify(rows).replace(/"/g, '&quot;') + '"><i class="layui-icon layui-icon-upload"></i>上传PDF</a>' +
                            '</div>';
                    }
                }
            ]]
        });
        var base64Str;
        var uploadParam;
        upload.render({
            elem: '.lay-upload-img'
            , url: uploadURL
            , field: 'files'
            , accept: 'images' //只允许上传图片
            , acceptMime: 'image/jpeg,image/png' // 只筛选 jpg,png 格式图片
            , exts: 'jpg|png|jpeg'//允许上传的文件后缀。一般结合 accept 属性来设定。
            , before: function (obj) { // obj 参数同 choose
                // 如果需要用到行数据,可以这样写
                // var tableElem = this.item;
                // uploadParam = JSON.parse(tableElem.attr('lay-value'));
                $.modal.loading('文件上传中,请稍后……');
            }
            //我参数是固定的
            , data: uploadParams
            //如果需要用到行数据,可以这样写
            // , data: {
            //     id:function (){
            //         return uploadParam.id;
            //     },
            //     name:function (){
            //         return uploadParam.name;
            //     }
            // }
            //这种写法我没试,也可以这样试试
            // , data: uploadParam
            , choose: function (obj) {
                //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
                obj.preview(function (index, file, result) {
                    base64Str = result;
                });
            }
            , done: function (res) {
                console.log(res);
                if (res.error) {
                    return $.modal.msgError("上传统一存储失败,请稍候重试");
                } else {
                    var dataJson = res.success.data;
                    // 文件上传ID
                    var fileId = dataJson[0].fileid;
                    // 获取当前行相关数据
                    var tableElem = this.item;
                    var rows = JSON.parse(tableElem.attr('lay-value'));
                    var json = {
                        name: rows.name,
                        smjmc: fileId,
                        smjpath: base64Str
                    }
                    rows.fileId = fileId;
                    imgArr.push(rows);
                    console.log(imgArr);
                    //上传成功后,显示数据
                    app.$data.jsonArray.push(json);
                    $.modal.closeAll();
                }
            }
        });
    });

    var app = new Vue({
        el: '#app'
        , data: {
            jsonArray: []
        }
        , created: function () {
            var _this = this;
        },
        methods: {
            showImg: function (fileId) {
            },
            downFile: function (fileId) {
            },
            delFile: function (id, fileId) {
                $('#' + fileId).remove();
            }
        }
    });
</script>
</body>
</html>

三、效果展示

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux:编译遇到 Please port gnulib freadahead.c to your platform ,怎么破

问题背景 编译m4时遇到以下错误&#xff0c;该怎么解决呢&#xff1f; 解决方法 进入m4的build目录&#xff1a;build/host-m4-1.4.17 输入命令&#xff1a; sed -i s/IO_ftrylockfile/IO_EOF_SEEN/ lib/*.c echo "#define _IO_IN_BACKUP 0x100" >> lib/std…

伦敦金之路,如何开启?

要开启伦敦金投资之路&#xff0c;当然第一步是需要投资者找到一个正规的途径进行开户。但是开户之后&#xff0c;我们如何下手进行伦敦金投资呢&#xff1f;恐怕很多投资者都暂时对其有所迷茫。下面&#xff0c;笔者就从自己的角度&#xff0c;对这些问题进行讨论。 资深人士引…

好用的GIF工具分享

【工具链接】 链接&#xff1a;https://pan.baidu.com/s/1gX3Tjf-r0vrOwhinQjYKhA?pwd5upe 提取码&#xff1a;5upe 下载好的图标是 我们点击&#xff0c;会出现4个选项 1、录像机 &#xff08;录制GIF&#xff09; 录制过程中可以点击暂停和停止 点击停止我们会跳转到下…

浙江绿农环境:将废弃矿山变耕地,为生态文明贡献力量

近年来&#xff0c;随着可持续发展理念在中国乃至全球的日益普及&#xff0c;浙江绿农生态环境有限公司以其独特的创新和实践&#xff0c;成为了绿色发展的典范&#xff0c;在奋进新时代、建设新天堂的背景下&#xff0c;绿农环境在杭州市固废治理行业迈出坚实的步伐&#xff0…

【LeetCode】剑指 Offer <二刷>(3)

目录 题目&#xff1a;剑指 Offer 06. 从尾到头打印链表 - 力扣&#xff08;LeetCode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 07. 重建二叉树 - 力扣&#xf…

如何为大面积实景三维建模“减负”?我们这样做

当前&#xff0c;各地加速布局实景三维中国建设&#xff0c;而面对任务量大、空域敏感、环境复杂等难题&#xff0c;传统工艺已无法满足需求。千寻位置推出的航测三维实景建模解决方案&#xff0c;融合终端、软件、应用和服务能力&#xff0c;为高精度、大面积地理信息数据应用…

Scrum工作模式及Scrum工具

Scrum工作模式是一种敏捷软件开发方法&#xff0c;其核心是团队合作和自我组织&#xff0c;旨在通过短周期的迭代开发&#xff0c;实现快速反馈和持续改进。 Scrum工作模式包括以下角色和活动&#xff1a; 1、产品负责人&#xff08;Product Owner&#xff09;&#xff1a;负…

非科班菜鸡算法学习记录 | 代码随想录算法训练营第52天||300.最长递增子序列 674.最长连续递增序列

300.最长递增子序列300. Longest Increasing Subsequence(英文力扣连接) 知识点&#xff1a;动规 状态&#xff1a;不会 思路&#xff1a; dp为取到i时的最长序列数字 dpi的值取决于前面比他小的数字&#xff08;dpj&#xff09;1&#xff1b;并实时更新最大值 class Soluti…

C语言----详解socket通信

一&#xff1a;什么是socket 刚接触socket的同学想必也知道socket的中文名&#xff0c;套接字&#xff0c;与其说是中文名倒不如说这是什么玩意&#xff0c;我们先不要管中文名的实际意义&#xff0c;我们先来了解一下什么是socket。 我们上网产生的数据都是经过协议栈一层一层…

linux并发服务器 —— 多进程并发 - 进程间的通信及实践(五)

进程间的通信 进程是一个独立的资源分配单元&#xff0c;不能在一个进程中直接访问另一个进程的资源&#xff1b; 进程间通信&#xff08;IPC&#xff09;的目的&#xff1a; 1. 数据传输 - A进程发送数据给B进程 2. 通知事件 - eg. 进程终止通知父进程 3. 资源共享 - 多个…

Middleware ❀ Kafka功能与使用详解

文章目录 1. 概述1.1. 消息队列1.2. 应用场景1.3. 工作模式1.4. 基础结构1.4.1. 结构组件1.4.2. 数据同步1.4.3. ACK机制1.4.4. 分区机制1.4.4.1. 使用Partition Key写入1.4.4.2. 轮询写入 - 默认规则1.4.4.3. 指定Partition写入 1.4.5. Offset偏移量1.4.5.1. 消息顺序性1.4.5.…

六级翻译备考

classical 经典的 Chinese literature 中国文学 朝代dynasty 统治 rule 社会稳定 steady society 治理有序 orderly governance 伟大的greatest 时代 times或者periods 被人们描绘成人类历史上伴随着治理有序&#xff0c;社会稳定的最伟大的时代之一 more and more越来越多 …

leetcode235. 二叉搜索树的最近公共祖先(java)

二叉搜索树的最近公共祖先 题目描述递归 剪枝代码演示&#xff1a; 上期经典 题目描述 难度 - 中等 LC235 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q…

结合OB Cloud区别于MySQL的4大特性,规划降本方案

任何一家企业想要获得持续性的发展与盈利&#xff0c;“降本增效”都是难以绕开的命题。但是“一刀切”的降本影响往往不太可控&#xff0c;成本的快速收缩往往会给业务带来低效运营和增长缓慢的风险。所以我们所说的降本&#xff0c;是指在成本降低的同时&#xff0c;效率不降…

【附安装包】Tecplot 360 EX2021安装教程

软件下载 软件&#xff1a;Tecplot 360版本&#xff1a;2021语言&#xff1a;英文大小&#xff1a;367.36M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baid…

冠达管理:成交量突然放大意味着什么?

在股票商场中&#xff0c;成交量是股市中非常重要的目标之一。股票成交量是指在一定时间内股票买卖所成交的总股数。当成交量忽然扩大时&#xff0c;这意味着股票商场的很多买卖正在产生&#xff0c;这一般会引起出资者的注重。在本文中&#xff0c;我们将从多个视点来剖析成交…

理解FPGA中的亚稳态

一、前言 大家应该经常能听说到亚稳态这个词&#xff0c;亚稳态主要是指触发器的输出在一段时间内不能达到一个确定的状态&#xff0c;过了这段时间触发器的输出随机选择输出0/1&#xff0c;这是我们在设计时需要避免的。本文主要讲述了FPGA中的亚稳态问题&#xff0c;可以帮助…

JVM虚拟机对象探秘

对象的创建 Java是一门面向对象的编程语言&#xff0c;创建对象通常只是通过new关键字。 对象创建过程 当Java虚拟机遇到一条字节码new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用&#xff0c;并且检查这个符号引用&#xff08;类…

uni-app 客服按钮可上下拖动动

项目需求&#xff1a; 因为悬浮客服有时候会遮挡住界面内容&#xff0c;故需要对悬浮的气泡弹窗做可拖动操作 movable-area&#xff1a;可拖动区域 movable-view&#xff1a;可移动的视图容器&#xff0c;在页面中可以拖拽滑动或双指缩放。 属性说明 属性名类型默认值说…

提高中小企业组网效率的关键要素与技术选项

如今的商业环境中&#xff0c;中小企业扮演着重要角色&#xff0c;它们通常是由创业者或小型团队组成&#xff0c;拥有有限的人力资源和财务能力。尽管规模较小&#xff0c;中小企业一样面临着与大型企业相似的竞争压力和业务组网需求。 在数字化时代&#xff0c;中小企业对于高…