init
This commit is contained in:
+60
-1
@@ -4,6 +4,64 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Gemold - 模具制造管理系统</title>
|
||||
<script>
|
||||
(function () {
|
||||
var params = new URLSearchParams(location.search);
|
||||
var uiParam = params.get('ui');
|
||||
var themeParam = params.get('theme');
|
||||
|
||||
var storedUi = null;
|
||||
try { storedUi = localStorage.getItem('gemold_ui_version'); } catch (e) {}
|
||||
|
||||
var storedPercent = null;
|
||||
try { storedPercent = localStorage.getItem('gemold_ui_rollout_percent'); } catch (e) {}
|
||||
var percent = storedPercent ? Number(storedPercent) : 0;
|
||||
if (!Number.isFinite(percent) || percent < 0) percent = 0;
|
||||
if (percent > 100) percent = 100;
|
||||
|
||||
var uid = null;
|
||||
try { uid = localStorage.getItem('gemold_uid'); } catch (e) {}
|
||||
if (!uid) {
|
||||
uid = 'u_' + Math.random().toString(36).slice(2, 10) + Date.now().toString(36);
|
||||
try { localStorage.setItem('gemold_uid', uid); } catch (e) {}
|
||||
}
|
||||
|
||||
function hash32(str) {
|
||||
var h = 2166136261;
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
h ^= str.charCodeAt(i);
|
||||
h = Math.imul(h, 16777619);
|
||||
}
|
||||
return h >>> 0;
|
||||
}
|
||||
|
||||
function chooseUiVersion() {
|
||||
if (uiParam === 'v1' || uiParam === 'v2') return uiParam;
|
||||
if (storedUi === 'v1' || storedUi === 'v2') return storedUi;
|
||||
if (percent <= 0) return 'v1';
|
||||
var bucket = hash32(uid) % 100;
|
||||
return bucket < percent ? 'v2' : 'v1';
|
||||
}
|
||||
|
||||
function chooseTheme() {
|
||||
var storedTheme = null;
|
||||
try { storedTheme = localStorage.getItem('gemold_theme'); } catch (e) {}
|
||||
if (themeParam === 'light' || themeParam === 'dark') return themeParam;
|
||||
if (storedTheme === 'light' || storedTheme === 'dark') return storedTheme;
|
||||
return 'light';
|
||||
}
|
||||
|
||||
var ui = chooseUiVersion();
|
||||
var theme = chooseTheme();
|
||||
document.documentElement.dataset.ui = ui;
|
||||
document.documentElement.dataset.theme = theme;
|
||||
try {
|
||||
if (uiParam === 'v1' || uiParam === 'v2') localStorage.setItem('gemold_ui_version', uiParam);
|
||||
if (themeParam === 'light' || themeParam === 'dark') localStorage.setItem('gemold_theme', themeParam);
|
||||
} catch (e) {}
|
||||
})();
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/air-datepicker@3.5.3/air-datepicker.css">
|
||||
<link rel="stylesheet" href="/static/style.css?v=20260317-01">
|
||||
</head>
|
||||
<body>
|
||||
@@ -18,6 +76,7 @@
|
||||
|
||||
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
|
||||
<script src="https://unpkg.com/vue-router@4/dist/vue-router.global.prod.js"></script>
|
||||
<script src="/static/vue-app.js?v=20260317-02"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/air-datepicker@3.5.3/air-datepicker.js"></script>
|
||||
<script src="/static/vue-app.js?v=20260324-01"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user