协会会长可以设置本协会参加人员(人员选择器),申请后按主表分组查询,完结后系统管理员、校工会管理员可以编辑
This commit is contained in:
+7
-3
@@ -29,6 +29,8 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -134,6 +136,7 @@ public class ActivityBasicScopeController {
|
||||
@At
|
||||
@SLog(tag = "活动人员设置", msg = "设置活动人员")
|
||||
@SaCheckPermission("activity.basic.scope")
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Object doSetActivityUser(@Param("data") ActivityUserScopePageParam activityUserScopePageParam) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT DISTINCT
|
||||
@@ -243,6 +246,8 @@ public class ActivityBasicScopeController {
|
||||
public Result getRolesAndUnion() {
|
||||
return Result.success(new NutMap() {{
|
||||
addv("is_A06", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()));
|
||||
addv("is_H02", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name()));
|
||||
addv("is_CLUB_PRESIDENT", StpUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name()));
|
||||
addv("is_H04", StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()));
|
||||
addv("is_sysadmin", StpUtil.hasRole(RoleConstant.SYSADMIN.name()));
|
||||
addv("unionid", SecurityUtil.getUnionId());
|
||||
@@ -376,9 +381,8 @@ public class ActivityBasicScopeController {
|
||||
|
||||
try {
|
||||
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())){
|
||||
cnd.andEX("u.unionid", "=", SecurityUtil.getUnionId());
|
||||
}
|
||||
// 授权范围独立于筛选条件,反选或清空协会不能扩大当前账号的数据权限。
|
||||
activityBasicScopeService.appendRoleUserScope(cnd);
|
||||
cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId());
|
||||
cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId());
|
||||
cnd.andEX("u.personType", IN_OR_NIN_OP, activityUserScopePageParam.getPersonTypes());
|
||||
|
||||
@@ -16,6 +16,13 @@ public interface ActivityBasicScopeService extends BaseService<ActivityUserScope
|
||||
|
||||
Sql createSql(Cnd cnd);
|
||||
|
||||
/**
|
||||
* 为人员查询追加当前登录账号的授权范围,查询和设置人员共用。
|
||||
* @param cnd 已有查询条件,用户表必须使用 u 别名;方法原地追加条件
|
||||
* @return 无返回值;会长限管理协会成员,兼任分工会主席时取两种范围的并集
|
||||
*/
|
||||
void appendRoleUserScope(Cnd cnd);
|
||||
|
||||
/**
|
||||
* 大量数据插入
|
||||
*/
|
||||
|
||||
+50
@@ -1,6 +1,16 @@
|
||||
package com.budwk.app.zhgh.activity.basic.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.club.model.ClubUser;
|
||||
import com.budwk.app.zhgh.club.model.SysClub;
|
||||
import com.budwk.app.zhgh.club.service.SysClubService;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.base.utils.DateUtil;
|
||||
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
|
||||
@@ -34,6 +44,46 @@ public class ActivityBasicScopeServiceImpl extends BaseServiceImpl<ActivityUserS
|
||||
super(dao);
|
||||
}
|
||||
|
||||
@Inject
|
||||
private SysClubService sysClubService;
|
||||
|
||||
/**
|
||||
* cnd 为使用 u 用户别名的查询条件,无返回值;仅追加服务端授权条件。
|
||||
* 会长允许选择管理协会的跨工会成员;无协会、无工会时不放开全员查询。
|
||||
*/
|
||||
@Override
|
||||
public void appendRoleUserScope(Cnd cnd) {
|
||||
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return;
|
||||
}
|
||||
boolean president = AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name());
|
||||
SqlExpressionGroup scope = new SqlExpressionGroup();
|
||||
boolean hasScope = false;
|
||||
String unionId = SecurityUtil.getUnionId();
|
||||
// 双身份保留分工会范围,并允许选择本人管理协会中其他工会的成员。
|
||||
if ((!president || AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) && StrUtil.isNotBlank(unionId)) {
|
||||
scope.or("u.unionid", "=", unionId);
|
||||
hasScope = true;
|
||||
}
|
||||
if (president) {
|
||||
List<String> clubIds = sysClubService.getMyManageClub().stream().map(SysClub::getId).toList();
|
||||
// 空集合必须显式拦截,避免 ORM 忽略空 IN 条件后扩大人员范围。
|
||||
if (!clubIds.isEmpty()) {
|
||||
List<String> userIds = dao().query(ClubUser.class, Cnd.where("clubId", "in", clubIds))
|
||||
.stream().map(ClubUser::getUserId).distinct().toList();
|
||||
if (!userIds.isEmpty()) {
|
||||
scope.or("u.id", "in", userIds);
|
||||
hasScope = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hasScope) {
|
||||
cnd.and(scope);
|
||||
} else {
|
||||
cnd.and(new Static("1 = 0"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sql createSql(Cnd cnd) {
|
||||
|
||||
|
||||
+14
-5
@@ -3,6 +3,7 @@ package com.budwk.app.zhgh.activity.culture.controller;
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -92,7 +93,7 @@ public class ActivityCultureApplyActivityController {
|
||||
* @description 根据活动组别查询每个工会可以报名的人数
|
||||
*/
|
||||
@At
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR)
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club", "activity.culture.infoManage.club"}, mode = SaMode.OR)
|
||||
public Result getUnionData(String activityScopeGroupId) {
|
||||
List<NutMap> unionData = activityCultureService.getUnionData(activityScopeGroupId);
|
||||
return Result.success(unionData);
|
||||
@@ -102,8 +103,16 @@ public class ActivityCultureApplyActivityController {
|
||||
@At
|
||||
@ApiOperation("保存活动申报")
|
||||
@SLog(tag = "文化活动-活动申报", msg = "保存了一条文化活动记录")
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR)
|
||||
public Result save(@Param("data") ActivityTissue tissue) {
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club", "activity.culture.infoManage.club"}, mode = SaMode.OR)
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public Result save(@Param("data") ActivityTissue tissue, @Param("manageClubEdit") boolean manageClubEdit) {
|
||||
// data 为活动表单;manageClubEdit=true 表示管理员只保存业务信息,返回 Result 成功状态。
|
||||
if (manageClubEdit) {
|
||||
activityCultureService.saveManagedClubActivity(tissue);
|
||||
return Result.success();
|
||||
}
|
||||
// 管理权限只允许走服务端校验的编辑分支,不能借此新增申请。
|
||||
StpUtil.checkPermissionOr("activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club");
|
||||
|
||||
if (tissue.getActivity_type() == 40002) {
|
||||
tissue.setUnionId(SecurityUtil.getUnionId());
|
||||
@@ -188,7 +197,7 @@ public class ActivityCultureApplyActivityController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR)
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club", "activity.culture.infoManage.club"}, mode = SaMode.OR)
|
||||
public Result findUser(String serachWord,
|
||||
Integer activity_type) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
@@ -224,7 +233,7 @@ public class ActivityCultureApplyActivityController {
|
||||
}
|
||||
|
||||
@At
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR)
|
||||
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club", "activity.culture.infoManage.club"}, mode = SaMode.OR)
|
||||
public Result queryUserByIds(String[] ids) {
|
||||
Sql sql = Sqls.create("select id,loginname,username,unitname,unionname,sex from vw_user where id in (@id)");
|
||||
sql.setParam("id", ids);
|
||||
|
||||
@@ -21,6 +21,13 @@ public interface ActivityCultureService extends BaseService<ActivityTissue> {
|
||||
|
||||
void doEditActivity(ActivityTissue tissue);
|
||||
|
||||
/**
|
||||
* 管理员修改已有协会活动,不推进工作流。
|
||||
* @param tissue 完整活动表单,id 必须为已存在的协会活动;申请和审核字段以数据库为准
|
||||
* @return 无返回值,权限不足或活动不合法时抛出业务异常
|
||||
*/
|
||||
void saveManagedClubActivity(ActivityTissue tissue);
|
||||
|
||||
Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type);
|
||||
|
||||
NutMap findOne(String id);
|
||||
|
||||
+48
-1
@@ -1,6 +1,10 @@
|
||||
package com.budwk.app.zhgh.activity.culture.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.budwk.app.base.exception.BaseException;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import com.budwk.app.base.constant.RoleConstant;
|
||||
import com.budwk.app.base.model.Audit;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
@@ -79,6 +83,48 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
||||
update(tissue);
|
||||
}
|
||||
|
||||
/**
|
||||
* tissue 为管理员提交的完整活动表单,无返回值;仅允许两类管理员编辑已有协会活动。
|
||||
* 申请人、申请时间、审核及开启状态取数据库原值,保存不启动或执行任何 wf 任务。
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void saveManagedClubActivity(ActivityTissue tissue) {
|
||||
StpUtil.checkPermission("activity.culture.infoManage.club");
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
throw new BaseException("仅系统管理员和校工会管理员可执行此操作");
|
||||
}
|
||||
if (tissue == null || StrUtil.isBlank(tissue.getId())) {
|
||||
throw new BaseException("请选择需要编辑的协会活动");
|
||||
}
|
||||
ActivityTissue original = fetch(tissue.getId());
|
||||
if (original == null || !Integer.valueOf(40003).equals(original.getActivity_type())) {
|
||||
throw new BaseException("只能编辑已存在的协会活动");
|
||||
}
|
||||
if ("50004".equals(original.getProjectTypeCode()) || "50004".equals(tissue.getProjectTypeCode())) {
|
||||
throw new BaseException("此活动项目类型不允许编辑");
|
||||
}
|
||||
tissue.setActivity_type(original.getActivity_type());
|
||||
tissue.setUserId(original.getUserId());
|
||||
tissue.setApplyTime(original.getApplyTime());
|
||||
tissue.setUnionId(original.getUnionId());
|
||||
tissue.setState(original.getState());
|
||||
tissue.setAuditId(original.getAuditId());
|
||||
tissue.setIsUnseal(original.getIsUnseal());
|
||||
tissue.setCreatedBy(original.getCreatedBy());
|
||||
tissue.setCreatedAt(original.getCreatedAt());
|
||||
tissue.setDelFlag(original.getDelFlag());
|
||||
update(tissue);
|
||||
// 未提交参与人明细时保留原记录;提交空数组表示明确清空,主从表同一事务更新。
|
||||
if (tissue.getTissuePersonList() != null) {
|
||||
tissue.getTissuePersonList().forEach(person -> person.setTissueId(original.getId()));
|
||||
dao().clear(ActivityTissuePerson.class, Cnd.where("tissueId", "=", original.getId()));
|
||||
if (!tissue.getTissuePersonList().isEmpty()) {
|
||||
insert(tissue.getTissuePersonList());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
@@ -146,7 +192,8 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
||||
} else {
|
||||
cnd.desc("tissue.startTime");
|
||||
}
|
||||
//cnd.groupBy("tissue.id");
|
||||
// 同一审核任务关联多个参与人时会展开多行,按活动主表 ID 分组保证每项活动仅展示一次。
|
||||
cnd.groupBy("tissue.id");
|
||||
sql.setCondition(cnd);
|
||||
return this.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<el-tabs tab-position="top" v-model="activeName" @tab-click="handleClick" style="margin: 20px">
|
||||
<el-tab-pane label="人员设置" name="1">
|
||||
<template>
|
||||
<user-scope ref="userScope" @group_change="group_change" :group_id.sync="groupId"></user-scope>
|
||||
<user-scope :activity_type="activity_type" ref="userScope" @group_change="group_change" :group_id.sync="groupId"></user-scope>
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
|
||||
@@ -21,7 +21,13 @@
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {},
|
||||
props: {
|
||||
// 申请页传入活动类型;未传时保持公共人员设置入口原有行为。
|
||||
activity_type: {
|
||||
type: [Number, String],
|
||||
default: ""
|
||||
}
|
||||
},
|
||||
model: {},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
@@ -45,7 +51,7 @@ module.exports = {
|
||||
},
|
||||
components: {
|
||||
"user-data-scope": httpVueLoader("/components/module/activity/UserDataScope.vue"),
|
||||
"user-scope": httpVueLoader("/components/module/activity/UserScope.vue")
|
||||
"user-scope": httpVueLoader("/components/module/activity/UserScope.vue?v=20261109-club-scope-2")
|
||||
},
|
||||
watch: {
|
||||
groupId: {
|
||||
|
||||
@@ -228,12 +228,12 @@
|
||||
</template>
|
||||
|
||||
<el-row class="query-row"
|
||||
v-if="is_A06===true||is_sysadmin===true||is_H02===true">
|
||||
v-if="isClubActivity || is_A06 || is_sysadmin || is_H02 || is_CLUB_PRESIDENT">
|
||||
<el-col class="query-title">协会:</el-col>
|
||||
<el-col class="query-content">
|
||||
<el-select v-model="pageForm.clubId" placeholder="请选择协会" @change="doSearch"
|
||||
filterable
|
||||
:clearable="is_A06===true||is_sysadmin===true||(is_H04===true&&is_H02===true)"
|
||||
:clearable="is_A06===true||is_sysadmin===true||(is_H04 && (is_H02 || is_CLUB_PRESIDENT))"
|
||||
style="width: 100%">
|
||||
<el-option
|
||||
v-for="item in clubOptions"
|
||||
@@ -382,7 +382,13 @@
|
||||
|
||||
<script>
|
||||
module.exports = {
|
||||
props: {},
|
||||
props: {
|
||||
// 40003 表示协会活动,仅用于显示筛选入口,人员权限仍由后端校验。
|
||||
activity_type: {
|
||||
type: [Number, String],
|
||||
default: ""
|
||||
}
|
||||
},
|
||||
model: {},
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
@@ -470,6 +476,9 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isClubActivity() {
|
||||
return Number(this.activity_type) === 40003
|
||||
},
|
||||
is_H10() {
|
||||
return this.roleData.is_H10
|
||||
},
|
||||
@@ -479,6 +488,9 @@ module.exports = {
|
||||
is_H04() {
|
||||
return this.roleData.is_H04
|
||||
},
|
||||
is_CLUB_PRESIDENT() {
|
||||
return this.roleData.is_CLUB_PRESIDENT
|
||||
},
|
||||
is_H02() {
|
||||
return this.roleData.is_H02
|
||||
},
|
||||
@@ -546,9 +558,10 @@ module.exports = {
|
||||
this.pageForm.reverseSelection = false
|
||||
this.doSearch()
|
||||
},
|
||||
async queryUser(val) {
|
||||
const resp = await $.get("/open/common/userOptions", {query: val})
|
||||
this.userList = resp.data
|
||||
queryUser(val) {
|
||||
return $.get("/open/common/userOptions", {query: val}).then((resp) => {
|
||||
this.userList = resp.data
|
||||
})
|
||||
},
|
||||
tagClick(key, val) {
|
||||
let idx = this.pageForm[key].indexOf(val)
|
||||
@@ -559,16 +572,12 @@ module.exports = {
|
||||
}
|
||||
this.doSearch()
|
||||
},
|
||||
async flushUnits() {
|
||||
flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", "")
|
||||
if (this.is_sysadmin || this.is_A06) {
|
||||
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||
// this.activityUnits = await getActivityUnits(this.pageForm.activityUnionId)
|
||||
} else {
|
||||
this.units = await this.$businessTool.listUnit(this.unionId)
|
||||
}
|
||||
return this.$businessTool.listUnit(this.is_sysadmin || this.is_A06 || this.is_CLUB_PRESIDENT ? this.pageForm.unionId : this.unionid)
|
||||
.then((units) => { this.units = units })
|
||||
},
|
||||
async pageData() {
|
||||
pageData() {
|
||||
const pageForm = clone(this.pageForm)
|
||||
pageForm.personTypes = JSON.stringify(pageForm.personTypes)
|
||||
pageForm.userStates = JSON.stringify(pageForm.userStates)
|
||||
@@ -580,17 +589,18 @@ module.exports = {
|
||||
pageForm.age = JSON.stringify(pageForm.age)
|
||||
pageForm.activityUserCnd = pageForm.activityUserCnd ? JSON.stringify(pageForm.activityUserCnd) : pageForm.activityUserCnd
|
||||
|
||||
const resp = await $.post("/platform/activity/basic/scope/pageData", {data: JSON.stringify(pageForm)})
|
||||
|
||||
if (resp.code === 0) {
|
||||
this.tableData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
this.tableLoading = true
|
||||
return $.post("/platform/activity/basic/scope/pageData", {data: JSON.stringify(pageForm)}).then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.tableData = resp.data.list
|
||||
this.pageForm.totalCount = resp.data.totalCount
|
||||
} else {
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
}).always(() => { this.tableLoading = false })
|
||||
},
|
||||
async doSetActivityUser() {
|
||||
const valid = await this.$refs.setForm.validate()
|
||||
doSetActivityUser() {
|
||||
return this.$refs.setForm.validate().then((valid) => {
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
@@ -599,11 +609,11 @@ module.exports = {
|
||||
this.$message.warning("请先指定筛选条件!")
|
||||
return
|
||||
}
|
||||
const confirm = await this.$confirm("是否将符合搜索条件的用户设为活动人员?", "提示", {
|
||||
return this.$confirm("是否将符合搜索条件的用户设为活动人员?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning"
|
||||
})
|
||||
}).then((confirm) => {
|
||||
if (confirm === "confirm") {
|
||||
this.settingLoading = true
|
||||
const pageForm = clone(this.pageForm)
|
||||
@@ -618,11 +628,12 @@ module.exports = {
|
||||
pageForm.activityUserCnd = pageForm.activityUserCnd ? JSON.stringify(pageForm.activityUserCnd) : pageForm.activityUserCnd
|
||||
|
||||
Object.assign(pageForm, this.formData)
|
||||
const resp = await $.post("/platform/activity/basic/scope/doSetActivityUser", {data: JSON.stringify(pageForm)})
|
||||
// data 包含筛选条件及分组信息;成功时 data 为保存后的分组 ID。
|
||||
return $.post("/platform/activity/basic/scope/doSetActivityUser", {data: JSON.stringify(pageForm)}).then((resp) => {
|
||||
if (resp.code === 0) {
|
||||
this.setDialogVisible = false
|
||||
// this.userScopeDialog = false
|
||||
await this.getActivityGroup()
|
||||
this.getActivityGroup()
|
||||
this.doSearch()
|
||||
this.$message.success(resp.msg)
|
||||
this.formData = {
|
||||
@@ -633,13 +644,17 @@ module.exports = {
|
||||
} else {
|
||||
this.$message.error(resp.msg)
|
||||
}
|
||||
this.settingLoading = false
|
||||
this.$emit("update:group_id", resp.data)
|
||||
this.$emit("group_change")
|
||||
if (resp.code === 0) {
|
||||
this.$emit("update:group_id", resp.data)
|
||||
this.$emit("group_change")
|
||||
}
|
||||
}).always(() => { this.settingLoading = false })
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
async getActivityGroup() {
|
||||
const resp = await $.get("/platform/activity/basic/scope/getActivityUserScopeGroup")
|
||||
getActivityGroup() {
|
||||
return $.get("/platform/activity/basic/scope/getActivityUserScopeGroup").then((resp) => {
|
||||
this.activityGroupList = resp.data
|
||||
this.activityGroupList2 = []
|
||||
resp.data.forEach((v) => {
|
||||
@@ -648,37 +663,51 @@ module.exports = {
|
||||
groupName: v.groupName + "范围之外人员"
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
async getRoleListByMenuId() {
|
||||
const {data} = await $.post("/platform/activity/basic/scope/getRoleListByMenuId")
|
||||
this.roleList = data
|
||||
getRoleListByMenuId() {
|
||||
return $.post("/platform/activity/basic/scope/getRoleListByMenuId").then((res) => {
|
||||
this.roleList = res.data
|
||||
})
|
||||
},
|
||||
async getRolesAndUnion() {
|
||||
const {data} = await $.post("/platform/activity/basic/scope/getRolesAndUnion")
|
||||
this.roleData = data
|
||||
getRolesAndUnion() {
|
||||
// 返回角色标识及 unionid,等待身份加载后再确定初始查询范围。
|
||||
return this.$axios.post("/platform/activity/basic/scope/getRolesAndUnion").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.roleData = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
created() {
|
||||
this.listSession()
|
||||
await this.getRolesAndUnion()
|
||||
this.clubOptions = await this.$businessTool.listCLubByRole()
|
||||
if ((this.is_sysadmin || this.is_A06 || this.is_H02) === false && this.is_H04 === true) {
|
||||
this.unions = this.$businessTool.listUnion(this.unionid)
|
||||
this.$set(this.pageForm, "unionId", this.unions[0].id)
|
||||
} else {
|
||||
this.unions = await this.$businessTool.listUnion()
|
||||
}
|
||||
if (this.is_H04 === false && this.is_H02 === true) {
|
||||
if (this.clubOptions.length > 0) {
|
||||
this.getRolesAndUnion().then(() => {
|
||||
// 协会活动入口和会长复用申请页的管理协会接口,避免角色标识缺失时选项来源不一致。
|
||||
return this.isClubActivity || this.is_CLUB_PRESIDENT
|
||||
? this.$axios.post("/platform/club/examine/apply/getClubsByRole").then((res) => res.code === 0 ? res.data : [])
|
||||
: this.$businessTool.listCLubByRole()
|
||||
}).then((clubs) => {
|
||||
this.clubOptions = clubs
|
||||
const onlyUnion = !this.is_sysadmin && !this.is_A06 && !this.is_H02 && !this.is_CLUB_PRESIDENT && !this.isClubActivity && this.is_H04
|
||||
return this.$businessTool.listUnion(onlyUnion ? this.unionid : null).then((unions) => {
|
||||
this.unions = unions
|
||||
if (onlyUnion && unions.length > 0) {
|
||||
this.$set(this.pageForm, "unionId", unions[0].id)
|
||||
}
|
||||
})
|
||||
}).then(() => {
|
||||
if (!this.is_sysadmin && !this.is_A06 && !this.is_H04 && (this.isClubActivity || this.is_H02 || this.is_CLUB_PRESIDENT) && this.clubOptions.length > 0) {
|
||||
this.$set(this.pageForm, "clubId", this.clubOptions[0].id)
|
||||
}
|
||||
}
|
||||
await this.flushUnits()
|
||||
await this.getActivityGroup()
|
||||
this.personTypeOptions = await this.$businessTool.getDictOptions("USER_PERSON_TYPE")
|
||||
this.userStateOptions = await this.$businessTool.getDictOptions("USER_STATE")
|
||||
await this.getRoleListByMenuId()
|
||||
await this.pageData()
|
||||
return this.flushUnits()
|
||||
}).then(() => this.getActivityGroup()).then(() => this.$businessTool.getDictOptions("USER_PERSON_TYPE"))
|
||||
.then((options) => {
|
||||
this.personTypeOptions = options
|
||||
return this.$businessTool.getDictOptions("USER_STATE")
|
||||
}).then((options) => {
|
||||
this.userStateOptions = options
|
||||
return this.getRoleListByMenuId()
|
||||
}).then(() => this.pageData())
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -524,8 +524,8 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<el-row type="flex" justify="end" class="mt20">
|
||||
<el-button type="primary" plain @click="onSave">保存</el-button>
|
||||
<template v-if="formData.isEnrollSystem">
|
||||
<el-button type="primary" plain @click="onSave" :loading="formLoading">保存</el-button>
|
||||
<template v-if="formData.isEnrollSystem && !manageClubEdit">
|
||||
<el-button type="primary" @click="onSubmit" v-if="!taskId">提交</el-button>
|
||||
<el-button type="primary" @click="onFinishTask" v-else>提交</el-button>
|
||||
</template>
|
||||
@@ -536,6 +536,7 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
||||
<drawer-user-scope
|
||||
@group_change="getActivityGroup"
|
||||
ref="drawerUserScope"
|
||||
:activity_type="activity_type"
|
||||
:group_id.sync="formData.groupId"
|
||||
></drawer-user-scope>
|
||||
|
||||
@@ -580,6 +581,8 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
||||
data() {
|
||||
return {
|
||||
|
||||
// 管理员从协会管理页进入时仅保存业务信息,不重新执行申请流程。
|
||||
manageClubEdit: false,
|
||||
bizId: "",
|
||||
taskId: "",
|
||||
activeName: "1",
|
||||
@@ -626,7 +629,7 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
||||
}
|
||||
},
|
||||
components: {
|
||||
"drawer-user-scope": httpVueLoader("/components/module/activity/DrawerUserScope.vue")
|
||||
"drawer-user-scope": httpVueLoader("/components/module/activity/DrawerUserScope.vue?v=20261109-club-scope-2")
|
||||
},
|
||||
computed: {
|
||||
unionUserNumCalcTips() {
|
||||
@@ -680,9 +683,11 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
||||
formData.endPlannedDate = formData.plannedDate[1]
|
||||
formData.plannedDate = null
|
||||
}
|
||||
this.formLoading = true
|
||||
this.$axios.post('/platform/activity/culture/applyActivity/save', {
|
||||
data: JSON.stringify(formData),
|
||||
userData: JSON.stringify(this.userData)
|
||||
userData: JSON.stringify(this.userData),
|
||||
manageClubEdit: this.manageClubEdit
|
||||
}).then(res => {
|
||||
if (res.code === 0) {
|
||||
this.$emit("goBack")
|
||||
@@ -698,6 +703,8 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
||||
// commonUtil.pjaxPush("/platform/activity/culture/infoManage/school")
|
||||
}
|
||||
}
|
||||
}).finally(() => {
|
||||
this.formLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
@@ -1030,7 +1037,8 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
||||
}
|
||||
}
|
||||
},
|
||||
openEdit(row) {
|
||||
openEdit(row, manageClubEdit = false) {
|
||||
this.manageClubEdit = manageClubEdit
|
||||
this.taskId = row.startTaskId
|
||||
this.bizId = row.id
|
||||
this.activeName = "1"
|
||||
|
||||
@@ -103,7 +103,7 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
|
||||
</el-dropdown-item>
|
||||
|
||||
<el-dropdown-item :command="{type:'edit',row}"
|
||||
v-if="row.taskKey === 'startTask' || !row.instanceId"
|
||||
v-if="canManageClub || row.taskKey === 'startTask' || !row.instanceId"
|
||||
:disabled="row.projectTypeCode==50004">
|
||||
编辑
|
||||
</el-dropdown-item>
|
||||
@@ -181,6 +181,12 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
|
||||
"activity-culture-apply-activity": ACTIVITY_CULTURE_APPLY_ACTIVITY,
|
||||
"activity-culture-info-activity": ACTIVITY_CULTURE_INFO_ACTIVITY
|
||||
},
|
||||
computed: {
|
||||
canManageClub() {
|
||||
// 协会管理入口的两类管理员可跨流程节点编辑;其他入口保留申请节点限制。
|
||||
return Number(this.activity_type) === 40003 && (this.$auth.hasRole("SYSADMIN") || this.$auth.hasRole("SCHOOL_UNION_ADMIN"))
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async activityStatusChange(id, isUnseal) {
|
||||
|
||||
@@ -218,7 +224,7 @@ const ACTIVITY_CULTURE_INFO_MANAGE = {
|
||||
},
|
||||
openEdit(row) {
|
||||
this.$refs.guava.edit(() => {
|
||||
this.$refs.applyActivity.openEdit(row)
|
||||
this.$refs.applyActivity.openEdit(row, this.canManageClub)
|
||||
})
|
||||
},
|
||||
onView(row) {
|
||||
|
||||
Reference in New Issue
Block a user