feat: 移动端-协会审核

This commit is contained in:
2026-09-23 18:27:31 +08:00
parent 486934f3b6
commit a18f77cd68
6 changed files with 290 additions and 199 deletions
@@ -1,32 +1,11 @@
package com.budwk.app.zhgh.club.controller.apply; package com.budwk.app.zhgh.club.controller.apply;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result; import com.budwk.app.base.result.Result;
import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum;
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
import com.budwk.app.bpm.models.BpmProcessInstance;
import com.budwk.app.bpm.models.BpmProcessTask;
import com.budwk.app.bpm.param.BpmTaskApprovalParam; import com.budwk.app.bpm.param.BpmTaskApprovalParam;
import com.budwk.app.bpm.service.BpmService;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.web.controllers.open.commons.service.CommonService;
import com.budwk.app.zhgh.club.model.ClubUser;
import com.budwk.app.zhgh.club.model.ClubUserApply;
import com.budwk.app.zhgh.club.param.ClubUserJoinPageForm; import com.budwk.app.zhgh.club.param.ClubUserJoinPageForm;
import com.budwk.app.zhgh.club.service.ClubUserJoinService; import com.budwk.app.zhgh.club.service.ClubUserJoinService;
import com.budwk.app.zhgh.club.vo.ClubUserJoinPageVo;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.aop.Aop;
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.mvc.annotation.At; import org.nutz.mvc.annotation.At;
@@ -34,23 +13,14 @@ import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param; import org.nutz.mvc.annotation.Param;
import javax.validation.Valid; import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@IocBean @IocBean
@At("/platform/club/join/clubApproval") @At("/platform/club/join/clubApproval")
@Ok("json:full") @Ok("json:full")
public class ClubUserJoinApprovalController { public class ClubUserJoinApprovalController {
@Inject
private CommonService commonService;
@Inject
private BpmService bpmService;
@Inject @Inject
private ClubUserJoinService clubUserJoinService; private ClubUserJoinService clubUserJoinService;
@Inject
private Dao dao;
@At("") @At("")
@SaCheckPermission("club.join.clubApproval") @SaCheckPermission("club.join.clubApproval")
@@ -62,106 +32,22 @@ public class ClubUserJoinApprovalController {
@At @At
@SaCheckPermission("club.join.clubApproval") @SaCheckPermission("club.join.clubApproval")
public Result pageData(@Valid ClubUserJoinPageForm pageForm, boolean approval) { public Result pageData(@Valid ClubUserJoinPageForm pageForm, boolean approval) {
Sql sql = Sqls.create(""" return Result.success(clubUserJoinService.pageDataByClubApproval(pageForm, approval));
SELECT
info.*,
u.loginname AS loginName,
u.username AS userName,
u.sex,
u.unitName,
u.unionName,
club.clubName,
inst.id processInstanceId,
inst.processInstanceNodeId,
inst.processInstanceNodeName,
inst.processInstanceTaskIds,
inst.processInstanceStatus,
task.id processInstanceTaskId,
task.taskStatus processInstanceTaskStatus,
COUNT( nt.id ) OVER ( PARTITION BY task.id ) > 0 AS nextTaskIsComplete
FROM
bpm_process_task task
INNER JOIN bpm_process_node_define nd ON nd.id = task.processTaskNodeId
INNER JOIN bpm_process_instance inst ON inst.id = task.processInstanceId
INNER JOIN club_user_apply info ON info.id = inst.processInstanceBusinessId
LEFT JOIN sys_club club ON club.id = info.clubId
LEFT JOIN vw_user u on u.id = info.userId
LEFT JOIN bpm_process_task nt ON nt.prevTaskId = task.id
AND nt.taskStatus = 'COMPLETE'
$condition
""");
Cnd cnd = Cnd.NEW();
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){
cnd.and(new Static("JSON_CONTAINS( task.assignments, '\"%s\"' )".formatted(SecurityUtil.getUserLoginname())));
}
cnd.and("nd.nodeCode","=",20);
if(approval){
cnd.and("task.taskStatus","=", BpmProcessTaskStatusEnum.COMPLETE);
}else{
cnd.and("task.taskStatus","=",BpmProcessTaskStatusEnum.ACTIVE);
}
cnd.andEX("YEAR(info.applyDate)","=",pageForm.getYear());
cnd.and(Cnd.likeEX("u.userName", pageForm.getUserName()));
cnd.and(Cnd.likeEX("u.loginName", pageForm.getLoginName()));
cnd.andEX("u.unionId","=",pageForm.getUnionId());
cnd.andEX("u.unitId","=",pageForm.getUnitId());
cnd.andEX("info.clubId","=",pageForm.getClubId());
sql.setCondition(cnd);
Pagination<ClubUserJoinPageVo> pageVO = clubUserJoinService.listPageVO(pageForm, sql, ClubUserJoinPageVo.class);
return Result.success(pageVO);
} }
@At @At
@SaCheckPermission("club.join.clubApproval") @SaCheckPermission("club.join.clubApproval")
@ApiOperation("审核") @ApiOperation("审核")
@Aop(TransAop.READ_COMMITTED)
public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam){ public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam){
// approvalParam.getBpmTaskApprovalTypeEnum(); clubUserJoinService.clubApproval(approvalParam);
// Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
// List<String> assignments = new ArrayList<>();
// if(approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)){
// String approvalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_CLUB_ADMIN);
// assignments.add(approvalLoginName);
// }
// bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, assignments);
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
List<String> assignments = new ArrayList<>();
bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, assignments);
if (approvalParam.getBpmTaskApprovalTypeEnum() == BpmTaskApprovalTypeEnum.PASS) {
String processInstanceBusinessId = approvalParam.getProcessInstanceBusinessId();
ClubUserApply clubUserApply = dao.fetch(ClubUserApply.class, processInstanceBusinessId);
if (clubUserApply != null) {
ClubUser existUser = dao.fetch(ClubUser.class, Cnd.where("userId", "=", clubUserApply.getUserId()).and("clubId", "=", clubUserApply.getClubId()));
if (existUser == null) {
ClubUser clubUser = BeanUtil.copyProperties(clubUserApply, ClubUser.class);
dao.insert(clubUser);
}
}
}
return Result.success(); return Result.success();
} }
@At @At
@SaCheckPermission("club.join.clubApproval") @SaCheckPermission("club.join.clubApproval")
@ApiOperation("撤回") @ApiOperation("撤回")
@Aop(TransAop.READ_COMMITTED)
public Result revoke(@Valid String taskId){ public Result revoke(@Valid String taskId){
bpmService.revokeTask(taskId); clubUserJoinService.revokeClubApproval(taskId);
BpmProcessTask task = dao.fetch(BpmProcessTask.class, taskId);
String processInstanceId = task.getProcessInstanceId();
BpmProcessInstance processInstance = dao.fetch(BpmProcessInstance.class, processInstanceId);
String businessId = processInstance.getProcessInstanceBusinessId();
ClubUserApply clubUserApply = dao.fetch(ClubUserApply.class, businessId);
dao.clear(ClubUser.class, Cnd.where(ClubUser::getUserId, "=", clubUserApply.getUserId())
.and(ClubUser::getClubId, "=", clubUserApply.getClubId()));
return Result.success(); return Result.success();
} }
@@ -1,10 +1,18 @@
package com.budwk.app.zhgh.club.h5controller; package com.budwk.app.zhgh.club.h5controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.budwk.app.base.result.Result;
import com.budwk.app.bpm.param.BpmTaskApprovalParam;
import com.budwk.app.zhgh.club.param.ClubUserJoinPageForm;
import com.budwk.app.zhgh.club.service.ClubUserJoinService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.validation.Valid;
@IocBean @IocBean
@At("/platform/h5/club/audit") @At("/platform/h5/club/audit")
@@ -12,10 +20,40 @@ import org.nutz.mvc.annotation.Ok;
@Api("h5入会审核") @Api("h5入会审核")
public class H5ClubAuditController { public class H5ClubAuditController {
@Inject
private ClubUserJoinService clubUserJoinService;
@At("") @At("")
@Ok("beetl:/platform/zhghh5/club/audit/index.html") @Ok("beetl:/platform/zhghh5/club/audit/index.html")
@SaCheckPermission("h5.club.audit") @SaCheckPermission("h5.club.audit")
public void index() { public void index() {
} }
@At
@SaCheckPermission("h5.club.audit")
public Result pageData(@Valid ClubUserJoinPageForm pageForm, boolean approval, Integer auditType) {
Boolean approvalStatus = approval;
if (Integer.valueOf(1).equals(auditType)) {
approvalStatus = null;
} else if (auditType != null) {
approvalStatus = Integer.valueOf(2).equals(auditType);
}
return Result.success(clubUserJoinService.pageDataByClubApproval(pageForm, approvalStatus));
}
@At
@SaCheckPermission("h5.club.audit")
public Result doAudit(@Valid @Param("approval") BpmTaskApprovalParam approvalParam) {
clubUserJoinService.clubApproval(approvalParam);
return Result.success();
}
@At
@SaCheckPermission("h5.club.audit")
public Result revoke(@Valid String taskId){
clubUserJoinService.revokeClubApproval(taskId);
return Result.success();
}
} }
@@ -1,7 +1,19 @@
package com.budwk.app.zhgh.club.service; package com.budwk.app.zhgh.club.service;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.bpm.param.BpmTaskApprovalParam;
import com.budwk.app.zhgh.club.param.ClubUserJoinPageForm;
import com.budwk.app.zhgh.club.vo.ClubUserJoinPageVo;
import com.budwk.app.base.service.BaseService; import com.budwk.app.base.service.BaseService;
import com.budwk.app.zhgh.club.model.ClubUserApply; import com.budwk.app.zhgh.club.model.ClubUserApply;
public interface ClubUserJoinService extends BaseService<ClubUserApply> { public interface ClubUserJoinService extends BaseService<ClubUserApply> {
Pagination<ClubUserJoinPageVo> pageDataByClubApproval(ClubUserJoinPageForm pageForm, boolean approval);
Pagination<ClubUserJoinPageVo> pageDataByClubApproval(ClubUserJoinPageForm pageForm, Boolean approval);
void clubApproval(BpmTaskApprovalParam approvalParam);
void revokeClubApproval(String taskId);
} }
@@ -1,14 +1,147 @@
package com.budwk.app.zhgh.club.service.impl; package com.budwk.app.zhgh.club.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum;
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
import com.budwk.app.bpm.models.BpmProcessInstance;
import com.budwk.app.bpm.models.BpmProcessTask;
import com.budwk.app.bpm.param.BpmTaskApprovalParam;
import com.budwk.app.bpm.service.BpmService;
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.param.ClubUserJoinPageForm;
import com.budwk.app.zhgh.club.vo.ClubUserJoinPageVo;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.zhgh.club.model.ClubUserApply; import com.budwk.app.zhgh.club.model.ClubUserApply;
import com.budwk.app.zhgh.club.service.ClubUserJoinService; import com.budwk.app.zhgh.club.service.ClubUserJoinService;
import org.nutz.dao.Dao; import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@IocBean(args = {"refer:dao"}) @IocBean(args = {"refer:dao"})
public class ClubUserJoinServiceImpl extends BaseServiceImpl<ClubUserApply> implements ClubUserJoinService { public class ClubUserJoinServiceImpl extends BaseServiceImpl<ClubUserApply> implements ClubUserJoinService {
@Inject
private BpmService bpmService;
public ClubUserJoinServiceImpl(Dao dao) { public ClubUserJoinServiceImpl(Dao dao) {
super(dao); super(dao);
} }
@Override
public Pagination<ClubUserJoinPageVo> pageDataByClubApproval(ClubUserJoinPageForm pageForm, boolean approval) {
return pageDataByClubApproval(pageForm, Boolean.valueOf(approval));
}
@Override
public Pagination<ClubUserJoinPageVo> pageDataByClubApproval(ClubUserJoinPageForm pageForm, Boolean approval) {
Sql sql = Sqls.create("""
SELECT
info.*,
u.loginname AS loginName,
u.username AS userName,
u.sex,
u.unitName,
u.unionName,
club.clubName,
inst.id processInstanceId,
inst.processInstanceNodeId,
inst.processInstanceNodeName,
inst.processInstanceTaskIds,
inst.processInstanceStatus,
task.id processInstanceTaskId,
task.taskStatus processInstanceTaskStatus,
COUNT( nt.id ) OVER ( PARTITION BY task.id ) > 0 AS nextTaskIsComplete
FROM
bpm_process_task task
INNER JOIN bpm_process_node_define nd ON nd.id = task.processTaskNodeId
INNER JOIN bpm_process_instance inst ON inst.id = task.processInstanceId
INNER JOIN club_user_apply info ON info.id = inst.processInstanceBusinessId
LEFT JOIN sys_club club ON club.id = info.clubId
LEFT JOIN vw_user u on u.id = info.userId
LEFT JOIN bpm_process_task nt ON nt.prevTaskId = task.id
AND nt.taskStatus = 'COMPLETE'
$condition
""");
Cnd cnd = Cnd.NEW();
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){
cnd.and(new Static("JSON_CONTAINS( task.assignments, '\"%s\"' )".formatted(SecurityUtil.getUserLoginname())));
}
cnd.and("nd.nodeCode","=",20);
if(approval == null){
cnd.and("task.taskStatus", "in", List.of(BpmProcessTaskStatusEnum.ACTIVE.name(), BpmProcessTaskStatusEnum.COMPLETE.name()));
}else if(approval){
cnd.and("task.taskStatus","=", BpmProcessTaskStatusEnum.COMPLETE);
}else{
cnd.and("task.taskStatus","=",BpmProcessTaskStatusEnum.ACTIVE);
}
cnd.andEX("YEAR(info.applyDate)","=",pageForm.getYear());
cnd.and(Cnd.likeEX("u.userName", pageForm.getUserName()));
cnd.and(Cnd.likeEX("u.loginName", pageForm.getLoginName()));
cnd.andEX("u.unionId","=",pageForm.getUnionId());
cnd.andEX("u.unitId","=",pageForm.getUnitId());
cnd.andEX("info.clubId","=",pageForm.getClubId());
sql.setCondition(cnd);
return listPageVO(pageForm, sql, ClubUserJoinPageVo.class);
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void clubApproval(BpmTaskApprovalParam approvalParam) {
// approvalParam.getBpmTaskApprovalTypeEnum();
// Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
// List<String> assignments = new ArrayList<>();
// if(approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)){
// String approvalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_CLUB_ADMIN);
// assignments.add(approvalLoginName);
// }
// bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, assignments);
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
List<String> assignments = new ArrayList<>();
bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, assignments);
if (approvalParam.getBpmTaskApprovalTypeEnum() == BpmTaskApprovalTypeEnum.PASS) {
String processInstanceBusinessId = approvalParam.getProcessInstanceBusinessId();
ClubUserApply clubUserApply = dao().fetch(ClubUserApply.class, processInstanceBusinessId);
if (clubUserApply != null) {
ClubUser existUser = dao().fetch(ClubUser.class, Cnd.where("userId", "=", clubUserApply.getUserId()).and("clubId", "=", clubUserApply.getClubId()));
if (existUser == null) {
ClubUser clubUser = BeanUtil.copyProperties(clubUserApply, ClubUser.class);
dao().insert(clubUser);
}
}
}
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void revokeClubApproval(String taskId) {
bpmService.revokeTask(taskId);
BpmProcessTask task = dao().fetch(BpmProcessTask.class, taskId);
String processInstanceId = task.getProcessInstanceId();
BpmProcessInstance processInstance = dao().fetch(BpmProcessInstance.class, processInstanceId);
String businessId = processInstance.getProcessInstanceBusinessId();
ClubUserApply clubUserApply = dao().fetch(ClubUserApply.class, businessId);
dao().clear(ClubUser.class, Cnd.where(ClubUser::getUserId, "=", clubUserApply.getUserId())
.and(ClubUser::getClubId, "=", clubUserApply.getClubId()));
}
} }
@@ -46,14 +46,14 @@ layout("/layouts/platform.html"){
<el-radio-button :label="false">未审核</el-radio-button> <el-radio-button :label="false">未审核</el-radio-button>
</el-radio-group> </el-radio-group>
</table-tool> </table-tool>
<el-table :data="tableData" @sort-change="pageOrder"> <el-table v-loading="tableLoading" element-loading-text="加载中..." :data="tableData" @sort-change="pageOrder">
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column> <el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column> <el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="loginName" label="工号"></el-table-column> <el-table-column prop="loginName" label="工号"></el-table-column>
<el-table-column prop="sex" label="性别"></el-table-column> <el-table-column prop="sex" label="性别"></el-table-column>
<el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column> <el-table-column prop="unitName" label="单位" show-overflow-tooltip></el-table-column>
<el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column> <el-table-column prop="unionName" label="分工会" show-overflow-tooltip></el-table-column>
<el-table-column prop="clubName" label="申请协会" show-overflow-tooltip></el-table-column> <el-table-column prop="clubName" label="申请协会" min-width="180px" show-overflow-tooltip></el-table-column>
<el-table-column prop="mode" label="申请模式"> <el-table-column prop="mode" label="申请模式">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag size="mini" v-if="scope.row.mode" type="success">加入</el-tag> <el-tag size="mini" v-if="scope.row.mode" type="success">加入</el-tag>
@@ -62,7 +62,7 @@ layout("/layouts/platform.html"){
</el-table-column> </el-table-column>
<el-table-column prop="applyDate" label="申请时间" show-overflow-tooltip></el-table-column> <el-table-column prop="applyDate" label="申请时间" show-overflow-tooltip></el-table-column>
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column> <el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
<el-table-column label="操作" width="300px"> <el-table-column label="操作" width="160px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button> <el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
<el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary"> <el-button v-if="row.processInstanceTaskStatus==='ACTIVE'" @click="openApproval(row)" size="mini" type="primary">
@@ -131,6 +131,21 @@ layout("/layouts/platform.html"){
} }
}, },
methods: { methods: {
pageData(url = null, data = null) {
this.tableLoading = true
return this.$axios.post(url || loc() + "/pageData", data || this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
} else {
this.$message.error(res.msg)
}
}).catch(() => {
this.$message.error("审核列表加载失败")
}).finally(() => {
this.tableLoading = false
})
},
openView(row) { openView(row) {
this.$refs.guava.public(() => { this.$refs.guava.public(() => {
this.$refs.infoRef.onOpen(row.id) this.$refs.infoRef.onOpen(row.id)
@@ -178,10 +193,15 @@ layout("/layouts/platform.html"){
} }
}, },
async created() { async created() {
this.unitList = await this.$businessTool.listUnit() this.tableLoading = true
this.unionList = await this.$businessTool.listUnion() try {
this.clubList = await this.$businessTool.listClub() this.unitList = await this.$businessTool.listUnit()
this.pageData() this.unionList = await this.$businessTool.listUnion()
this.clubList = await this.$businessTool.listClub()
await this.pageData()
} finally {
this.tableLoading = false
}
} }
}) })
</script> </script>
@@ -11,23 +11,17 @@ layout("/layouts/platform_h5.html"){
<div id="app" v-cloak> <div id="app" v-cloak>
<van-sticky> <van-sticky>
<van-nav-bar title="入会审核" left-text="返回" left-arrow @click-left="$pjaxReplace('/platform/h5/home')"></van-nav-bar> <van-nav-bar title="入会审核" left-text="返回" left-arrow @click-left="$pjaxReplace('/platform/h5/home')"></van-nav-bar>
<van-search <van-search v-model="pageForm.loginName" placeholder="请输入工号查询" @search="doSearch" @clear="doSearch"></van-search>
v-model="pageForm.searchKeyword"
:show-action="showAction"
placeholder="请输入姓名/工号查询"
@search="doSearch"
@cancel="doSearch"
></van-search>
<van-dropdown-menu> <van-dropdown-menu>
<van-dropdown-item v-model="pageForm.applyType" :options="applyTypeOptions" @change="doSearch"></van-dropdown-item> <van-dropdown-item v-model="pageForm.year" :options="yearList" @change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.auditType" :options="auditTypeOptions" @change="doSearch"></van-dropdown-item> <van-dropdown-item v-model="pageForm.auditType" :options="auditTypeOptions" @change="doSearch"></van-dropdown-item>
</van-dropdown-menu> </van-dropdown-menu>
</van-sticky> </van-sticky>
<div> <div>
<van-list v-if="tableData.length>0" v-model="tableLoading" :finished="tableFinished" finished-text="没有更多了" @load="pageData"> <van-list v-if="tableData.length>0 || tableLoading" v-model="tableLoading" :immediate-check="false" :finished="tableFinished" loading-text="加载中..." finished-text="没有更多了" @load="pageData">
<div class="table-list"> <div class="table-list">
<div class="table-card" v-for="row in tableData" :key="row.id"> <div class="table-card" v-for="row in tableData" :key="row.processInstanceTaskId">
<van-cell> <van-cell>
<template slot="title"> <template slot="title">
<div class="flex-align"> <div class="flex-align">
@@ -39,23 +33,16 @@ layout("/layouts/platform_h5.html"){
<van-cell title="工号" :value="row.loginName"></van-cell> <van-cell title="工号" :value="row.loginName"></van-cell>
<van-cell title="性别" :value="row.sex"></van-cell> <van-cell title="性别" :value="row.sex"></van-cell>
<van-cell title="所属工会" :value="row.unionName"></van-cell> <van-cell title="所属工会" :value="row.unionName"></van-cell>
<van-cell v-if="pageForm.applyType === 1 && row.status" title="入会状态"> <van-cell title="申请模式" :value="row.mode ? '加入' : '退出'"></van-cell>
<span v-if="row.status == 1">待协会审核</span> <van-cell title="当前节点" :value="row.processInstanceNodeName"></van-cell>
<span v-else-if="row.status == 2">协会不通过</span> <van-cell title="审核状态" :value="row.processInstanceTaskStatus === 'ACTIVE' ? '待审核' : '已审核'"></van-cell>
<span v-else-if="row.status == 3">待校工会审核</span> <van-cell v-if="row.processInstanceTaskStatus === 'ACTIVE'" class="table-card-footer">
<span v-else-if="row.status == 4">校工会不通过</span> <van-button size="small" @click="openAudit(row, 'BACK')" type="danger">退回重新申请</van-button>
<span v-else-if="row.status == 5">审核通过</span> <van-button size="small" @click="openAudit(row, 'REJECT')" type="danger">拒绝申请</van-button>
<van-button size="small" @click="openAudit(row, 'PASS')" type="info">同意申请</van-button>
</van-cell> </van-cell>
<van-cell v-if="pageForm.applyType === 2 && row.exitStatus" title="退会状态"> <van-cell v-if="row.processInstanceTaskStatus === 'COMPLETE' && !row.nextTaskIsComplete" class="table-card-footer">
<span v-if="row.exitStatus == 1">待协会审核</span> <van-button size="small" @click="openRevoke(row.processInstanceTaskId)" type="danger">撤回</van-button>
<span v-else-if="row.exitStatus == 2">协会不通过</span>
<span v-else-if="row.exitStatus == 3">待校工会审核</span>
<span v-else-if="row.exitStatus == 4">校工会不通过</span>
<span v-else-if="row.exitStatus == 5">审核通过</span>
</van-cell>
<van-cell v-if="pageForm.auditType !== 2 && (row.status === 1 || row.exitStatus === 1)" class="table-card-footer">
<van-button size="small" @click="openPayed(row, false)" type="danger">不通过</van-button>
<van-button size="small" @click="openPayed(row, true)" type="info">通过</van-button>
</van-cell> </van-cell>
</div> </div>
</div> </div>
@@ -63,17 +50,8 @@ layout("/layouts/platform_h5.html"){
<van-empty v-else image="/assets/platform/plugins/vant-green/images/nodata/nodata.png" description="暂无数据"></van-empty> <van-empty v-else image="/assets/platform/plugins/vant-green/images/nodata/nodata.png" description="暂无数据"></van-empty>
</div> </div>
<van-dialog v-model="payedShow" title="是否缴费" show-cancel-button :lazy-render="false" @confirm="doAudit"> <van-dialog v-model="auditShow" title="审核意见" show-cancel-button :lazy-render="false" @confirm="doAudit">
<van-radio-group v-model="payed"> <van-field v-model="approvalOpinion" type="textarea" placeholder="请输入审核意见"></van-field>
<van-cell-group>
<van-cell title="已缴费" clickable @click="payed = true">
<van-radio slot="right-icon" :name="true"></van-radio>
</van-cell>
<van-cell title="未缴费" clickable @click="payed = false">
<van-radio slot="right-icon" :name="false"></van-radio>
</van-cell>
</van-cell-group>
</van-radio-group>
</van-dialog> </van-dialog>
</div> </div>
@@ -84,19 +62,20 @@ layout("/layouts/platform_h5.html"){
components: {}, components: {},
data() { data() {
return { return {
showAction: true, auditShow: false,
payedShow: false, approvalOpinion: "",
payed: false, tableLoading: false,
tableFinished: false,
submitting: false,
pageForm: { pageForm: {
pageNumber: 1, pageNumber: 1,
pageSize: 10, pageSize: 10,
totalCount: 0, totalCount: 0,
searchKeyword: "" loginName: "",
year: new Date().getFullYear(),
auditType: 3
}, },
applyTypeOptions: [ yearList: [],
{ text: "申请加入", value: 1 },
{ text: "申请退会", value: 2 }
],
auditTypeOptions: [ auditTypeOptions: [
{ text: "全部", value: 1 }, { text: "全部", value: 1 },
{ text: "已审核", value: 2 }, { text: "已审核", value: 2 },
@@ -104,54 +83,75 @@ layout("/layouts/platform_h5.html"){
], ],
typeOptions: [], typeOptions: [],
tableData: [], tableData: [],
auditResult: false, approvalType: "",
auditIdList: [] approvalParam: {}
} }
}, },
methods: { methods: {
openPayed(row, flag) { openAudit(row, approvalType) {
this.auditResult = flag this.approvalType = approvalType
this.auditIdList = [row.id] this.approvalParam = row.approvalParam
if (this.pageForm.applyType === 1) { this.approvalOpinion = ""
this.payedShow = true this.auditShow = true
} else {
this.doAudit()
}
}, },
async doAudit() { async doAudit() {
const confirm = await this.$dialog.confirm({ if (!this.approvalOpinion.trim()) {
title: "提示", this.$toast.fail("请输入审核意见")
message: "您确定要提交审核吗?" this.$nextTick(() => { this.auditShow = true })
}) return
if (confirm === "confirm") { }
const resp = await this.$axios.post("/platform/club/applyJoin/clubAudit/doAudit", { if (this.submitting) return
ids: JSON.stringify(this.auditIdList), this.submitting = true
auditResult: this.auditResult, try {
auditType: 1, const resp = await this.$axios.post("/platform/h5/club/audit/doAudit", {
applyType: this.pageForm.applyType, approval: JSON.stringify({
payed: this.payed ...this.approvalParam,
bpmTaskApprovalType: this.approvalType,
approvalOpinion: this.approvalOpinion
})
}) })
if (resp.code === 0) { if (resp.code === 0) {
this.$toast.success(resp.msg) this.$toast.success(resp.msg)
this.auditIdList = [] this.auditShow = false
this.payedShow = false
this.doSearch() this.doSearch()
} else { } else {
this.$toast(resp.msg) this.$toast(resp.msg)
} }
} catch (error) {
this.$toast.fail("审核提交失败")
} finally {
this.submitting = false
} }
}, },
openRevoke(taskId) {
this.$dialog.confirm({ title: "提示", message: "您确定要撤回吗?" }).then(async () => {
const resp = await this.$axios.post("/platform/h5/club/audit/revoke", { taskId })
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.doSearch()
} else {
this.$toast(resp.msg)
}
}).catch(() => {})
},
pageData() { pageData() {
this.tableLoading = true this.tableLoading = true
this.pageForm.source = 1 this.$axios.post("/platform/h5/club/audit/pageData", this.pageForm).then((resp) => {
this.$axios.post("/platform/club/applyJoin/clubAudit/pageData", this.pageForm).then((resp) => { if (resp.code !== 0) {
this.tableFinished = true
this.$toast(resp.msg)
return
}
this.tableData = this.tableData.concat(resp.data.list) this.tableData = this.tableData.concat(resp.data.list)
this.pageForm.totalCount = resp.data.totalCount this.pageForm.totalCount = resp.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) { this.tableFinished = this.tableData.length >= this.pageForm.totalCount
this.tableFinished = true if (!this.tableFinished) {
} else {
this.pageForm.pageNumber++ this.pageForm.pageNumber++
} }
}).catch(() => {
this.tableFinished = true
this.$toast.fail("审核列表加载失败")
}).finally(() => {
this.tableLoading = false this.tableLoading = false
}) })
}, },
@@ -159,12 +159,14 @@ layout("/layouts/platform_h5.html"){
this.pageForm.pageNumber = 1 this.pageForm.pageNumber = 1
this.pageForm.totalCount = 0 this.pageForm.totalCount = 0
this.tableData = [] this.tableData = []
this.tableFinished = false
this.pageData() this.pageData()
} }
}, },
created() { created() {
this.$set(this.pageForm, "applyType", 1) for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.$set(this.pageForm, "auditType", 3) this.yearList.unshift({ value: i, text: i + "年" })
}
this.pageData() this.pageData()
} }
}) })