Files
zszq-trs/YLErpWeb/Views/Shared/_MainLayout.cshtml
T
2026-08-19 13:42:47 +08:00

366 lines
21 KiB
Plaintext

@inject Microsoft.Extensions.Configuration.IConfiguration Configuration
@{
Layout = null;
}
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta charset="utf-8" />
<meta content="always" name="referrer" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@(ViewBag.Title ?? ViewData["Title"] ?? GlobalConfig.ProjectTitle)</title>
<link rel="stylesheet" href="~/statics/bundles/bundle.min.css?v=@(HtmlUtil.JsVersion)">
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="bookmark" href="/favicon.ico" type="image/x-icon" />
@RenderSection("CSS", false)
<script src="~/statics/bundles/jquery.js?v=@(HtmlUtil.JsVersion)"></script>
<script type="module">
(async function () {
const bonreeConfig = {
appId: "@Configuration["Tracking:bonree:appId"]",
uploadAddrHttp: "@Configuration["Tracking:bonree:uploadAddrHttp"]",
uploadAddrHttps: "@Configuration["Tracking:bonree:uploadAddrHttps"]"
};
const config = {
appId: bonreeConfig.appId,
uploadAddrHttp: bonreeConfig.uploadAddrHttp,
uploadAddrHttps: bonreeConfig.uploadAddrHttps,
useXHR: true,
cycleTime: 60,
maxSize: 60,
enableWebsocket: true
};
try {
if (!config.appId || !config.uploadAddrHttp || !config.uploadAddrHttps) {
console.warn('Bonree appId or uploadAddrHttp or uploadAddrHttps missing, skip init');
return;
}
const BonreeModule = await import('/BonreeSDK_JS_2.5.1_min.esm.js');
const BonreeAgent = BonreeModule.BonreeAgent || window.BonreeAgent;
if (!BonreeAgent || !BonreeAgent.BonreeStart) {
console.warn('BonreeAgent or BonreeAgent.BonreeStart missing, skip init');
return;
}
BonreeAgent.BonreeStart(config);
window.bonreeApplyUser = function (userId, userName) {
if (!userId || !window.bonreeJsBridge) return;
window.bonreeJsBridge.setUserID(userId);
if (userName) {
window.bonreeJsBridge.setUserExtraInfo({ name: userName });
}
};
if ('@CurUser.OaAccount') {
window.bonreeApplyUser('@CurUser.OaAccount', '@CurUser.UserName');
}
} catch (e) {
console && console.warn && console.warn('Bonree init failed', e);
}
})();
</script>
<script src="~/sensorsdata.min.js"></script>
<script>
// SDK 默认暴露 window.sensorsDataAnalytic201505,这里做一次别名兼容,确保调试台可直接使用 sensors
(function ensureSensorsAlias() {
var setAlias = function () {
if (window.sensors) return;
if (window.sensorsDataAnalytic201505) {
window.sensors = window.sensorsDataAnalytic201505;
}
};
setAlias();
})();
</script>
<script type="text/javascript">
(function () {
if (!window.sensors) { return; }
const sensorsConfig = {
serverUrl: "@Configuration["Tracking:sensors:serverUrl"]",
_platformType: "@Configuration["Tracking:sensors:_platformType"]",
_systemVersion: "@Configuration["Tracking:sensors:_systemVersion"]",
_techStack: "@Configuration["Tracking:sensors:_techStack"]"
};
if (!sensorsConfig.serverUrl) {
console.warn('Sensors serverUrl missing, skip init');
return;
}
sensors.init({
server_url: sensorsConfig.serverUrl,
is_track_single_page: true,
use_client_time: true,
send_type: 'beacon',
heatmap: {
clickmap: 'not_collect',
scroll_notice_map: 'not_collect'
},
batch_send: {
datasend_timeout: 6000,
send_interval: 6000,
one_send_max_length: 30
},
show_log: false
});
sensors.registerPage({
platform_type: sensorsConfig._platformType || 'onederiv',
systemVersion: sensorsConfig._systemVersion,
techStack: sensorsConfig._techStack
});
sensors.quick('autoTrack');
if ('@CurUser?.OaAccount' && sensors.login) {
sensors.login('@CurUser.OaAccount');
sensors.setProfile({ userId: '@CurUser.OaAccount', name: '@CurUser.UserName' });
}
// 神策诊断日志(精简版)
(function () {
try {
var diag = {
uid: '@CurUser?.OaAccount' || 'NULL',
platform: sensorsConfig._platformType || 'onederiv',
ua: (navigator.userAgent || '').substring(0, 50) || 'NULL',
url: location.href
};
$.ajax({
url: '/common/LogSensors',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(diag),
async: true
});
} catch (e) { }
})();
window.saTrack = function (eventName, props) {
try {
if (!window.sensors || !sensors.track) { return; }
sensors.track(eventName, props || {});
} catch (e) {
console && console.warn && console.warn('sa track error', e);
}
}
})();
</script>
<script type="text/javascript">
// 运行时诊断信息(排查用):URL 加 ?otcdebug=1(当前会话)或控制台 localStorage.setItem('otcdebug','1')(持久)开启详细日志
// 挂在已存在的 window.ylotc 命名空间上,供后续 bundle.js / fastVue / 业务脚本读取;debug 默认 false,生产零输出
window.ylotc = window.ylotc || {};
window.ylotc.__diag = {
debug: /[?&]otcdebug=1/.test(location.search) || (function () { try { return localStorage.getItem('otcdebug') === '1'; } catch (e) { return false; } })(),
jsVersion: '@HtmlUtil.JsVersion',
git: '@HtmlUtil.GitCommit',
built: '@(HtmlUtil.BinFileVersion.ToString("yyyy-MM-dd HH:mm:ss"))'
};
if (window.ylotc.__diag.debug && window.console) {
console.log('%c[OTC diag] ' + JSON.stringify(window.ylotc.__diag), 'color:#0a0;font-weight:bold');
}
var rootpath = '@Url.Content("~/")';
var main = main || { version: "1.1" };
main.rights = main.rights || {};
main.config = main.config || {};
main.config.CanSelectCreditVariety = "@YLErp.PS.Config.ClientElement.CanSelectCreditVariety" == "True";
function showEventCalendar() {
main.open("事件日历", "/risk/EventCalendar", { area: ['1280px', '500px'] });
}
$(function () {
let self = this;
var timer;
var switchFlag = false;
if ("@(PS.Config.ErpElement.IsCalcRealtimeWarning)" != "False") {
setInterval(function () {
$.ajax({
type: "Post",
url: "/risk/QuotaMonitorMsgStates",
data: {},
success: function (data) {
$("#total").text(data);
},
error: function (msg) {
}
});
}, 1000);
}
});
</script>
</head>
<body class="layout-main">
<div class="page-container">
<!-- Page Sidebar -->
<div class="page-sidebar">
<div class="page-sidebar-inner">
<div class="page-sidebar-menu">
<ul class="accordion-menu">
@(new MenuRender(CurUser).ShowMenu(Html, AppHelper.Menus))
</ul>
</div>
<div class="page-sidebar-toggle">
<a class="toggle-collapse" href="javascript:;" id="bntSidebarToggleCollapse">
</a>
</div>
</div>
</div>
<!-- Page Main -->
<div class="page-main">
<!-- Page Header -->
<div class="page-header row">
<div class="col gtja-title">
@switch (YLErp.PS.Config.Company)
{
case YLErp.Configuration.CompanyEnum.国泰君安:
<img class="gtja-img" src="/Images/gtja/main_title.png" />
break;
case YLErp.Configuration.CompanyEnum.渤海:
<img class="gtja-img" src="/Images/bh/main_title.png" />
break;
default:
break;
}
<a href="/" class="gtja-title">
<span>@GlobalConfig.ProjectTitle</span>
<span id="mainsystemvaluedate">@valuedateBLL.ValueDate.ToString("yyyy-MM-dd")</span>
</a>
<a href="javascript:" title="事件日历" style="padding-left:30px"><i class="fa fa-calendar" aria-hidden="true" onclick="showEventCalendar()"></i></a>
</div>
<div class="col-auto nav-right">
<ul class="nav">
<li class="nav-item">
<a class="nav-link sidebar-toggle-visible" href="javascript:void(0)" id="btnSidebarToggleVisible"><i class="fa fa-bars"></i></a>
</li>
@if (PS.Config.ErpElement.IsCalcRealtimeWarning)
{
<li class="nav-item dropdown">
<a data-toggle="dropdown" id="Belldropdown" href="#" class="nav-link dropdown-toggle" data-offset="-500">
<i class="fa fa-bell" id="SmallBell" style="font-size:x-large"></i><span class="badge badge-light" id="total"></span>
</a>
<div class="dropdown-menu" tabindex="-1" style="width: 595px; height: 570px; background-color: #F2F2F2 " onclick="event.stopPropagation();">
@await Html.PartialAsync("/Views/riskmonitor/_GuoXinRisk.cshtml")
</div>
</li>
}
<li class="nav-item dropdown">
<a data-toggle="dropdown" href="#" class="nav-link dropdown-toggle">
<img style="width:20px;height:20px;margin-top:-1.5px" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAbZJREFUWEftV7tKA0EUPXdSifmErBosfYCZBYk2EStBLWy1sLCxUBA/QPwAGx9gIWhjI9ioaKVuIaiwkzRaWEXd/IEISpK5smsSEtHsKsEI7rR77j1nzrzOEpo8qMn8+FsCHClXAcz5uGKB+ZiFOGmz7RsX60jZA+YJEI0A6K9XT0SHMdseL2MqDuRM84CZx4IuCQNZMM+SEBFi3mCgI2gtgDVDqXkXXxHgSMleA6Ihn0adYF4A0AXg2W3AQCsAC0T7ADxXvhzM5+43QymP+1MBhm1bfrNxpHQbpUq4W0Opbt8a00yhUQIeTHNQMF+4pEWtBzoymctfFVDafN6yle0MBYQOhA6EDvw/B3JSbgO4jim16Td77+Zs5FsQhPAjJhQQOvC3HchJmS0FS984BuYtI53erd7lTiIxCaKZAKcjRcB9TKl4TSZ8TCSmBdF6KWD69tHMyyTEHWn9qoFeQbTkW/QeQp8083xbOr1TI8C7KJLJFuTzdXM9M48SsPgZGQMrRHRUT0ghGr2KW9ZLGfOjP6OHvr7hiBBTbirWQIGIznSxuNeeyZwGcaEa8yMB3yWphw8FvAHjbXYwUu7DRQAAAABJRU5ErkJggg==" />
<span style="font-size:.8rem;color:#999;">帮助</span>
</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="/App_Docs/帮助文档/@(PS.Config.ErpElement.SecuritiesEnvironment?"场外期权交易管理系统_用户指南(券商版)202303.pdf":"场外期权交易管理系统_用户指南(期货版)202303.pdf")" target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" t="1674023252329" class="icon" viewBox="0 0 1024 1024" version="1.1" p-id="1639" width="20" height="20"><path d="M302.4 260.8h412c16.8 0 31.2-7.2 41.6-16.8 10.4-10.4 13.6-27.2 10.4-41.6L752 151.2a74.96 74.96 0 0 0-61.6-48h-55.2c-3.2 0-3.2 0-3.2-3.2L618.4 48a74.96 74.96 0 0 0-61.6-48H467.2c-27.2 0-55.2 16.8-61.6 44.8L392 96l-3.2 3.2h-55.2c-27.2 0-55.2 20.8-61.6 48l-13.6 51.2c-3.2 13.6 0 31.2 10.4 41.6 2.4 14.4 16 20.8 33.6 20.8z m24-99.2l3.2-3.2h55.2c27.2 0 55.2-20.8 61.6-44.8l13.6-51.2 4-4h89.6c3.2 0 3.2 0 3.2 3.2l13.6 51.2c7.2 27.2 34.4 48 61.6 48h55.2c3.2 0 3.2 0 3.2 3.2l10.4 41.6-388-3.2 13.6-40.8zM722.4 393.6L605.6 704l-310.4 116.8 116.8-310.4c-0.8-0.8 310.4-116.8 310.4-116.8zM552 662.4L453.6 564 388 728 552 662.4z" p-id="1640" fill="#e33333" /><path d="M913.6 137.6H798.4v66.4h104v753.6H120V204h104v-66.4H108.8c-31.2 0-55.2 24-55.2 51.2v783.2c0 31.2 27.2 55.2 55.2 51.2h804.8c27.2 3.2 55.2-20.8 55.2-51.2V188.8c0-27.2-24-51.2-55.2-51.2z" p-id="1641" fill="#e33333" /></svg>
<span style="font-size:.8rem;color:#999;">系统操作手册</span>
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="/Statics/manual/index.html" target="_blank">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" t="1674023922321" class="icon" viewBox="0 0 1024 1024" version="1.1" p-id="2297" width="20" height="20"><path d="M0 0h1024v1024H0z" fill="#e33333" fill-opacity="0" p-id="2298" /><path d="M880 112c17.673 0 32 14.327 32 32v736c0 17.673-14.327 32-32 32H144c-17.673 0-32-14.327-32-32V144c0-17.673 14.327-32 32-32h736z m-32 64H176v672h672V176z m-272.648 69.76c25.519 0 46.82 11.551 61.484 33.466a117.725 117.725 0 0 1 18.432 53.947c0.46 5.774 1.425 17.189 2.899 34.243l0.067 0.78h-65.72c-1.306-12.606-2.234-22.546-2.785-29.82-0.655-6.678-4.67-25.889-14.418-25.889-4.015 0-11.265 6.104-19.335 23.267-7.286 15.377-12.554 33.603-15.767 44.764l-0.167 0.58-1.843 6.268c-0.77 2.717-2.705 10.01-7.512 29.03l-0.092 0.364h84.125c0 35.346-28.654 64-64 64h-35.754l-0.73 2.99c-17.051 70.192-34.102 141.277-50.82 211.488l-3.577 15.032-0.082 0.368-0.082 0.205c-7.219 24.778-31.86 66.577-78.656 67.41l-1.425 0.014h-0.041c-54.439 0-83.153-49.77-91.55-79.221-1.876-6.584-4.085-20.255-6.627-41.014l-0.095-0.781h65.67c1.21 9.927 2.602 17.633 4.174 23.116 0.082 0.287 10.24 31.213 28.469 31.213 7.93 0 14.42-12.306 16.868-19.161l0.09-0.255 2.58-10.732c5.468-22.957 19.323-81.137 33.722-141.037l0.9-3.746 0.902-3.748 1.142-4.746 1.142-4.743c2.965-12.313 5.922-24.566 8.802-36.467l0.784-3.236 0.72-2.949H363.72c0-35.346 28.654-64 64-64h35.164c6.416-25.866 10.558-42.15 12.384-48.379l0.054-0.185 1.72-5.858c5.285-18.31 13.272-46.041 27.61-70.045 18.473-30.885 42.23-46.533 70.7-46.533zM754.17 516.456l0.872 0.6L699.064 597l55.978 79.945-0.872 0.6c-28.59 19.335-67.406 12.488-87.655-15.464l-0.608-0.853-5.907-8.438-5.907 8.438c-20.071 28.664-59.385 35.848-88.263 16.317l-0.872-0.6L620.935 597l-55.977-79.944 0.872-0.6c28.59-19.335 67.406-12.488 87.655 15.464l0.608 0.853L660 541.21l5.907-8.437c20.071-28.664 59.385-35.848 88.263-16.317z" fill="#e33333" p-id="2299" /></svg>
<span style="font-size:.8rem;color:#999;">定价操作手册</span>
</a>
</div>
</li>
<li class="nav-item dropdown">
<a data-toggle="dropdown" href="#" class="nav-link dropdown-toggle">
<img style="width:24px;height:24px;margin:-3px 5px 0 0" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA09JREFUWEfFl0nIjlEUx39fSSmxUKYkYwqZi0hszFPGhSHpM8UCK2KBBbHCwhhFkUKmDGGDIrOIhSHznBTKwob+b+fqvte9z/Bt3lNf3/u+zz3n/M+55/zPeeqosdTV2D8NAdAXmAa0AlpbAJ+Az8Ax4H6ZoMoAWGiOR+Q4uGRA9hQBUgSAHOuvvxm8C5wB3gLvgKZAG6AbMB7o4J0TiEwgeQDOAWPMoAztA27lRCYQAjzBzp0HxqZ0sgD8MaX3wCRAkZeR6cARTyHqKwVgK7DMlFVoKrCGSHfgsSluA5aHRmIAlL7ddrAdoAyEontXJwwBfgOXgaMJhD6IRWFNxADcsYKbDJyMGB1sztoGz54Cs4HbEZ11wFq7xgH+8xCAi14ZWBwx1AL4ar8rYhe1amQW8BNoFtFrDFwFBgJVWQgBXAN6AT2ANxFDIpqpwEVgVPBcoBXAekARhyKQyuh1u7rKcx+AUisAVQcCK6+B9mZA53xx+jeBQYl6EHeorlQ7FX0fwAZgNaAOWJEw8AtoAjQHfgRnlPrvwDdAVxWTnXa1G4E1IYC9QD2wFNiRMPDArmhGpOpVtMeBw8DMhP4SYLsR2vwQgOh1nJHO6YSBLV4vdwWe2zmlVa3YGZgH7E/oTwROAWeNtquuwAGIRefb07TrYz88sf+aAxI5FoCUOHaMAnBXkKpiDRy10AIg5ADnUHSdNYAcH2im/HcFrgjV28qCL2Iz8braU/LKUn7Fvg8DhnuTUBGqnkIKlw1lIVqEWjTuGXf39Lyr7TQVnfOsLvFr5CEwGvjo2Xpkdvq5xSUkIhGMFo5/fQrsstTLjl94qXvuAjyzh/51jgQuAFpY9LkiKSo+AUyxrlBxSkQuIpkiIsq9AXwAeht9uxbOpGIZd8NIB4fagEkVZhYYDR8VnWpB9TGnyDCSQTeQdIcqvkYG4lCR0L0zGk4Hre81BySFxrEO+quYvne0yi+DQbvhS08hupoVWclkYxWwuYx3YCWwydMptZI5PX81e2Eg8tZtXaGcdzIj0VUs1QWxIMO1/Augftau57pCVS+eEH+0NCN5rBhtw6wsC8hcQHM/SzTnD+S9D5TJQOhMADQ1Y69mouBwUclEm/diUrLuyh+vOYC/y12xIdUXYMwAAAAASUVORK5CYII=" />
<span id="mainlayoutuser">@CurUser.UserName</span>
</a>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item" href="javascript:;" id="changePasswordA"><i class="ace-icon fa fa-key"></i>修改密码</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" id="logoutBtn"><i class="ace-icon fa fa-power-off"></i>退出</a>
</div>
</li>
</ul>
</div>
</div>
<!-- Page Title -->
<div class="page-title">
<nav aria-label="content-header">
<ol class="breadcrumb">
<li class="breadcrumb-item">@ViewBag.Menu</li>
</ol>
</nav>
</div>
<div class="clearfix"></div>
<!-- Page Inner -->
<div class="page-inner">
<div class="page-content" id="main-wrapper">
@RenderBody()
</div>
</div>
</div>
</div>
<script src="~/statics/bundles/bundle.js?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/statics/bundles/vue.js?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Scripts/app/mainLayout.js?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/Scripts/utils.js?v=@(HtmlUtil.JsVersion)"></script>
<script>
// 全局处理AJAX 401未授权响应,弹窗提示后跳转登录页
var _401Redirecting = false;
$(document).ajaxError(function (event, jqXHR) {
if (jqXHR.status === 401 && !_401Redirecting) {
_401Redirecting = true;
var timer = setTimeout(function () { window.location.href = '/Account/Login'; }, 3000);
main.alert('登录已过期,请重新登录', function () {
clearTimeout(timer);
window.location.href = '/Account/Login';
});
}
});
</script>
<script src="/Front/otcformat?v=@(HtmlUtil.JsVersion)"></script>
<script src="~/statics/bundles/qiankun-v2.10.5/index.umd.min.js"></script>
<script>
$(function () {
var errorMsg = "@ViewBag.Error";
errorMsg && main.alert(errorMsg);
});
</script>
@await Html.PartialAsync("_PartialLayout")
@RenderSection("JS", false)
<script>
$(function () {
function setGridWidth() {
let $p = $('#listGrid').closest('.ui-jqgrid').parent() || $(".page-content");
let width = $p.width();
if ($p.is(".page-content")) {
width -= 28;
}
$("#listGrid").jqGrid('setGridWidth', width);
}
setGridWidth();
let apiBaseUrl = `http://${document.domain}:${window.location.port}/otc_ui/BidManagement/auto_redemption_struc`
$("#logoutBtn").click(function () {
if (window.frames.length > 0) {
window.frames[0].postMessage('logout', apiBaseUrl)
}
if (window.sensors && sensors.logout) {
sensors.logout();
}
window.location = "/Account/logout";
});
});
</script>
</body>
</html>