You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
342 lines
9.9 KiB
342 lines
9.9 KiB
<!DOCTYPE html>
|
|
<html lang="zh-cmn-Hans">
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
<title>WinLink Frame UI</title>
|
|
<link rel="icon" href="<%= BASE_URL %>logo.png">
|
|
<!-- <script src="<%= BASE_URL %>gcs/cacheParamCus.js"></script>
|
|
<script src="<%= BASE_URL %>gcs/cacheParamComp.js"></script> -->
|
|
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
|
|
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
|
|
<style>
|
|
/* stylelint-disable */
|
|
html,
|
|
body,
|
|
#app {
|
|
height: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
position: relative;
|
|
}
|
|
|
|
/* 针对微前端环境的兼容样式 使用:root或html作为父级,避免被自动嵌套 */
|
|
:root micro-app[name="iemsWinlink"] {
|
|
height: 100%;
|
|
position: relative;
|
|
}
|
|
|
|
.chromeframe {
|
|
margin: 0.2em 0;
|
|
background: #ccc;
|
|
color: #000;
|
|
padding: 0.2em 0;
|
|
}
|
|
#loader-wrapper {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 999999;
|
|
}
|
|
#loader {
|
|
display: block;
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 50%;
|
|
width: 120px;
|
|
height: 120px;
|
|
margin: -75px 0 0 -75px;
|
|
border-radius: 50%;
|
|
border: 3px solid transparent;
|
|
/* COLOR 1 */
|
|
border-top-color: #FFF;
|
|
-webkit-animation: spin 2s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-ms-animation: spin 2s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-moz-animation: spin 2s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-o-animation: spin 2s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
animation: spin 2s linear infinite;
|
|
/* Chrome, Firefox 16+, IE 10+, Opera */
|
|
z-index: 1001;
|
|
}
|
|
#loader:before {
|
|
content: "";
|
|
position: absolute;
|
|
top: 5px;
|
|
left: 5px;
|
|
right: 5px;
|
|
bottom: 5px;
|
|
border-radius: 50%;
|
|
border: 3px solid transparent;
|
|
/* COLOR 2 */
|
|
border-top-color: #FFF;
|
|
-webkit-animation: spin 3s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-moz-animation: spin 3s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-o-animation: spin 3s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-ms-animation: spin 3s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
animation: spin 3s linear infinite;
|
|
/* Chrome, Firefox 16+, IE 10+, Opera */
|
|
}
|
|
#loader:after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 15px;
|
|
left: 15px;
|
|
right: 15px;
|
|
bottom: 15px;
|
|
border-radius: 50%;
|
|
border: 3px solid transparent;
|
|
border-top-color: #FFF;
|
|
/* COLOR 3 */
|
|
-moz-animation: spin 1.5s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-o-animation: spin 1.5s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-ms-animation: spin 1.5s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
-webkit-animation: spin 1.5s linear infinite;
|
|
/* Chrome, Opera 15+, Safari 5+ */
|
|
animation: spin 1.5s linear infinite;
|
|
/* Chrome, Firefox 16+, IE 10+, Opera */
|
|
}
|
|
@-webkit-keyframes spin {
|
|
0% {
|
|
-webkit-transform: rotate(0deg);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: rotate(0deg);
|
|
/* IE 9 */
|
|
transform: rotate(0deg);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
}
|
|
100% {
|
|
-webkit-transform: rotate(360deg);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: rotate(360deg);
|
|
/* IE 9 */
|
|
transform: rotate(360deg);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
}
|
|
}
|
|
@keyframes spin {
|
|
0% {
|
|
-webkit-transform: rotate(0deg);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: rotate(0deg);
|
|
/* IE 9 */
|
|
transform: rotate(0deg);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
}
|
|
100% {
|
|
-webkit-transform: rotate(360deg);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: rotate(360deg);
|
|
/* IE 9 */
|
|
transform: rotate(360deg);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
}
|
|
}
|
|
#loader-wrapper .loader-section {
|
|
position: absolute;
|
|
top: 0;
|
|
width: 51%;
|
|
height: 100%;
|
|
background: #002140;
|
|
/* Old browsers */
|
|
z-index: 1000;
|
|
-webkit-transform: translateX(0);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: translateX(0);
|
|
/* IE 9 */
|
|
transform: translateX(0);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
}
|
|
#loader-wrapper .loader-section.section-left {
|
|
left: 0;
|
|
}
|
|
#loader-wrapper .loader-section.section-right {
|
|
right: 0;
|
|
}
|
|
/* Loaded */
|
|
.loaded #loader-wrapper .loader-section.section-left {
|
|
-webkit-transform: translateX(-100%);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: translateX(-100%);
|
|
/* IE 9 */
|
|
transform: translateX(-100%);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
|
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
|
}
|
|
.loaded #loader-wrapper .loader-section.section-right {
|
|
-webkit-transform: translateX(100%);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: translateX(100%);
|
|
/* IE 9 */
|
|
transform: translateX(100%);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
|
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
|
|
}
|
|
.loaded #loader {
|
|
opacity: 0;
|
|
-webkit-transition: all 0.3s ease-out;
|
|
transition: all 0.3s ease-out;
|
|
}
|
|
.loaded #loader-wrapper {
|
|
visibility: hidden;
|
|
-webkit-transform: translateY(-100%);
|
|
/* Chrome, Opera 15+, Safari 3.1+ */
|
|
-ms-transform: translateY(-100%);
|
|
/* IE 9 */
|
|
transform: translateY(-100%);
|
|
/* Firefox 16+, IE 10+, Opera */
|
|
-webkit-transition: all 0.3s 1s ease-out;
|
|
transition: all 0.3s 1s ease-out;
|
|
}
|
|
/* JavaScript Turned Off */
|
|
.no-js #loader-wrapper {
|
|
display: none;
|
|
}
|
|
.no-js h1 {
|
|
color: #222222;
|
|
}
|
|
#loader-wrapper .load_title {
|
|
font-family: 'Open Sans';
|
|
color: #FFF;
|
|
font-size: 14px;
|
|
width: 100%;
|
|
text-align: center;
|
|
z-index: 9999999999999;
|
|
position: absolute;
|
|
top: 60%;
|
|
opacity: 1;
|
|
line-height: 30px;
|
|
}
|
|
#loader-wrapper .load_title span {
|
|
font-weight: normal;
|
|
font-style: italic;
|
|
font-size: 14px;
|
|
color: #FFF;
|
|
opacity: 0.5;
|
|
}
|
|
/* 滚动条优化 start */
|
|
::-webkit-scrollbar{
|
|
width:8px;
|
|
height:14px;
|
|
z-index: 9;
|
|
}
|
|
::-webkit-scrollbar-track{
|
|
background: #f6f6f6;
|
|
border-radius:2px;
|
|
}
|
|
::-webkit-scrollbar-thumb{
|
|
background: #cdcdcd;
|
|
border-radius:2px;
|
|
}
|
|
::-webkit-scrollbar-thumb:hover{
|
|
background: #747474;
|
|
}
|
|
::-webkit-scrollbar-corner {
|
|
background: #f6f6f6;
|
|
}
|
|
/* 滚动条优化 end */
|
|
/* stylelint-enable */
|
|
</style>
|
|
<!-- 全局配置 -->
|
|
<script>
|
|
window._CONFIG = {};
|
|
// 定义加载函数但不立即执行
|
|
window.loadRequiredScripts = function(BASE_URL) {
|
|
function loadScript(src) {
|
|
const script = document.createElement('script')
|
|
script.src = src
|
|
document.head.appendChild(script)
|
|
}
|
|
loadScript(BASE_URL + '/cacheParamCus.js')
|
|
loadScript(BASE_URL + '/cacheParamComp.js')
|
|
}
|
|
|
|
// 微前端-创建全局变量
|
|
window.loadRequiredScriptsMicroApp = function (BASE_URL) {
|
|
// 初始化全局变量容器
|
|
window.__CACHE_VARS__ = window.__CACHE_VARS__ || {};
|
|
|
|
// 加载单个脚本并提取变量
|
|
function loadScript(src) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open('GET', src, true);
|
|
// 允许跨域请求携带Cookie
|
|
xhr.withCredentials = true;
|
|
// 添加请求头参数
|
|
xhr.setRequestHeader('tenantcode', 'T20210428000005');
|
|
xhr.setRequestHeader('Gate-App-Code', 'APP202106220004');
|
|
xhr.onreadystatechange = function () {
|
|
if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304)) {
|
|
extractVariables(xhr.responseText);
|
|
}
|
|
};
|
|
xhr.send();
|
|
}
|
|
|
|
// 提取变量核心逻辑(无模板字符串)
|
|
function extractVariables(scriptContent) {
|
|
// 1. 提取所有变量名
|
|
var varNames = [];
|
|
var regex = /(var|let|const)\s+([a-zA-Z_$][\w$]*)\s*=/g;
|
|
var match;
|
|
while ((match = regex.exec(scriptContent))) {
|
|
if (varNames.indexOf(match[2]) === -1) {
|
|
varNames.push(match[2]);
|
|
}
|
|
}
|
|
|
|
// 2. 纯字符串拼接生成提取代码
|
|
var code = '(function(){' + scriptContent + ';var vars=window.__CACHE_VARS__;';
|
|
|
|
// 逐个添加变量提取逻辑
|
|
for (var i = 0; i < varNames.length; i++) {
|
|
var name = varNames[i];
|
|
code += 'if(typeof ' + name + '!=="undefined")vars["' + name + '"]=' + name + ';';
|
|
}
|
|
|
|
code += '})();';
|
|
|
|
// 3. 执行代码
|
|
var script = document.createElement('script');
|
|
script.textContent = code;
|
|
document.head.appendChild(script);
|
|
document.head.removeChild(script); // 执行后清理
|
|
}
|
|
|
|
// 加载目标脚本
|
|
loadScript(BASE_URL + '/cacheParamCus.js');
|
|
loadScript(BASE_URL + '/cacheParamComp.js');
|
|
};
|
|
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="app">
|
|
<div id="loader-wrapper">
|
|
<div id="loader"></div>
|
|
<div class="loader-section section-left"></div>
|
|
<div class="loader-section section-right"></div>
|
|
<div class="load_title">正在加载 WinLink Frame UI,请耐心等待 </div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|