commit
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<!doctype html>
|
||||
<html lang="${lang,escape}">
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1" />
|
||||
<meta name="description" content="${AppName!}" />
|
||||
@@ -102,26 +102,26 @@
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
// 在加载 lodash 后、使用前插入
|
||||
const originalDefaultsDeep = window._.defaultsDeep;
|
||||
const originalDefaultsDeep = window._.defaultsDeep
|
||||
window._.defaultsDeep = function(...args) {
|
||||
// 先对所有参数做原型污染清洗
|
||||
const cleanArgs = args.map(arg => sanitizeForPrototypePollution(arg));
|
||||
return originalDefaultsDeep.apply(window._, cleanArgs);
|
||||
};
|
||||
const cleanArgs = args.map(arg => sanitizeForPrototypePollution(arg))
|
||||
return originalDefaultsDeep.apply(window._, cleanArgs)
|
||||
}
|
||||
|
||||
function sanitizeForPrototypePollution(obj) {
|
||||
if (obj === null || typeof obj !== 'object') return obj;
|
||||
if (Array.isArray(obj)) return obj.map(sanitizeForPrototypePollution);
|
||||
if (obj === null || typeof obj !== "object") return obj
|
||||
if (Array.isArray(obj)) return obj.map(sanitizeForPrototypePollution)
|
||||
|
||||
const clean = {};
|
||||
const clean = {}
|
||||
for (const key in obj) {
|
||||
if (!Object.hasOwn(obj, key)) continue;
|
||||
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
||||
continue;
|
||||
if (!Object.hasOwn(obj, key)) continue
|
||||
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
||||
continue
|
||||
}
|
||||
clean[key] = sanitizeForPrototypePollution(obj[key]);
|
||||
clean[key] = sanitizeForPrototypePollution(obj[key])
|
||||
}
|
||||
return clean;
|
||||
return clean
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -131,8 +131,8 @@
|
||||
ELEMENT.Dialog.props.closeOnClickModal.default = false
|
||||
ELEMENT.Dialog.props.top.default = "50px"
|
||||
ELEMENT.Table.props.border.default = true
|
||||
ELEMENT.TableColumn.props.headerAlign.default = 'center'
|
||||
ELEMENT.TableColumn.props.align.default = 'center'
|
||||
ELEMENT.TableColumn.props.headerAlign.default = "center"
|
||||
ELEMENT.TableColumn.props.align.default = "center"
|
||||
ELEMENT.TableColumn.props.showOverflowTooltip = { type: Boolean, default: true }
|
||||
Vue.use(ELEMENT, {
|
||||
zIndex: 20000
|
||||
@@ -221,7 +221,7 @@
|
||||
// )
|
||||
// 连接建立时不立即发送 join,等待订阅完成
|
||||
this.ping()
|
||||
console.info('websocket open success')
|
||||
console.info("websocket open success")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -353,13 +353,13 @@
|
||||
Vue.prototype.$downLoad = commonUtil.downLoadService
|
||||
|
||||
Vue.prototype.$processStatusMap = {
|
||||
10: {text: "进行中", class: "doing"},
|
||||
20: {text: "已完成", class: "finished"},
|
||||
30: {text: "已撤回", class: "withdraw"},
|
||||
40: {text: "强行终止", class: "interrupt"},
|
||||
45: {text: "已拒绝", class: "reject"},
|
||||
50: {text: "挂起", class: "pending"},
|
||||
99: {text: "已废弃", class: "abandon"}
|
||||
10: { text: "进行中", class: "doing" },
|
||||
20: { text: "已完成", class: "finished" },
|
||||
30: { text: "已撤回", class: "withdraw" },
|
||||
40: { text: "强行终止", class: "interrupt" },
|
||||
45: { text: "已拒绝", class: "reject" },
|
||||
50: { text: "挂起", class: "pending" },
|
||||
99: { text: "已废弃", class: "abandon" }
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -529,7 +529,7 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 0 12px;
|
||||
/*padding: 0 12px;*/
|
||||
height: 100%;
|
||||
border-radius: 0;
|
||||
cursor: pointer;
|
||||
@@ -559,6 +559,12 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.v4-about-name {
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.v4-logout {
|
||||
color: #ffffff;
|
||||
cursor: pointer;
|
||||
@@ -643,9 +649,9 @@
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header class="v4-header">
|
||||
</head>
|
||||
<body>
|
||||
<header class="v4-header">
|
||||
<div class="v4-left-section">
|
||||
<div class="v4-logo-container">
|
||||
<img src="${AppLogo!}" alt="Logo" class="v4-logo" />
|
||||
@@ -680,37 +686,59 @@
|
||||
<span class="v4-user-name">${@auth.getPrincipalProperty('username')} (${@auth.getPrincipalProperty('loginname')})</span>
|
||||
<!-- <i class="fa fa-angle-down"></i> -->
|
||||
</div>
|
||||
<div id="aboutNameApp">
|
||||
<a class="v4-about-name" href="javascript:;" @click="showAbout">
|
||||
关于
|
||||
</a>
|
||||
</div>
|
||||
<a class="v4-logout" href="/platform/login/logout">
|
||||
<i class="fa fa-sign-out"></i>
|
||||
退出
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
<div style="height: 64px"></div>
|
||||
</header>
|
||||
<div style="height: 64px"></div>
|
||||
|
||||
<main class="v4-content">
|
||||
<main class="v4-content">
|
||||
<!-- 页面内容区域 -->
|
||||
<div class="ele-body" id="container">${layoutContent}</div>
|
||||
</main>
|
||||
</main>
|
||||
|
||||
<!-- 页脚 -->
|
||||
<footer class="v4-footer" id="v4-footer" style="display: none;">
|
||||
<!-- 页脚 -->
|
||||
<footer class="v4-footer" id="v4-footer" style="display: none;">
|
||||
<div class="v4-footer-bottom">
|
||||
<div class="v4-footer-copyright">
|
||||
<p>© 2025 武汉地大三思科技有限公司. 保留所有权利.</p>
|
||||
<p>ICP备案号:のICP备12345678号-1 | 版本号:v4.0.0</p>
|
||||
<p>© 2026 武汉地大三思科技有限公司. 保留所有权利.</p>
|
||||
<p>软件版本:v2.0</p>
|
||||
</div>
|
||||
<div class="v4-footer-tech">
|
||||
<span>技术支持:</span>
|
||||
<a href="http://www.3sgo.cn/" target="_blank">武汉地大三思科技有限公司</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
new Vue({
|
||||
el: "#aboutNameApp", // ✅ 挂载到外层
|
||||
methods: {
|
||||
showAbout() {
|
||||
this.$alert("系统名称:智慧工会<br>软件版本:V2.0<br>技术支持:武汉地大三思科技有限公司", "关于系统", {
|
||||
confirmButtonText: "确定",
|
||||
dangerouslyUseHTMLString: true,
|
||||
callback: action => {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
<script nonce="${cspNonce!}">
|
||||
// 处理导航项的active状态
|
||||
$(document).ready(function () {
|
||||
$(document).ready(function() {
|
||||
// 控制页脚显示的函数
|
||||
function toggleFooter() {
|
||||
var currentPath = getBaseSubAppPath()
|
||||
@@ -727,7 +755,7 @@
|
||||
function setActiveNavItem() {
|
||||
var currentPath = getBaseSubAppPath()
|
||||
$(".v4-nav-item").removeClass("active")
|
||||
$(".v4-nav-item").each(function () {
|
||||
$(".v4-nav-item").each(function() {
|
||||
if ($(this).attr("href") === currentPath) {
|
||||
$(this).addClass("active")
|
||||
}
|
||||
@@ -739,7 +767,7 @@
|
||||
toggleFooter()
|
||||
|
||||
// 为导航项添加点击事件
|
||||
$(".v4-nav-item").on("click", function () {
|
||||
$(".v4-nav-item").on("click", function() {
|
||||
$(".v4-nav-item").removeClass("active")
|
||||
$(this).addClass("active")
|
||||
})
|
||||
@@ -753,11 +781,11 @@
|
||||
})
|
||||
|
||||
// 使用pjax的事件来处理导航切换
|
||||
$(document).on("pjax:complete", function () {
|
||||
$(document).on("pjax:complete", function() {
|
||||
setActiveNavItem()
|
||||
toggleFooter()
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -327,9 +327,14 @@ layout("/layouts/platform.html"){
|
||||
</div>
|
||||
|
||||
<!-- 人员类型图表 -->
|
||||
<div class="card">
|
||||
<!-- <div class="card">
|
||||
<div class="card-title">人员类型统计</div>
|
||||
<div class="chart-container" id="personTypeMemberChart" v-loading="loading.personTypeMember"></div>
|
||||
</div>-->
|
||||
<!-- 在职类型图表 -->
|
||||
<div class="card">
|
||||
<div class="card-title">人员类型统计</div>
|
||||
<div class="chart-container" id="userStateMemberChart" v-loading="loading.userStateMember"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -887,8 +892,8 @@ layout("/layouts/platform.html"){
|
||||
this.getMemberPercentage()
|
||||
this.getMemberSexPercentage()
|
||||
this.getUnionMember()
|
||||
this.getPersonTypeMember()
|
||||
// this.getUserStateMember()
|
||||
// this.getPersonTypeMember()
|
||||
this.getUserStateMember()
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
@@ -159,8 +159,8 @@ layout("/layouts/platform_h5.html"){
|
||||
<div class="col-title">在职状态</div>
|
||||
<div id="userStateMemberChart" style="width: 100%; height: 240px; box-sizing: border-box"></div>
|
||||
|
||||
<div class="col-title">人员类型</div>
|
||||
<div id="personTypeMemberChart" style="width: 100%; height: 240px; box-sizing: border-box"></div>
|
||||
<!-- <div class="col-title">人员类型</div>
|
||||
<div id="personTypeMemberChart" style="width: 100%; height: 240px; box-sizing: border-box"></div>-->
|
||||
</van-col>
|
||||
</van-row>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user