1
yanjinhui
2025-06-12 10c497ad3b1802e1c8feed8df0a290a407ec72bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
var exten = "";//下载文件后缀名
var timerLoadExportBtn = null;
$(document).delegate("#select", "change", function () {
    debugger
    setTimeout("LoadExportApiWordBtn()", 300);//加载导出按钮
    console.log("dom export ok");
});
 
$(document).ready(function () {
    InitLoad();//初始化导出
    //loading设置
    $.busyLoadSetup({
        animation: "slide",
        background: "rgba(255, 152, 0, 0.86)"
    });
});
 
//初始化
function InitLoad() {
    setTimeout("LoadExportApiWordBtn()", 300);//加载导出按钮
}
 
//加载自定义导出按钮
function LoadExportApiWordBtn() {
    $(".information-container").height(240);//文档介绍区域高度
    $(".topbar").height(35);
    var btnExport = "<div class='selectBox' style='position: absolute;margin: 0;padding: 0;margin-left: 1432px;top: 2.5px;'>" +
        "<span><a href='javascript:void(0);'>导出离线文档</a></span>" +
        "<div class='drop'>" +
        "<ul style='margin: 0;padding: 0;'>" +
        //"<li>" +
        //"<a href='javascript:void(0);' onclick='ExportApiWord(1)'>导出 Word</a>" +
        //"</li>" +
        //"<li>" +
        //"<a href='javascript:void(0);' onclick='ExportApiWord(2)'>导出 PDF</a>" +
        //"</li>" +
        "<li>" +
        "<a href='javascript:void(0);' onclick='ExportApiWord(3)'>导出 Html</a>" +
        "</li >" +
        //"<li>" +
        //"<a href='javascript:void(0);' onclick='ExportApiWord(4)'>导出 Xml</a>" +
        //"</li >" +
        //"<li>" +
        //"<a href='javascript:void(0);' onclick='ExportApiWord(5)'>导出 Svg</a>" +
        //"</li >" +
        "</ul >" +
        "</div >" +
        "</div >";
    //information-container这个元素是swagger后期动态渲染出来的,所有这里要加个循环判断。
    //第一次进来如果有这个class直接加载按钮退出
    if ($("*").hasClass("information-container")) {
        $(".information-container").append(btnExport);
        return;
    }
    //没有元素等待元素出现在加载按钮
    timerLoadExportBtn = setInterval(function () {
        if ($("*").hasClass("information-container")) {
            $(".information-container").append(btnExport);
            console.log("load ok");
            window.clearInterval(timerLoadExportBtn);
            return;
        }
        console.log("loading");
    }, 788);
}
 
 
/**
 * 延迟函数
 * @param {any} delay
 */
function sleep(delay) {
    var start = (new Date()).getTime();
    while ((new Date()).getTime() - start < delay) {
        continue;
    }
}
 
/*
 * 导出
 */
function ExportApiWord(type) {
    switch (type) {
        case 1:
            exten = ".docx";
            break;
        case 2:
            exten = ".pdf";
            break;
        case 3:
            exten = ".html";
            break;
        case 4:
            exten = ".xml";
            break;
        case 5:
            exten = ".svg";
            break;
    }
    var version = $("#select option:selected").val();
    version = version.split('/')[2];
    var url = '/api/Swagger/ExportWord?type=' + exten + "&version=" + version;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);    // 也可以使用POST方式,根据接口
    xhr.responseType = "blob";  // 返回类型blob
    // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
    xhr.onload = function () {
        // 请求完成
        if (this.status === 200) {
            // 返回200
            var blob = this.response;
            var reader = new FileReader();
            reader.readAsDataURL(blob); // 转换为base64,可以直接放入a表情href
            reader.onload = function(e) {
                // 转换完成,创建一个a标签用于下载
                var a = document.createElement('a');
                a.download = 'WIDESEAWCS API文档 ' + version + exten;
                a.href = e.target.result;
                $("body").append(a); // 修复firefox中无法触发click
                a.click();
                $(a).remove();
            }
        } else {
            alert(this.status+this.statusText);
        }
        //关闭load
        $.busyLoadFull('hide',
            {
                animation: "fade"
            });
    };
    // 发送ajax请求
    xhr.send();
    //打开loader遮罩
    $.busyLoadFull('show', {
        text: "LOADING ...",
        animation: "fade"
    });
}