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;
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.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.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.service.ClubUserJoinService;
import com.budwk.app.zhgh.club.vo.ClubUserJoinPageVo;
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.IocBean;
import org.nutz.mvc.annotation.At;
@@ -34,23 +13,14 @@ import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@IocBean
@At("/platform/club/join/clubApproval")
@Ok("json:full")
public class ClubUserJoinApprovalController {
@Inject
private CommonService commonService;
@Inject
private BpmService bpmService;
@Inject
private ClubUserJoinService clubUserJoinService;
@Inject
private Dao dao;
@At("")
@SaCheckPermission("club.join.clubApproval")
@@ -62,106 +32,22 @@ public class ClubUserJoinApprovalController {
@At
@SaCheckPermission("club.join.clubApproval")
public Result pageData(@Valid 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){
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);
return Result.success(clubUserJoinService.pageDataByClubApproval(pageForm, approval));
}
@At
@SaCheckPermission("club.join.clubApproval")
@ApiOperation("审核")
@Aop(TransAop.READ_COMMITTED)
public Result approval(@Valid @Param("approval") 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);
}
}
}
clubUserJoinService.clubApproval(approvalParam);
return Result.success();
}
@At
@SaCheckPermission("club.join.clubApproval")
@ApiOperation("撤回")
@Aop(TransAop.READ_COMMITTED)
public Result revoke(@Valid 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()));
clubUserJoinService.revokeClubApproval(taskId);
return Result.success();
}
@@ -1,10 +1,18 @@
package com.budwk.app.zhgh.club.h5controller;
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 org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.validation.Valid;
@IocBean
@At("/platform/h5/club/audit")
@@ -12,10 +20,40 @@ import org.nutz.mvc.annotation.Ok;
@Api("h5入会审核")
public class H5ClubAuditController {
@Inject
private ClubUserJoinService clubUserJoinService;
@At("")
@Ok("beetl:/platform/zhghh5/club/audit/index.html")
@SaCheckPermission("h5.club.audit")
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;
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.zhgh.club.model.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;
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.zhgh.club.model.ClubUserApply;
import com.budwk.app.zhgh.club.service.ClubUserJoinService;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@IocBean(args = {"refer:dao"})
public class ClubUserJoinServiceImpl extends BaseServiceImpl<ClubUserApply> implements ClubUserJoinService {
@Inject
private BpmService bpmService;
public ClubUserJoinServiceImpl(Dao 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-group>
</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 prop="userName" 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="unitName" 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="申请模式">
<template slot-scope="scope">
<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 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="操作" width="300px">
<el-table-column label="操作" width="160px">
<template slot-scope="{row}">
<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">
@@ -131,6 +131,21 @@ layout("/layouts/platform.html"){
}
},
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) {
this.$refs.guava.public(() => {
this.$refs.infoRef.onOpen(row.id)
@@ -178,10 +193,15 @@ layout("/layouts/platform.html"){
}
},
async created() {
this.unitList = await this.$businessTool.listUnit()
this.unionList = await this.$businessTool.listUnion()
this.clubList = await this.$businessTool.listClub()
this.pageData()
this.tableLoading = true
try {
this.unitList = await this.$businessTool.listUnit()
this.unionList = await this.$businessTool.listUnion()
this.clubList = await this.$businessTool.listClub()
await this.pageData()
} finally {
this.tableLoading = false
}
}
})
</script>
@@ -11,23 +11,17 @@ layout("/layouts/platform_h5.html"){
<div id="app" v-cloak>
<van-sticky>
<van-nav-bar title="入会审核" left-text="返回" left-arrow @click-left="$pjaxReplace('/platform/h5/home')"></van-nav-bar>
<van-search
v-model="pageForm.searchKeyword"
:show-action="showAction"
placeholder="请输入姓名/工号查询"
@search="doSearch"
@cancel="doSearch"
></van-search>
<van-search v-model="pageForm.loginName" placeholder="请输入工号查询" @search="doSearch" @clear="doSearch"></van-search>
<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-menu>
</van-sticky>
<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-card" v-for="row in tableData" :key="row.id">
<div class="table-card" v-for="row in tableData" :key="row.processInstanceTaskId">
<van-cell>
<template slot="title">
<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.sex"></van-cell>
<van-cell title="所属工会" :value="row.unionName"></van-cell>
<van-cell v-if="pageForm.applyType === 1 && row.status" title="入会状态">
<span v-if="row.status == 1">待协会审核</span>
<span v-else-if="row.status == 2">协会不通过</span>
<span v-else-if="row.status == 3">待校工会审核</span>
<span v-else-if="row.status == 4">校工会不通过</span>
<span v-else-if="row.status == 5">审核通过</span>
<van-cell title="申请模式" :value="row.mode ? '加入' : '退出'"></van-cell>
<van-cell title="当前节点" :value="row.processInstanceNodeName"></van-cell>
<van-cell title="审核状态" :value="row.processInstanceTaskStatus === 'ACTIVE' ? '待审核' : '已审核'"></van-cell>
<van-cell v-if="row.processInstanceTaskStatus === 'ACTIVE'" class="table-card-footer">
<van-button size="small" @click="openAudit(row, 'BACK')" type="danger">退回重新申请</van-button>
<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 v-if="pageForm.applyType === 2 && row.exitStatus" title="退会状态">
<span v-if="row.exitStatus == 1">待协会审核</span>
<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 v-if="row.processInstanceTaskStatus === 'COMPLETE' && !row.nextTaskIsComplete" class="table-card-footer">
<van-button size="small" @click="openRevoke(row.processInstanceTaskId)" type="danger">撤回</van-button>
</van-cell>
</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>
</div>
<van-dialog v-model="payedShow" title="是否缴费" show-cancel-button :lazy-render="false" @confirm="doAudit">
<van-radio-group v-model="payed">
<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 v-model="auditShow" title="审核意见" show-cancel-button :lazy-render="false" @confirm="doAudit">
<van-field v-model="approvalOpinion" type="textarea" placeholder="请输入审核意见"></van-field>
</van-dialog>
</div>
@@ -84,19 +62,20 @@ layout("/layouts/platform_h5.html"){
components: {},
data() {
return {
showAction: true,
payedShow: false,
payed: false,
auditShow: false,
approvalOpinion: "",
tableLoading: false,
tableFinished: false,
submitting: false,
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
searchKeyword: ""
loginName: "",
year: new Date().getFullYear(),
auditType: 3
},
applyTypeOptions: [
{ text: "申请加入", value: 1 },
{ text: "申请退会", value: 2 }
],
yearList: [],
auditTypeOptions: [
{ text: "全部", value: 1 },
{ text: "已审核", value: 2 },
@@ -104,54 +83,75 @@ layout("/layouts/platform_h5.html"){
],
typeOptions: [],
tableData: [],
auditResult: false,
auditIdList: []
approvalType: "",
approvalParam: {}
}
},
methods: {
openPayed(row, flag) {
this.auditResult = flag
this.auditIdList = [row.id]
if (this.pageForm.applyType === 1) {
this.payedShow = true
} else {
this.doAudit()
}
openAudit(row, approvalType) {
this.approvalType = approvalType
this.approvalParam = row.approvalParam
this.approvalOpinion = ""
this.auditShow = true
},
async doAudit() {
const confirm = await this.$dialog.confirm({
title: "提示",
message: "您确定要提交审核吗?"
})
if (confirm === "confirm") {
const resp = await this.$axios.post("/platform/club/applyJoin/clubAudit/doAudit", {
ids: JSON.stringify(this.auditIdList),
auditResult: this.auditResult,
auditType: 1,
applyType: this.pageForm.applyType,
payed: this.payed
if (!this.approvalOpinion.trim()) {
this.$toast.fail("请输入审核意见")
this.$nextTick(() => { this.auditShow = true })
return
}
if (this.submitting) return
this.submitting = true
try {
const resp = await this.$axios.post("/platform/h5/club/audit/doAudit", {
approval: JSON.stringify({
...this.approvalParam,
bpmTaskApprovalType: this.approvalType,
approvalOpinion: this.approvalOpinion
})
})
if (resp.code === 0) {
this.$toast.success(resp.msg)
this.auditIdList = []
this.payedShow = false
this.auditShow = false
this.doSearch()
} else {
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() {
this.tableLoading = true
this.pageForm.source = 1
this.$axios.post("/platform/club/applyJoin/clubAudit/pageData", this.pageForm).then((resp) => {
this.$axios.post("/platform/h5/club/audit/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.pageForm.totalCount = resp.data.totalCount
if (this.tableData.length >= this.pageForm.totalCount) {
this.tableFinished = true
} else {
this.tableFinished = this.tableData.length >= this.pageForm.totalCount
if (!this.tableFinished) {
this.pageForm.pageNumber++
}
}).catch(() => {
this.tableFinished = true
this.$toast.fail("审核列表加载失败")
}).finally(() => {
this.tableLoading = false
})
},
@@ -159,12 +159,14 @@ layout("/layouts/platform_h5.html"){
this.pageForm.pageNumber = 1
this.pageForm.totalCount = 0
this.tableData = []
this.tableFinished = false
this.pageData()
}
},
created() {
this.$set(this.pageForm, "applyType", 1)
this.$set(this.pageForm, "auditType", 3)
for (let i = new Date().getFullYear() - 10; i <= new Date().getFullYear(); i++) {
this.yearList.unshift({ value: i, text: i + "年" })
}
this.pageData()
}
})