This commit is contained in:
=
2025-12-19 11:24:06 +08:00
42 changed files with 22713 additions and 22662 deletions
@@ -376,7 +376,9 @@ public class ActivityBasicScopeController {
try { try {
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())){
cnd.andEX("u.unionid", "=", SecurityUtil.getUnionId());
}
cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId()); cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId());
cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId()); cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId());
cnd.andEX("u.personType", IN_OR_NIN_OP, activityUserScopePageParam.getPersonTypes()); cnd.andEX("u.personType", IN_OR_NIN_OP, activityUserScopePageParam.getPersonTypes());
@@ -140,6 +140,7 @@ public class ActivityCultureApplyActivityController {
Dict args = Dict.create(); Dict args = Dict.create();
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, tissue); args.set(FlowConst.FORM_DATA, tissue);
args.set("activity_type", tissue.getActivity_type());
ProcessInstance instance = flowEngine.startProcessInstanceByKey("WHHD", tissue.getId(), SecurityUtil.getUserId(), args); ProcessInstance instance = flowEngine.startProcessInstanceByKey("WHHD", tissue.getId(), SecurityUtil.getUserId(), args);
// 自动完成第一个申请任务 // 自动完成第一个申请任务
@@ -102,7 +102,11 @@ public class ActivityCultureAuditActivityController {
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10 LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
$condition $condition
"""); """);
if (activity_type==40002){
cnd.and("t.taskName", "=", "12f7ed7d-9286-4453-8754-57df7d3b260b");
}else{
cnd.and("t.taskName", "=", "76a03838-caa4-4561-ba0f-0da0d3a17c37"); cnd.and("t.taskName", "=", "76a03838-caa4-4561-ba0f-0da0d3a17c37");
}
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
cnd.andEX("YEAR(tissue.startTime)", "=", year); cnd.andEX("YEAR(tissue.startTime)", "=", year);
@@ -145,7 +145,7 @@ public class ActivityDeclareMineController {
@At @At
@ApiOperation("活动申报,查看活动申报") @ApiOperation("活动申报,查看活动申报")
@SaCheckPermission("activityDeclare.mine") @SaCheckPermission("activityDeclare")
public Result findOne(@Valid String id) { public Result findOne(@Valid String id) {
ActivityDeclareInfo info = dao.fetch(ActivityDeclareInfo.class, id); ActivityDeclareInfo info = dao.fetch(ActivityDeclareInfo.class, id);
return Result.success().addData(info); return Result.success().addData(info);
@@ -13,6 +13,7 @@ import io.swagger.annotations.ApiOperation;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap; import org.nutz.lang.util.NutMap;
@@ -94,8 +95,6 @@ public class ActivityDeclareSchoolUnionController {
$condition $condition
"""); """);
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
pageParam.buildSearch(cnd, "info.");
cnd.and("t.taskName", "=", "81428a9b-63c0-44b8-a28c-17d282c2cc8e"); cnd.and("t.taskName", "=", "81428a9b-63c0-44b8-a28c-17d282c2cc8e");
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
@@ -105,6 +104,13 @@ public class ActivityDeclareSchoolUnionController {
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode()); cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
} }
if (StrUtil.isNotBlank(pageParam.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("info.userName", pageParam.getSearchKeyword());
seg.orLike("info.loginName", pageParam.getSearchKeyword());
cnd.and(seg);
}
if (StrUtil.isAllBlank(pageParam.getPageOrderName(), pageParam.getPageOrderBy())) { if (StrUtil.isAllBlank(pageParam.getPageOrderName(), pageParam.getPageOrderBy())) {
cnd.desc("info.applyTime"); cnd.desc("info.applyTime");
} else { } else {
@@ -145,8 +145,8 @@ public class ActivityWorksCollectionReadController {
cnd.andEX("up.activityId", "=", pageForm.getActivityId()); cnd.andEX("up.activityId", "=", pageForm.getActivityId());
cnd.andEX("up.subjectId", "=", pageForm.getSubjectId()); cnd.andEX("up.subjectId", "=", pageForm.getSubjectId());
cnd.andEX("up.worksId", "=", pageForm.getWorksId()); cnd.andEX("up.worksId", "=", pageForm.getWorksId());
cnd.andEX("unionId", "=", pageForm.getUnionId()); cnd.andEX("up.unionId", "=", pageForm.getUnionId());
cnd.andEX("unitId", "=", pageForm.getUnitId()); cnd.andEX("up.unitId", "=", pageForm.getUnitId());
if (StrUtil.isAllNotBlank(pageForm.getSearchKeyword())) { if (StrUtil.isAllNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup(); SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("userName", pageForm.getSearchKeyword()); seg.orLike("userName", pageForm.getSearchKeyword());
@@ -48,7 +48,7 @@ public class BlessingUserController {
FROM FROM
blessing_user blu blessing_user blu
LEFT JOIN blessing bl ON bl.id = blu.blessingId LEFT JOIN blessing bl ON bl.id = blu.blessingId
LEFT JOIN `user` u ON u.id = blu.userId LEFT JOIN `vw_user` u ON u.id = blu.userId
$condition $condition
"""); """);
if (Strings.isNotBlank(pageForm.getSearchKeyword()) && Strings.isNotBlank(pageForm.getSearchName())) { if (Strings.isNotBlank(pageForm.getSearchKeyword()) && Strings.isNotBlank(pageForm.getSearchName())) {
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -1,7 +1,7 @@
<template> <template>
<div class="signature-wrap"> <div class="signature-wrap">
<canvas id="canvas"></canvas> <canvas id="canvas"></canvas>
<div class="action-buttons"> <div :class="isLikelyMobile() ? 'action-buttons' : 'action-buttons pc-action-buttons'">
<button @click="clear" class="action-button-danger" type="button">清空</button> <button @click="clear" class="action-button-danger" type="button">清空</button>
<button @click="undo" class="action-button-warning" type="button">撤销</button> <button @click="undo" class="action-button-warning" type="button">撤销</button>
<button @click="save" class="action-button-primary" type="button">确定</button> <button @click="save" class="action-button-primary" type="button">确定</button>
@@ -48,6 +48,13 @@ module.exports = {
rotate() { rotate() {
signature.getRotateCanvas(90) signature.getRotateCanvas(90)
}, },
isLikelyMobile() {
const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
const isSmallScreen = window.screen.width <= 768;
const hasMobileUA = /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
return hasMobileUA || (isTouchDevice && isSmallScreen);
},
save() { save() {
if (signature.isEmpty()) { if (signature.isEmpty()) {
alert("请签字后再保存") alert("请签字后再保存")
@@ -56,7 +63,11 @@ module.exports = {
// const png = signature.getPNG() // const png = signature.getPNG()
//旋转一下 横过来 //旋转一下 横过来
const rotateCanvas = signature.getRotateCanvas(-90) const rotateCanvas = signature.getRotateCanvas(-90)
if (this.isLikelyMobile()) {
this.$emit("save", rotateCanvas.toDataURL()) this.$emit("save", rotateCanvas.toDataURL())
} else {
this.$emit("save", signature.toDataURL())
}
} }
}, },
mounted() { mounted() {
@@ -110,6 +121,13 @@ module.exports = {
row-gap: 20px; row-gap: 20px;
} }
.signature-wrap .pc-action-buttons {
bottom: 50px;
right: 50px;
left: unset;
transform: rotate(0deg);
}
.action-buttons button { .action-buttons button {
color: #ffffff; color: #ffffff;
position: relative; position: relative;
@@ -2,8 +2,9 @@
<el-card shadow="never" class="pc-signature-card"> <el-card shadow="never" class="pc-signature-card">
<div class="pc-signature"> <div class="pc-signature">
<el-link type="primary">扫描下方二维码进行签字</el-link> <el-link type="primary">扫描下方二维码进行签字</el-link>
<div class="signature-body"> <div class="signature-body" v-loading="loading">
<QrCode v-if="!signatureContent" :options="{ width: 126 }" :value="signatureAddress" class="signature-qrcode"></QrCode> <QrCode v-if="!signatureContent" :options="{ width: 126 }" :value="signatureAddress"
class="signature-qrcode"></QrCode>
<el-image v-if="signatureContent" :src="signatureContent" class="signature-image"></el-image> <el-image v-if="signatureContent" :src="signatureContent" class="signature-image"></el-image>
</div> </div>
<el-link type="danger" icon="el-icon-edit" @click="signatureAgain" v-if="signatureContent">重签</el-link> <el-link type="danger" icon="el-icon-edit" @click="signatureAgain" v-if="signatureContent">重签</el-link>
@@ -24,7 +25,7 @@ module.exports = {
watch: { watch: {
value: { value: {
handler(val) { handler(val) {
if(val){ if (val) {
this.signatureContent = val this.signatureContent = val
this.$emit("input", this.signatureContent) this.$emit("input", this.signatureContent)
} }
@@ -38,18 +39,18 @@ module.exports = {
id: new Date().getTime() + Math.floor(Math.random() * 10000) + 1, id: new Date().getTime() + Math.floor(Math.random() * 10000) + 1,
signatureAddress: null, signatureAddress: null,
interval: null, interval: null,
signatureContent: null signatureContent: null,
loading: true,
} }
}, },
methods: { methods: {
async init() { async init() {
const { code, data } = await this.$axios.post("/platform/signature/get") const {code, data} = await this.$axios.post("/platform/signature/get")
if (code === 0) { if (code === 0) {
this.signatureContent = data && data.signature this.signatureContent = data && data.signature
this.$emit("input", this.signatureContent) this.$emit("input", this.signatureContent)
} }
this.signatureAddress = origin + "/platform/signature/scanPcCode?id=" + this.id this.signatureAddress = origin + "/platform/signature/scanPcCode?id=" + this.id
console.log(this.signatureAddress)
}, },
signatureAgain() { signatureAgain() {
const val = sessionStorage.getItem("h5-scan-code-signature-" + this.id) const val = sessionStorage.getItem("h5-scan-code-signature-" + this.id)
@@ -57,13 +58,25 @@ module.exports = {
this.$emit("input", val) this.$emit("input", val)
} }
}, },
mounted() { async mounted() {
this.init() await this.init()
webSocketPubSub.subscribe("h5-scan-code-signature", (data) => { webSocketPubSub.subscribe("h5-scan-code-signature", (data) => {
console.info("ws:收到签字成功消息:", data) console.info("ws:收到签字成功消息:", data)
this.signatureContent = data.value this.signatureContent = data.value
this.$emit("input", data.value) this.$emit("input", data.value)
}) })
// 可选:轮询或 watch ready 状态
const checkReady = () => {
if (webSocketPubSub.ws && webSocketPubSub.ws.readyState === WebSocket.OPEN) {
console.info("ws.readyState is open");
this.loading = false;
console.log(this.signatureAddress)
} else {
setTimeout(checkReady, 100);
}
};
checkReady();
} }
} }
</script> </script>
@@ -31,9 +31,9 @@
<link rel="stylesheet" href="${base!}/assets/platform/css/common.css" /> <link rel="stylesheet" href="${base!}/assets/platform/css/common.css" />
<!-- import Jquery --> <!-- import Jquery -->
<script src="${base!}/assets/platform/plugins/jquery/jquery.js"></script> <script src="${base!}/assets/platform/plugins/jquery/jquery-high.min.js"></script>
<!-- pjax是异步加载html片段的工具,模拟前端路由机制 --> <!-- pjax是异步加载html片段的工具,模拟前端路由机制 -->
<script src="${base!}/assets/platform/plugins/pjax/jquery.pjax.js"></script> <script src="${base!}/assets/platform/plugins/pjax/jquery.pjax-high.min.js"></script>
<!-- nprogress 配合pjax使用 --> <!-- nprogress 配合pjax使用 -->
<link rel="stylesheet" href="${base!}/assets/platform/plugins/nprogress/nprogress.css" /> <link rel="stylesheet" href="${base!}/assets/platform/plugins/nprogress/nprogress.css" />
<script src="${base!}/assets/platform/plugins/nprogress/nprogress.js"></script> <script src="${base!}/assets/platform/plugins/nprogress/nprogress.js"></script>
@@ -100,9 +100,28 @@
<script src="https://map.qq.com/api/gljs?v=2.exp&key=MLLBZ-GQECI-ASXG7-5GNOZ-XW2OF-H5BVH"></script> <script src="https://map.qq.com/api/gljs?v=2.exp&key=MLLBZ-GQECI-ASXG7-5GNOZ-XW2OF-H5BVH"></script>
<script type="text/javascript"> <script>
window._AMapSecurityConfig = { // 在加载 lodash 后、使用前插入
securityJsCode: "4fa1e1aeabba7eb9518129cf57ab17c1" const originalDefaultsDeep = window._.defaultsDeep;
window._.defaultsDeep = function(...args) {
// 先对所有参数做原型污染清洗
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);
const clean = {};
for (const key in obj) {
if (!Object.hasOwn(obj, key)) continue;
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
continue;
}
clean[key] = sanitizeForPrototypePollution(obj[key]);
}
return clean;
} }
</script> </script>
@@ -168,7 +187,7 @@
this.isSubscribed = true this.isSubscribed = true
this.sendJoinMessage() this.sendJoinMessage()
} }
}, 2000) }, 1000)
} }
// 事件处理 // 事件处理
@@ -202,6 +221,7 @@
// ) // )
// 连接建立时不立即发送 join,等待订阅完成 // 连接建立时不立即发送 join,等待订阅完成
this.ping() this.ping()
console.info('websocket open success')
} }
} }
@@ -243,9 +263,9 @@
if (this.ws.readyState === WebSocket.OPEN) { if (this.ws.readyState === WebSocket.OPEN) {
this.sendJoinMessage() this.sendJoinMessage()
} }
}, 1000) }, 500)
} }
}, 3000) // 延迟3秒重连 }, 1000) // 延迟2秒重连
} }
// 窗口事件处理 // 窗口事件处理
@@ -100,26 +100,28 @@
<!-- import jsencrypt--> <!-- import jsencrypt-->
<script src="${base!}/assets/platform/plugins/jsencrypt/jsencrypt.min.js"></script> <script src="${base!}/assets/platform/plugins/jsencrypt/jsencrypt.min.js"></script>
<script> <script>
// 安全地冻结 Object.prototype(跳过不可配置属性) // 在加载 lodash 后、使用前插入
(function () { const originalDefaultsDeep = window._.defaultsDeep;
const badKeys = ['constructor', 'prototype']; window._.defaultsDeep = function(...args) {
for (const key of badKeys) { // 先对所有参数做原型污染清洗
if (key in Object.prototype) { const cleanArgs = args.map(arg => sanitizeForPrototypePollution(arg));
try { return originalDefaultsDeep.apply(window._, cleanArgs);
delete Object.prototype[key]; };
} catch (e) {
// 忽略无法删除的属性(如 __proto__ 在现代浏览器中不可删除)
}
}
}
// 冻结 Object.prototype(如果可能) function sanitizeForPrototypePollution(obj) {
try { if (obj === null || typeof obj !== 'object') return obj;
Object.freeze(Object.prototype); if (Array.isArray(obj)) return obj.map(sanitizeForPrototypePollution);
} catch (e) {
// 忽略错误(某些环境可能不允许) const clean = {};
for (const key in obj) {
if (!Object.hasOwn(obj, key)) continue;
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
continue;
}
clean[key] = sanitizeForPrototypePollution(obj[key]);
}
return clean;
} }
})();
</script> </script>
<script> <script>
new Vue({ new Vue({
@@ -356,7 +356,7 @@ layout("/layouts/platform.html"){
} }
}) })
} }
if (this.$auth.hasRoleOr(["BRANCH_UNION_WENTI_SPORTS", "UNION_REIMBURSEMENT_MANAGER"])) { if (this.$auth.hasRoleOr(["BRANCH_UNION_WENTI_SPORTS", "BRANCH_UNION_CHAIRMAN"])) {
this.activityDeclareReimbursementList.map(v => { this.activityDeclareReimbursementList.map(v => {
if (["BRANCH_UNION"].includes(v.name)) { if (["BRANCH_UNION"].includes(v.name)) {
activityDeclareReimbursementList.push(v) activityDeclareReimbursementList.push(v)
@@ -1,4 +1,4 @@
const INFO = { var INFO = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<div class="process-title">申请信息 <div class="process-title">申请信息
@@ -1,4 +1,4 @@
const INFO = { var INFO = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<div class="process-title">申请信息 <div class="process-title">申请信息
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-tabs> <el-tabs>
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-tabs> <el-tabs>
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-tabs> <el-tabs>
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-tabs> <el-tabs>
@@ -1,4 +1,4 @@
const INFO = { var INFO = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<div class="process-title"> <div class="process-title">
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-descriptions :column="2" border class="table_fixed"> <el-descriptions :column="2" border class="table_fixed">
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-descriptions :column="2" border class="table_fixed"> <el-descriptions :column="2" border class="table_fixed">
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-tabs> <el-tabs>
@@ -1,4 +1,4 @@
const info = { var info = {
template: /*language=HTML*/ ` template: /*language=HTML*/ `
<div> <div>
<el-tabs> <el-tabs>
@@ -46,14 +46,13 @@ layout("/layouts/platform.html"){
</div> </div>
</div> </div>
<div class="search-item" <div class="search-item">
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}">
<div class="search-item-label">所属工会:</div> <div class="search-item-label">所属工会:</div>
<div class="search-item-option"> <div class="search-item-option">
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;" <el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
clearable="true" clearable
@change="flushUnits" @clear="flushUnits" @change="flushUnits" @clear="flushUnits"
filterable="true"> filterable>
<el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option> <el-option v-for="item in unions" :label="item.unionname" :value="item.id"></el-option>
</el-select> </el-select>
</div> </div>
@@ -63,8 +62,8 @@ layout("/layouts/platform.html"){
<div class="search-item-label">所属单位:</div> <div class="search-item-label">所属单位:</div>
<div class="search-item-option"> <div class="search-item-option">
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;" <el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
clearable="true" clearable
filterable="true"> filterable>
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</div> </div>
@@ -83,7 +82,6 @@ layout("/layouts/platform.html"){
</div> </div>
</div> </div>
<template v-if="searchMore">
<div class="search-item"> <div class="search-item">
<div class="search-item-label">人员类型:</div> <div class="search-item-label">人员类型:</div>
<div class="search-item-option"> <div class="search-item-option">
@@ -111,21 +109,14 @@ layout("/layouts/platform.html"){
</el-select> </el-select>
</div> </div>
</div> </div>
</template>
<div class="search-query"> <div class="search-query">
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
<more v-model="searchMore"></more>
</div> </div>
</div> </div>
</el-card> </el-card>
<el-card shadow="never" class="mt20"> <el-card shadow="never" class="mt20">
<table-tool label="用户列表" :app="this"> <table-tool label="用户列表" :app="this">
<template #func>
</template>
</table-tool> </table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder" <el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
@@ -134,7 +125,6 @@ layout("/layouts/platform.html"){
<el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号" <el-table-column align="center" header-align="center" type="index" :index="indexMethod" label="序号"
width="80px"></el-table-column> width="80px"></el-table-column>
<el-table-column <el-table-column
align="center" align="center"
header-align="center" header-align="center"
@@ -147,13 +137,9 @@ layout("/layouts/platform.html"){
</el-table-column> </el-table-column>
</el-table> </el-table>
<!--#include("/layouts/pagination.html"){}#--> <!--#include("/layouts/pagination.html"){}#-->
</el-card> </el-card>
</template> </template>
</guava> </guava>
</div> </div>
<script> <script>
const vue = new Vue({ const vue = new Vue({
@@ -192,26 +178,24 @@ layout("/layouts/platform.html"){
} }
}, },
methods: { methods: {
async getActivityGroup() { async getActivityGroup() {
const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup') const {data} = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
this.activityGroupList = data this.activityGroupList = data
}, },
async flushUnits() { async flushUnits() {
this.$set(this.pageForm, "unitId", "") this.$set(this.pageForm, "unitId", null)
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') { if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')) {
this.units = await getUnits(this.pageForm.unionId) this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
} else { } else {
this.units = await getUnits("${@shiro.getPrincipalProperty('unit').getUnionid()}") this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id)
}
} }
},
}, },
async created() { async created() {
await this.getActivityGroup() await this.getActivityGroup()
this.pageData() this.pageData()
this.unions = await getUnions() this.unions = await this.$businessTool.listUnion()
this.flushUnits() this.flushUnits()
} }
}) })