中扬CRM客户关系管理系统
#
Junjie
2023-11-07 a421690c6c93f0f96d1db92026dfc18312c2b5c7
src/main/webapp/static/js/plan/plan.js
@@ -228,82 +228,87 @@
        }
    });
    //多文件列表
    var uploadListIns = upload.render({
        elem: '#data-btn-file2'
        ,elemList: $('#data-btn-file3') //列表元素对象
        ,url: '/plan/insert/file/auth'
        ,accept: 'file'
        ,multiple: true
        ,number: 10
        ,auto: false
        ,bindAction: '#testListAction'
        ,choose: function(obj){
            // 赋值
            this.data.planId=$('.layui-layer-title').text()
            var that = this;
            var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
            //读取本地文件
            obj.preview(function(index, file, result){
                var tr = $(['<tr id="upload-'+ index +'">'
                    ,'<td>'+ file.name +'</td>'
                    ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
                    ,'<td><div class="layui-progress" id="progress-id-'+ index +'" lay-filter="progress-demo-'+ index +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
                    ,'<td>'
                    ,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
                    ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
                    ,'<button id="file-download" class="layui-btn layui-btn-xs demo-reload layui-hide">下载</button>'
                    ,'</td>'
                    ,'</tr>'].join(''));
    $("#data-btn-file2").on("click", (e) => {
        $("#data-btn-upload").click()
    });
                //单个重传
                tr.find('.demo-reload').on('click', function(){
                    obj.upload(index, file);
                });
    var _uploadFile = null
    //响应上传
    $("#data-btn-upload").on("change",(evt) => {
        var files = evt.target.files;
        if(files==null || files.length==0){
            alert("No files wait for import");
            return;
        }
                //删除
                tr.find('.demo-delete').on('click', function(){
                    delete files[index]; //删除对应的文件
                    tr.remove();
                    uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
                });
        var file = files[0]
                that.elemList.append(tr);
                element.render('progress'); //渲染新加的进度条组件
        var tr = $(['<tr id="upload-">'
            ,'<td id="upload-filename-id-'+ file.lastModified + '">' + file.name +'</td>'
            ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
            ,'<td id="upload-file-id-' + file.lastModified + '">上传中</td>'
            ,'<td>'
            ,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
            ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
            ,'<button id="file-download" class="layui-btn layui-btn-xs demo-reload layui-hide">下载</button>'
            ,'</td>'
            ,'</tr>'].join(''));
        //删除
        tr.find('.demo-delete').on('click', function(){
            tr.remove();
            $("#data-btn-upload").val("")
            _uploadFile = null
        });
        $('#data-btn-file3').append(tr)
        _uploadFile = file
    })
    //开始上传
    $("#testListAction").on("click", async (e) => {
        if (_uploadFile == null) {
            return false;
        }
        var file = _uploadFile
        var filename = dateToStr2(new Date()) + "_" + file.name
        $("#upload-filename-id-" + file.lastModified).html(filename)
        putObject(file, filename).then((result) => {
            layer.msg('上传成功', {icon: 1});
            $("#upload-file-id-" + file.lastModified).html("上传成功")
            $.ajax({
                url: baseUrl+"/plan/insert/file/auth",
                headers: {'token': localStorage.getItem('token')},
                data: {
                    'planId': $('.layui-layer-title').text(),
                    'filename': filename,
                    'filesize': file.size
                },
                method: 'POST',
                success: function (res) {
                    if (res.code === 200){
                        console.log(res)
                    } else if (res.code === 403){
                        top.location.href = baseUrl+"/";
                    } else {
                        layer.msg(res.msg)
                    }
                }
            });
        }
        ,done: function(res, index, upload){ //成功的回调
            if (res.code == 200) {
                element.progress('progress-demo-'+ index, '100%'); //执行进度条。n 即为返回的进度百分比
                layer.msg('上传成功', {icon: 1});
                $("#progress-id-" + index).html("已完成")
            }else {
                element.progress('progress-demo-'+ index, '100%'); //执行进度条。n 即为返回的进度百分比
                layer.msg('上传失败', {icon: 2});
                $("#progress-id-" + index).html("上传失败")
            }
            var that = this;
            //if(res.code == 0){ //上传成功
            var tr = that.elemList.find('tr#upload-'+ index)
                ,tds = tr.children();
            tds.eq(3).html(''); //清空操作
            delete this.files[index]; //删除文件队列已经上传成功的文件
            // return;
            //}
            // this.error(index, upload);
        }
        ,allDone: function(obj){ //多文件上传完毕后的状态回调
            console.log(obj)
        }
        ,error: function(index, upload){ //错误回调
            var that = this;
            var tr = that.elemList.find('tr#upload-'+ index)
                ,tds = tr.children();
            tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
        }
        ,progress: function(n, elem, e, index){
            element.progress('progress-demo-'+ index, '90%'); //执行进度条。n 即为返回的进度百分比
        }
        }).catch((e) => {
            console.log(e)
            layer.msg('上传失败', {icon: 2});
            $("#upload-file-id-" + file.lastModified).html("上传失败")
        })
        //清空file
        $("#data-btn-upload").val("")
        _uploadFile = null
    });
    // 添加
@@ -642,44 +647,9 @@
    // 点击下载按钮时触发文件下载
    $('#data-btn-file3').on('click', 'a', function() {
        var downloadUrl = $(this).attr('href');
        // console.log(downloadUrl)
        // console.log(baseUrl)
        // window.open("/\//"+downloadUrl);
        // return false;
        // var downloadUrl = $(this).attr('href');
        // console.log(downloadUrl)
        // // 发起 AJAX 请求,获取文件
        $.ajax({
            url: '/plan/download/file/auth',
            type: 'POST',
            data: { downloadUrl: downloadUrl },  // 传递下载链接作为参数
            success: function(response) {
                console.log(response)
                // layer.msg(response.msg+',已下载至默认路径!详细下载路径:'+response.data, {icon: 1});
                layer.msg(response.msg, {icon: 1});
                location.href = response.data
        //         // window.open(baseUrl+response.msg)
        //         // 创建一个Blob对象
        //         var blob = new Blob([response]);
        //         // 使用FileSaver保存文件
        //         var fileName = downloadUrl.substring(downloadUrl.lastIndexOf('\\') + 1);
        //         console.log(fileName)
        //         saveAs(blob, fileName);
        //         return false;
            },
            error: function() {
                layer.msg('请求文件下载失败');
            }
        });
        // var downloadUrl = $(this).attr('href');
        // console.log(downloadUrl)
        // if (downloadUrl == "" || downloadUrl == null) {
        //     layer.msg('请先上传app文件',{time:1000},() => {
        //         parent.location.reload()
        //     })
        // }else{
        //     window.open(downloadUrl);
        // }
        let url = getObjectUrl(downloadUrl)
        layer.msg("准备下载中", {icon: 1});
        location.href = url
        return false;  // 阻止默认的链接跳转行为
    });