commit
This commit is contained in:
+9
-1
@@ -1,12 +1,12 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.evaluation.controller;
|
package com.budwk.app.zhgh.dayofficework.evaluation.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.tree.Tree;
|
||||||
import cn.hutool.core.lang.tree.TreeNode;
|
import cn.hutool.core.lang.tree.TreeNode;
|
||||||
import cn.hutool.core.lang.tree.TreeUtil;
|
import cn.hutool.core.lang.tree.TreeUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.budwk.app.base.annotation.SLog;
|
import com.budwk.app.base.annotation.SLog;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
@@ -150,4 +150,12 @@ public class EvaluateActivityController {
|
|||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SaCheckLogin
|
||||||
|
@ApiOperation("根据年查询荣誉申请事项")
|
||||||
|
public Result listEvaluateActivityByYear(Integer year) {
|
||||||
|
List<EvaluateActivity> list = dao.query(EvaluateActivity.class, Cnd.NEW().andEX(EvaluateActivity::getYear,"=",year));
|
||||||
|
return Result.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+38
-17
@@ -1,16 +1,18 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.evaluation.controller;
|
package com.budwk.app.zhgh.dayofficework.evaluation.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.lang.Dict;
|
||||||
import com.budwk.app.base.annotation.SLog;
|
import com.budwk.app.base.annotation.SLog;
|
||||||
import com.budwk.app.base.constant.BpmProcessConstant;
|
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
|
||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.bpm.service.BpmService;
|
import com.budwk.app.flow.constant.FlowConst;
|
||||||
import com.budwk.app.sys.models.Sys_user_role;
|
import com.budwk.app.flow.engine.FlowEngine;
|
||||||
import com.budwk.app.web.controllers.open.commons.service.CommonService;
|
import com.budwk.app.flow.entity.ProcessInstance;
|
||||||
|
import com.budwk.app.flow.entity.ProcessTask;
|
||||||
|
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||||
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateActivityService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateActivityService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
||||||
@@ -45,9 +47,9 @@ public class EvaluateApplyController {
|
|||||||
@Inject
|
@Inject
|
||||||
private EvaluateService evaluateService;
|
private EvaluateService evaluateService;
|
||||||
@Inject
|
@Inject
|
||||||
private BpmService bpmService;
|
private FlowEngine flowEngine;
|
||||||
@Inject
|
@Inject
|
||||||
private CommonService commonService;
|
private FlowCommonService flowCommonService;
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@Ok("beetl:/platform/zhgh/dayofficework/evaluation/apply/index.html")
|
@Ok("beetl:/platform/zhgh/dayofficework/evaluation/apply/index.html")
|
||||||
@@ -96,12 +98,25 @@ public class EvaluateApplyController {
|
|||||||
@At
|
@At
|
||||||
@SaCheckPermission("evaluation.apply")
|
@SaCheckPermission("evaluation.apply")
|
||||||
@ApiOperation("保存")
|
@ApiOperation("保存")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
|
||||||
@SLog(tag = "评优评先申请", msg = "保存申请")
|
@SLog(tag = "评优评先申请", msg = "保存申请")
|
||||||
public Result save(@Param("evaluateApply") EvaluateApply evaluateApply) {
|
public Result save(@Param("data") EvaluateApply evaluateApply) {
|
||||||
evaluateApply.setApplyDateTime(new Date());
|
evaluateApply.setApplyDateTime(new Date());
|
||||||
evaluateService.insertOrUpdate(evaluateApply);
|
evaluateService.insertOrUpdate(evaluateApply);
|
||||||
bpmService.startSaveProcessInstance(BpmProcessConstant.PERSON_EVALUATE.name(), evaluateApply.getUserName() + "的申请", evaluateApply.getId(), null);
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SaCheckPermission("evaluation.apply")
|
||||||
|
@ApiOperation("重新提交申请")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog( tag = "评优评先申请", msg = "重新提交申请")
|
||||||
|
public Result submitAgain(@Param("data") EvaluateApply evaluateApply, @Param("taskId") Long taskId) {
|
||||||
|
evaluateService.insertOrUpdate(evaluateApply);
|
||||||
|
|
||||||
|
Dict dict = Dict.create();
|
||||||
|
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
|
||||||
|
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
|
||||||
|
flowCommonService.executeTask(dict);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,15 +125,21 @@ public class EvaluateApplyController {
|
|||||||
@ApiOperation("提交")
|
@ApiOperation("提交")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog(tag = "评优评先申请", msg = "提交申请")
|
@SLog(tag = "评优评先申请", msg = "提交申请")
|
||||||
public Result submit(@Param("evaluateApply") EvaluateApply evaluateApply) {
|
public Result submit(@Param("data") EvaluateApply evaluateApply) {
|
||||||
evaluateApply.setApplyDateTime(new Date());
|
evaluateApply.setApplyDateTime(new Date());
|
||||||
evaluateService.insertOrUpdate(evaluateApply);
|
evaluateService.insertOrUpdate(evaluateApply);
|
||||||
//查询分工会审批人工号
|
|
||||||
String branchUnionApprovalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.BRANCH_UNION_CHAIRMAN, Cnd.where(Sys_user_role::getUnionId, "=", evaluateApply.getUnionId()));
|
// 开启流程实例
|
||||||
if (StrUtil.isBlank(branchUnionApprovalLoginName)) {
|
Dict args = Dict.create();
|
||||||
return Result.error("分工会未配置审批人,请联系校工会!");
|
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||||
|
args.set(FlowConst.FORM_DATA, evaluateApply);
|
||||||
|
ProcessInstance instance = flowEngine.startProcessInstanceByKey("PYPX", evaluateApply.getId(), SecurityUtil.getUserId(), args);
|
||||||
|
|
||||||
|
// 自动完成第一个申请任务
|
||||||
|
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
||||||
|
for (ProcessTask task : doingTaskList) {
|
||||||
|
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
|
||||||
}
|
}
|
||||||
bpmService.startSubmitProcessInstance(BpmProcessConstant.PERSON_EVALUATE.name(), evaluateApply.getUserName() + "的申请", evaluateApply.getId(), List.of(branchUnionApprovalLoginName), null);
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+37
-76
@@ -1,44 +1,29 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.evaluation.controller;
|
package com.budwk.app.zhgh.dayofficework.evaluation.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.budwk.app.base.annotation.SLog;
|
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
|
||||||
import com.budwk.app.base.page.Pagination;
|
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.base.utils.PageUtil;
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum;
|
|
||||||
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
|
|
||||||
import com.budwk.app.bpm.param.BpmTaskApprovalParam;
|
|
||||||
import com.budwk.app.bpm.service.BpmService;
|
import com.budwk.app.bpm.service.BpmService;
|
||||||
import com.budwk.app.sys.models.Sys_user_role;
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.web.controllers.open.commons.service.CommonService;
|
import com.budwk.app.web.controllers.open.commons.service.CommonService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluateApplyPageVO;
|
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
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.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
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.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;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
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.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@IocBean
|
@IocBean
|
||||||
@At("/platform/evaluate/branchUnionApproval")
|
@At("/platform/evaluate/branchUnionApproval")
|
||||||
@@ -65,87 +50,63 @@ public class EvaluateBranchUnionApprovalController {
|
|||||||
@SaCheckPermission("evaluation.branchUnionApproval")
|
@SaCheckPermission("evaluation.branchUnionApproval")
|
||||||
@ApiOperation("数据列表")
|
@ApiOperation("数据列表")
|
||||||
@Ok("json")
|
@Ok("json")
|
||||||
public Result pageData(@Valid EvaluatePageForm pageForm, boolean approval){
|
public Result pageData(@Valid EvaluatePageForm pageForm, Boolean approval){
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
ea.name AS evaluateName,
|
ea.name AS evaluateName,
|
||||||
hb.name AS honorName,
|
hb.name AS honorName,
|
||||||
bs.name as honorTypeName,
|
bs.name as honorTypeName,
|
||||||
inst.id processInstanceId,
|
ins.id AS instanceId,
|
||||||
inst.processInstanceNodeId,
|
ins.businessNo,
|
||||||
inst.processInstanceNodeName,
|
ins.state instanceState,
|
||||||
inst.processInstanceTaskIds,
|
ins.variable instanceVariable,
|
||||||
inst.processInstanceStatus,
|
ins.processDefineId instanceProcessDefineId,
|
||||||
task.id processInstanceTaskId,
|
t.id taskId,
|
||||||
task.taskStatus processInstanceTaskStatus,
|
t.taskName AS taskKey,
|
||||||
COUNT(nt.id) OVER (PARTITION BY task.id) > 0 AS nextTaskIsComplete
|
t.displayName taskName,
|
||||||
|
t.taskType,
|
||||||
|
t.performType taskPerformType,
|
||||||
|
t.taskState,
|
||||||
|
t.finishTime,
|
||||||
|
t.taskParentId,
|
||||||
|
t.variable taskVariable,
|
||||||
|
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
|
||||||
|
IF(rt.id IS NOT NULL, 1, 0) AS canRevoke
|
||||||
FROM
|
FROM
|
||||||
bpm_process_task task
|
wf_process_task t
|
||||||
INNER JOIN bpm_process_node_define nd ON nd.id = task.processTaskNodeId
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
INNER JOIN bpm_process_instance inst ON inst.id = task.processInstanceId
|
LEFT JOIN evaluate_apply info ON info.id = ins.businessNo
|
||||||
INNER JOIN evaluate_apply info ON info.id = inst.processInstanceBusinessId
|
|
||||||
LEFT JOIN evaluate_activity ea ON ea.id = info.evaluateId
|
LEFT JOIN evaluate_activity ea ON ea.id = info.evaluateId
|
||||||
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
||||||
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
||||||
LEFT JOIN bpm_process_task nt ON nt.prevTaskId = task.id AND nt.taskStatus = 'COMPLETE'
|
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||||
|
LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10
|
||||||
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){
|
cnd.and("t.taskName", "=", "3bdaa29d-e5eb-4e3e-b7f1-14d03bedd078");
|
||||||
cnd.and(new Static("JSON_CONTAINS( task.assignments, '\"%s\"' )".formatted(SecurityUtil.getUserLoginname())));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
if (approval) {
|
||||||
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
} else {
|
||||||
|
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||||
}
|
}
|
||||||
|
if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||||
cnd.and("nd.nodeCode","=",20);
|
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||||
if(approval){
|
|
||||||
cnd.and("task.taskStatus","=", BpmProcessTaskStatusEnum.COMPLETE);
|
|
||||||
}else{
|
|
||||||
cnd.and("task.taskStatus","=",BpmProcessTaskStatusEnum.ACTIVE);
|
|
||||||
}
|
}
|
||||||
|
cnd.andEX("YEAR(info.applyDateTime)", "=", pageForm.getYear());
|
||||||
cnd.andEX("eva.year", "=", pageForm.getYear());
|
cnd.groupBy("t.id");
|
||||||
cnd.and(Cnd.likeEX("info.userName", pageForm.getUserName()));
|
|
||||||
cnd.and(Cnd.likeEX("info.loginName", pageForm.getLoginName()));
|
|
||||||
cnd.andEX("info.unionId","=",pageForm.getUnionId());
|
|
||||||
cnd.andEX("info.unitId","=",pageForm.getUnitId());
|
|
||||||
|
|
||||||
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
|
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
|
||||||
cnd.desc("info.applyDateTime");
|
cnd.desc("t.createdAt").desc("info.applyDateTime");
|
||||||
}else{
|
}else{
|
||||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
}
|
}
|
||||||
|
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
Pagination<EvaluateApplyPageVO> pageVO = evaluateService.listPageVO(pageForm, sql, EvaluateApplyPageVO.class);
|
Pagination pagination = evaluateService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
return Result.success(pageVO);
|
return Result.success(pagination);
|
||||||
}
|
|
||||||
|
|
||||||
@At
|
|
||||||
@SaCheckPermission("evaluation.branchUnionApproval")
|
|
||||||
@ApiOperation("审核")
|
|
||||||
@SLog(tag = "评优评先分工会审核", msg = "分工会审核")
|
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
|
||||||
public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam){
|
|
||||||
approvalParam.getBpmTaskApprovalTypeEnum();
|
|
||||||
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
|
|
||||||
EvaluateApply evaluateApply = evaluateService.fetch(approvalParam.getProcessInstanceBusinessId());
|
|
||||||
List<String> assignments = new ArrayList<>();
|
|
||||||
if(approvalParam.getBpmTaskApprovalTypeEnum().equals(BpmTaskApprovalTypeEnum.PASS)){
|
|
||||||
String schoolUnionApprovalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.SCHOOL_UNION_ADMIN, Cnd.where(Sys_user_role::getUnionId, "=", evaluateApply.getUnionId()));
|
|
||||||
assignments.add(schoolUnionApprovalLoginName);
|
|
||||||
}
|
|
||||||
bpmService.completeTask(approvalParam.getProcessInstanceTaskId(), approvalParam.getBpmTaskApprovalTypeEnum(), variables, assignments);
|
|
||||||
return Result.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@At
|
|
||||||
@SaCheckPermission("evaluation.branchUnionApproval")
|
|
||||||
@ApiOperation("撤回")
|
|
||||||
@SLog(tag = "评优评先分工会审核", msg = "撤回")
|
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
|
||||||
public Result revoke(@Valid String taskId){
|
|
||||||
bpmService.revokeTask(taskId);
|
|
||||||
return Result.success();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -7,7 +7,6 @@ import com.budwk.app.base.result.Result;
|
|||||||
import com.budwk.app.bpm.service.BpmService;
|
import com.budwk.app.bpm.service.BpmService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluateApplyVO;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
@@ -33,8 +32,6 @@ public class EvaluateCommonController {
|
|||||||
@SaCheckPermission("evaluation")
|
@SaCheckPermission("evaluation")
|
||||||
public Result info(@Valid String id){
|
public Result info(@Valid String id){
|
||||||
EvaluateApply evaluateApply = evaluateService.fetch(id);
|
EvaluateApply evaluateApply = evaluateService.fetch(id);
|
||||||
EvaluateApplyVO vo = BeanUtil.copyProperties(evaluateApply, EvaluateApplyVO.class);
|
return Result.success(evaluateApply);
|
||||||
vo.setNodeTasks(bpmService.getNodeTasks(BpmProcessConstant.PERSON_EVALUATE, id));
|
|
||||||
return Result.success(vo);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-48
@@ -2,23 +2,18 @@ package com.budwk.app.zhgh.dayofficework.evaluation.controller;
|
|||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import com.budwk.app.base.annotation.SLog;
|
import com.budwk.app.base.annotation.SLog;
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
|
||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.bpm.service.BpmService;
|
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.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluateApplyPageVO;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
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.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
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.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;
|
||||||
@@ -48,66 +43,56 @@ public class EvaluateMineController {
|
|||||||
@At
|
@At
|
||||||
@SaCheckPermission("evaluation.mine")
|
@SaCheckPermission("evaluation.mine")
|
||||||
public Result pageData(@Valid PageForm pageForm, Integer year) {
|
public Result pageData(@Valid PageForm pageForm, Integer year) {
|
||||||
|
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
ea.name AS evaluateName,
|
ea.name AS evaluateName,
|
||||||
hb.name AS honorName,
|
hb.name AS honorName,
|
||||||
bs.name as honorTypeName,
|
bs.name as honorTypeName,
|
||||||
inst.processInstanceNodeId,
|
ins.id AS instanceId,
|
||||||
inst.processInstanceNodeCode,
|
ins.businessNo,
|
||||||
inst.processInstanceNodeName,
|
ins.state instanceState,
|
||||||
inst.processInstanceTaskIds,
|
ins.variable instanceVariable,
|
||||||
inst.processInstanceStatus,
|
ins.processDefineId instanceProcessDefineId,
|
||||||
nd.nodeType AS processInstanceTaskNodeType,
|
t.id taskId,
|
||||||
(
|
t.taskName AS taskKey,
|
||||||
SELECT
|
t.displayName taskName,
|
||||||
count( 1 ) > 0
|
t.taskType,
|
||||||
FROM
|
t.performType taskPerformType,
|
||||||
bpm_process_task
|
t.taskState,
|
||||||
WHERE
|
t.finishTime,
|
||||||
prevTaskId = ( SELECT id FROM bpm_process_task WHERE processInstanceId = inst.id AND processTaskNodeCode IN ( 10, 40, 70 ) ORDER BY createdAt DESC LIMIT 1 )
|
t.taskParentId,
|
||||||
AND taskStatus = 'COMPELTE'
|
t.variable taskVariable,
|
||||||
) AS nextTaskIsComplete
|
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||||
|
(SELECT MAX(id) FROM wf_process_task WHERE processInstanceId = ins.id AND taskName = 'startTask' AND taskState IN (10, 20)) AS startTaskId
|
||||||
FROM
|
FROM
|
||||||
evaluate_apply info
|
evaluate_apply info
|
||||||
LEFT JOIN evaluate_activity ea ON ea.id = info.evaluateId
|
LEFT JOIN evaluate_activity ea ON ea.id = info.evaluateId
|
||||||
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
||||||
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
||||||
LEFT JOIN bpm_process_instance inst ON inst.processInstanceBusinessId = info.id
|
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||||
LEFT JOIN bpm_process_node_define nd ON nd.id = inst.processInstanceNodeId
|
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id
|
||||||
|
AND t.taskState = 10
|
||||||
|
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) {
|
cnd.andEX("YEAR(info.year)", "=", year);
|
||||||
cnd.and("info.loginName", "=", SecurityUtil.getUserLoginname());
|
cnd.and("info.loginName", "=", SecurityUtil.getUserLoginname());
|
||||||
}
|
|
||||||
cnd.andEX("ea.year", "=", year);
|
|
||||||
cnd.groupBy("info.id");
|
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
Pagination<EvaluateApplyPageVO> pageVO = evaluateService.listPageVO(pageForm, sql, EvaluateApplyPageVO.class);
|
Pagination pagination = evaluateService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
return Result.success(pageVO);
|
return Result.success(pagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("evaluation.mine")
|
@SaCheckPermission("evaluation.mine")
|
||||||
@ApiOperation("删除")
|
@ApiOperation("删除")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
|
||||||
@SLog(tag = "评优评先申请", msg = "删除申请")
|
@SLog(tag = "评优评先申请", msg = "删除申请")
|
||||||
public Result delete(@Valid String id) {
|
public Result delete(@Valid String id) {
|
||||||
evaluateService.delete(id);
|
evaluateService.delete(id);
|
||||||
bpmService.deleteInstance(id);
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
|
||||||
@SaCheckPermission("evaluation.mine")
|
|
||||||
@ApiOperation("撤回")
|
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
|
||||||
@SLog(tag = "评优评先申请", msg = "撤回申请")
|
|
||||||
public Result revokeApply(@Valid String id) {
|
|
||||||
bpmService.revokeApply(id);
|
|
||||||
return Result.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-36
@@ -8,17 +8,15 @@ import com.budwk.app.base.constant.RoleConstant;
|
|||||||
import com.budwk.app.base.page.Pagination;
|
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.base.utils.PageUtil;
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
import com.budwk.app.bpm.enums.BpmProcessTaskStatusEnum;
|
|
||||||
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
|
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
|
||||||
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.bpm.service.BpmService;
|
||||||
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
import com.budwk.app.sys.models.Sys_user_role;
|
import com.budwk.app.sys.models.Sys_user_role;
|
||||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.web.controllers.open.commons.service.CommonService;
|
import com.budwk.app.web.controllers.open.commons.service.CommonService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluateApplyPageVO;
|
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
@@ -27,7 +25,6 @@ import org.nutz.dao.Cnd;
|
|||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
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.Static;
|
|
||||||
import org.nutz.ioc.aop.Aop;
|
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;
|
||||||
@@ -65,59 +62,65 @@ public class EvaluateSchoolUnionApprovalController {
|
|||||||
@SaCheckPermission("evaluation.schoolUnionApproval")
|
@SaCheckPermission("evaluation.schoolUnionApproval")
|
||||||
@ApiOperation("数据列表")
|
@ApiOperation("数据列表")
|
||||||
@Ok("json")
|
@Ok("json")
|
||||||
public Result pageData(@Valid EvaluatePageForm pageForm, boolean approval){
|
public Result pageData(@Valid EvaluatePageForm pageForm, Boolean approval){
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.*,
|
info.*,
|
||||||
ea.name AS evaluateName,
|
ea.name AS evaluateName,
|
||||||
hb.name AS honorName,
|
hb.name AS honorName,
|
||||||
bs.name as honorTypeName,
|
bs.name as honorTypeName,
|
||||||
inst.id processInstanceId,
|
ins.id AS instanceId,
|
||||||
inst.processInstanceNodeId,
|
ins.businessNo,
|
||||||
inst.processInstanceNodeName,
|
ins.state instanceState,
|
||||||
inst.processInstanceTaskIds,
|
ins.variable instanceVariable,
|
||||||
inst.processInstanceStatus,
|
ins.processDefineId instanceProcessDefineId,
|
||||||
task.id processInstanceTaskId,
|
t.id taskId,
|
||||||
task.taskStatus processInstanceTaskStatus,
|
t.taskName AS taskKey,
|
||||||
COUNT(nt.id) OVER (PARTITION BY task.id) > 0 AS nextTaskIsComplete
|
t.displayName taskName,
|
||||||
|
t.taskType,
|
||||||
|
t.performType taskPerformType,
|
||||||
|
t.taskState,
|
||||||
|
t.finishTime,
|
||||||
|
t.taskParentId,
|
||||||
|
t.variable taskVariable,
|
||||||
|
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
|
||||||
|
IF(rt.id IS NOT NULL, 1, 0) AS canRevoke
|
||||||
FROM
|
FROM
|
||||||
bpm_process_task task
|
wf_process_task t
|
||||||
INNER JOIN bpm_process_node_define nd ON nd.id = task.processTaskNodeId
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
INNER JOIN bpm_process_instance inst ON inst.id = task.processInstanceId
|
LEFT JOIN evaluate_apply info ON info.id = ins.businessNo
|
||||||
INNER JOIN evaluate_apply info ON info.id = inst.processInstanceBusinessId
|
|
||||||
LEFT JOIN evaluate_activity ea ON ea.id = info.evaluateId
|
LEFT JOIN evaluate_activity ea ON ea.id = info.evaluateId
|
||||||
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
||||||
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
||||||
LEFT JOIN bpm_process_task nt ON nt.prevTaskId = task.id AND nt.taskStatus = 'COMPLETE'
|
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||||
|
LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10
|
||||||
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){
|
cnd.and("t.taskName", "=", "3c158aca-89ef-4188-bbc3-e8db201f02a1");
|
||||||
cnd.and(new Static("JSON_CONTAINS( task.assignments, '\"%s\"' )".formatted(SecurityUtil.getUserLoginname())));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
}
|
|
||||||
|
|
||||||
cnd.and("nd.nodeCode","=",50);
|
|
||||||
if(approval){
|
|
||||||
cnd.and("task.taskStatus","=", BpmProcessTaskStatusEnum.COMPLETE);
|
|
||||||
}else{
|
|
||||||
cnd.and("task.taskStatus","=",BpmProcessTaskStatusEnum.ACTIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
cnd.andEX("eva.year", "=", pageForm.getYear());
|
|
||||||
cnd.and(Cnd.likeEX("info.userName", pageForm.getUserName()));
|
|
||||||
cnd.and(Cnd.likeEX("info.loginName", pageForm.getLoginName()));
|
|
||||||
cnd.andEX("info.unionId","=",pageForm.getUnionId());
|
cnd.andEX("info.unionId","=",pageForm.getUnionId());
|
||||||
cnd.andEX("info.unitId","=",pageForm.getUnitId());
|
cnd.andEX("info.unitId","=",pageForm.getUnitId());
|
||||||
|
|
||||||
|
if (approval) {
|
||||||
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
} else {
|
||||||
|
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||||
|
}
|
||||||
|
if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||||
|
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||||
|
}
|
||||||
|
cnd.andEX("YEAR(info.applyDateTime)", "=", pageForm.getYear());
|
||||||
|
cnd.groupBy("t.id");
|
||||||
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
|
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
|
||||||
cnd.desc("info.applyDateTime");
|
cnd.desc("t.createdAt").desc("info.applyDateTime");
|
||||||
}else{
|
}else{
|
||||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
}
|
}
|
||||||
|
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
Pagination<EvaluateApplyPageVO> pageVO = evaluateService.listPageVO(pageForm, sql, EvaluateApplyPageVO.class);
|
Pagination pagination = evaluateService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
return Result.success(pageVO);
|
return Result.success(pagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
|
|||||||
+11
-66
@@ -5,23 +5,19 @@ import cn.afterturn.easypoi.excel.entity.ExportParams;
|
|||||||
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||||
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import com.budwk.app.base.annotation.SLog;
|
import com.budwk.app.base.annotation.SLog;
|
||||||
import com.budwk.app.base.page.Pagination;
|
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.base.service.BaseService;
|
import com.budwk.app.base.service.BaseService;
|
||||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||||
import com.budwk.app.base.utils.PageUtil;
|
import com.budwk.app.flow.engine.FlowEngine;
|
||||||
import com.budwk.app.bpm.service.BpmService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateActivity;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluateApplyPageVO;
|
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.apache.poi.ss.usermodel.Workbook;
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.nutz.dao.Cnd;
|
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.Sqls;
|
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
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;
|
||||||
@@ -47,7 +43,7 @@ public class EvaluateSummaryController {
|
|||||||
@Inject
|
@Inject
|
||||||
private EvaluateService evaluateService;
|
private EvaluateService evaluateService;
|
||||||
@Inject
|
@Inject
|
||||||
private BpmService bpmService;
|
private FlowEngine flowEngine;
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@Ok("beetl:/platform/zhgh/dayofficework/evaluation/summary/index.html")
|
@Ok("beetl:/platform/zhgh/dayofficework/evaluation/summary/index.html")
|
||||||
@@ -60,69 +56,18 @@ public class EvaluateSummaryController {
|
|||||||
@SaCheckPermission("evaluation.summary")
|
@SaCheckPermission("evaluation.summary")
|
||||||
@ApiOperation("获取评优评先活动列表")
|
@ApiOperation("获取评优评先活动列表")
|
||||||
public Result pageData(@Valid EvaluatePageForm pageForm) {
|
public Result pageData(@Valid EvaluatePageForm pageForm) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = evaluateService.getSummarySql(pageForm);
|
||||||
SELECT
|
Pagination pagination = evaluateService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
info.*,
|
return Result.success(pagination);
|
||||||
eva.name as evaluateName,
|
|
||||||
hb.name AS honorName,
|
|
||||||
bs.name as honorTypeName,
|
|
||||||
ins.processInstanceNodeName
|
|
||||||
FROM
|
|
||||||
evaluate_apply info
|
|
||||||
LEFT JOIN evaluate_activity eva ON eva.id = info.evaluateId
|
|
||||||
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
|
||||||
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
|
||||||
LEFT JOIN bpm_process_instance ins ON ins.processInstanceBusinessId = info.id
|
|
||||||
$condition
|
|
||||||
""");
|
|
||||||
Cnd cnd = Cnd.NEW();
|
|
||||||
cnd.andEX("eva.year", "=", pageForm.getYear());
|
|
||||||
cnd.and(Cnd.likeEX("eva.id", pageForm.getEvaluateId()));
|
|
||||||
cnd.and(Cnd.likeEX("ea.userName", pageForm.getUserName()));
|
|
||||||
cnd.and(Cnd.likeEX("info.loginName", pageForm.getLoginName()));
|
|
||||||
cnd.andEX("info.unitId", "=", pageForm.getUnitId());
|
|
||||||
cnd.andEX("info.unionId", "=", pageForm.getUnionId());
|
|
||||||
|
|
||||||
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
|
|
||||||
cnd.desc("info.applyDateTime");
|
|
||||||
}else{
|
|
||||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
|
||||||
}
|
|
||||||
|
|
||||||
sql.setCondition(cnd);
|
|
||||||
Pagination<EvaluateApplyPageVO> pageVO = evaluateService.listPageVO(pageForm, sql, EvaluateApplyPageVO.class);
|
|
||||||
return Result.success(pageVO);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@Ok("void")
|
@Ok("void")
|
||||||
@SaCheckPermission("evaluation.summary")
|
@SaCheckPermission("evaluation.summary")
|
||||||
@ApiOperation("导出评优评先活动列表")
|
@ApiOperation("导出评优评先活动列表")
|
||||||
public void exportExcel(@Valid EvaluatePageForm pageForm,HttpServletResponse response) {
|
public void exportExcel(@Valid EvaluatePageForm pageForm, HttpServletResponse response) {
|
||||||
Sql sql = Sqls.create("""
|
EvaluateActivity activity = evaluateService.dao().fetch(EvaluateActivity.class, pageForm.getEvaluateId());
|
||||||
SELECT
|
Sql sql = evaluateService.getSummarySql(pageForm);
|
||||||
info.userName,
|
|
||||||
info.loginName,
|
|
||||||
info.sex,
|
|
||||||
info.unitName,
|
|
||||||
eva.`name` as evaluateName,
|
|
||||||
hb.name AS honorName,
|
|
||||||
bs.name as honorTypeName
|
|
||||||
FROM
|
|
||||||
evaluate_apply info
|
|
||||||
LEFT JOIN evaluate_activity eva ON eva.id = info.evaluateId
|
|
||||||
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
|
||||||
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
|
||||||
$condition
|
|
||||||
""");
|
|
||||||
Cnd cnd = Cnd.NEW();
|
|
||||||
cnd.andEX("eva.year", "=", pageForm.getYear());
|
|
||||||
cnd.and(Cnd.likeEX("eva.id", pageForm.getEvaluateId()));
|
|
||||||
cnd.and(Cnd.likeEX("ea.userName", pageForm.getUserName()));
|
|
||||||
cnd.and(Cnd.likeEX("info.loginName", pageForm.getLoginName()));
|
|
||||||
cnd.andEX("info.unitId", "=", pageForm.getUnitId());
|
|
||||||
cnd.andEX("info.unionId", "=", pageForm.getUnionId());
|
|
||||||
sql.setCondition(cnd);
|
|
||||||
List<NutMap> list = baseService.listMap(sql);
|
List<NutMap> list = baseService.listMap(sql);
|
||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
list.get(i).put("序号", (i + 1));
|
list.get(i).put("序号", (i + 1));
|
||||||
@@ -143,7 +88,7 @@ public class EvaluateSummaryController {
|
|||||||
ExportParams exportParams = new ExportParams();
|
ExportParams exportParams = new ExportParams();
|
||||||
exportParams.setType(ExcelType.XSSF);
|
exportParams.setType(ExcelType.XSSF);
|
||||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
||||||
CommonDownloadUtil.download("评优评先人员列表.xlsx", workbook, response);
|
CommonDownloadUtil.download(activity.getName() + "人员列表.xlsx", workbook, response);
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -154,7 +99,7 @@ public class EvaluateSummaryController {
|
|||||||
@SLog(tag = "评优评先活查询统计", msg = "删除")
|
@SLog(tag = "评优评先活查询统计", msg = "删除")
|
||||||
public Result delete(@Valid String id) {
|
public Result delete(@Valid String id) {
|
||||||
evaluateService.delete(id);
|
evaluateService.delete(id);
|
||||||
bpmService.deleteInstance(id);
|
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,12 @@ package com.budwk.app.zhgh.dayofficework.evaluation.service;
|
|||||||
|
|
||||||
import com.budwk.app.base.service.BaseService;
|
import com.budwk.app.base.service.BaseService;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
|
||||||
public interface EvaluateService extends BaseService<EvaluateApply> {
|
public interface EvaluateService extends BaseService<EvaluateApply> {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Sql getSummarySql(EvaluatePageForm pageForm);
|
||||||
}
|
}
|
||||||
|
|||||||
+61
@@ -1,9 +1,16 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.evaluation.service.impl;
|
package com.budwk.app.zhgh.dayofficework.evaluation.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
import com.budwk.app.zhgh.dayofficework.evaluation.service.EvaluateService;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.evaluation.vo.EvaluatePageForm;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
|
||||||
@IocBean(args = {"refer:dao"})
|
@IocBean(args = {"refer:dao"})
|
||||||
@@ -11,4 +18,58 @@ public class EvaluateServiceImpl extends BaseServiceImpl<EvaluateApply> implemen
|
|||||||
public EvaluateServiceImpl(Dao dao) {
|
public EvaluateServiceImpl(Dao dao) {
|
||||||
super(dao);
|
super(dao);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Sql getSummarySql(EvaluatePageForm pageForm) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
info.*,
|
||||||
|
ea.name AS evaluateName,
|
||||||
|
hb.name AS honorName,
|
||||||
|
bs.name as honorTypeName,
|
||||||
|
ins.id AS instanceId,
|
||||||
|
ins.businessNo,
|
||||||
|
ins.state instanceState,
|
||||||
|
ins.variable instanceVariable,
|
||||||
|
ins.processDefineId instanceProcessDefineId,
|
||||||
|
t.id taskId,
|
||||||
|
t.taskName AS taskKey,
|
||||||
|
t.displayName taskName,
|
||||||
|
t.taskType,
|
||||||
|
t.performType taskPerformType,
|
||||||
|
t.taskState,
|
||||||
|
t.finishTime,
|
||||||
|
t.taskParentId,
|
||||||
|
t.variable taskVariable,
|
||||||
|
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||||
|
(SELECT MAX(id) FROM wf_process_task WHERE processInstanceId = ins.id AND taskName = 'startTask' AND taskState IN (10, 20)) AS startTaskId
|
||||||
|
FROM
|
||||||
|
evaluate_apply info
|
||||||
|
LEFT JOIN evaluate_activity ea ON ea.id = info.evaluateId
|
||||||
|
LEFT JOIN honor_basic_settings hb ON hb.id = info.honorId
|
||||||
|
LEFT JOIN honor_basic_settings bs ON bs.id = info.honorTypeId
|
||||||
|
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||||
|
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id
|
||||||
|
AND t.taskState = 10
|
||||||
|
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.andEX("YEAR(info.year)", "=", pageForm.getYear());
|
||||||
|
cnd.andEX("info.evaluateId", "=", pageForm.getEvaluateId());
|
||||||
|
cnd.and("ins.state", "=", ProcessTaskStateEnum.FINISHED.getCode());
|
||||||
|
cnd.andEX("info.unitId", "=", pageForm.getUnitId());
|
||||||
|
cnd.andEX("info.unionId", "=", pageForm.getUnionId());
|
||||||
|
if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||||
|
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||||
|
}
|
||||||
|
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||||
|
cnd.desc("t.createdAt").desc("info.applyDateTime");
|
||||||
|
} else {
|
||||||
|
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
return sql;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.evaluation.vo;
|
|
||||||
|
|
||||||
import com.budwk.app.bpm.vo.BpmTaskApprovalVo;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@Data
|
|
||||||
public class EvaluateApplyPageVO extends BpmTaskApprovalVo {
|
|
||||||
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
private String evaluateId;
|
|
||||||
|
|
||||||
private String honorId;
|
|
||||||
|
|
||||||
private String honorTypeId;
|
|
||||||
|
|
||||||
private String loginName;
|
|
||||||
|
|
||||||
private String userName;
|
|
||||||
|
|
||||||
private Integer age;
|
|
||||||
|
|
||||||
private String sex;
|
|
||||||
|
|
||||||
private String nation;
|
|
||||||
|
|
||||||
private String political;
|
|
||||||
|
|
||||||
private String education;
|
|
||||||
|
|
||||||
private String technicalTitle;
|
|
||||||
|
|
||||||
private String governmentPosition;
|
|
||||||
|
|
||||||
private String historyHonor;
|
|
||||||
|
|
||||||
private String briefDeeds;
|
|
||||||
|
|
||||||
private String unitName;
|
|
||||||
|
|
||||||
private String unitId;
|
|
||||||
|
|
||||||
private String unionName;
|
|
||||||
|
|
||||||
private String unionId;
|
|
||||||
|
|
||||||
private String clubName;
|
|
||||||
|
|
||||||
private String clubId;
|
|
||||||
|
|
||||||
private Date applyDateTime;
|
|
||||||
|
|
||||||
private Boolean isClub;
|
|
||||||
|
|
||||||
private String evaluateName;
|
|
||||||
|
|
||||||
private String honorName;
|
|
||||||
|
|
||||||
private String honorTypeName;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
package com.budwk.app.zhgh.dayofficework.evaluation.vo;
|
|
||||||
|
|
||||||
import com.budwk.app.bpm.vo.BpmTaskApprovalRecordVo;
|
|
||||||
import com.budwk.app.zhgh.dayofficework.evaluation.models.EvaluateApply;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
|
||||||
@Data
|
|
||||||
public class EvaluateApplyVO extends EvaluateApply {
|
|
||||||
|
|
||||||
@ApiModelProperty("节点审批记录")
|
|
||||||
private List<BpmTaskApprovalRecordVo> nodeTasks;
|
|
||||||
|
|
||||||
}
|
|
||||||
+5
-3
@@ -28,6 +28,7 @@ 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 org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -226,9 +227,10 @@ public class ExecutiveCommitteeDelegationOnePushController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("executiveCommittee.delegationOnePush")
|
@SaCheckPermission("executiveCommittee.delegationOnePush")
|
||||||
@SLog( tag = "执委会推选-团长推选委员", msg = "删除推选的人")
|
@SLog(tag = "执委会推选-团长推选委员", msg = "删除推选的人")
|
||||||
public Result doDelete(String id) {
|
public Result doDelete(@Valid String id, @Valid String teacherMeetId) {
|
||||||
ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, Cnd.NEW());
|
ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class,
|
||||||
|
Cnd.where("teacherMeetId", "=", teacherMeetId));
|
||||||
if (ObjectUtil.isEmpty(config)) {
|
if (ObjectUtil.isEmpty(config)) {
|
||||||
return Result.error("请先配置基础信息");
|
return Result.error("请先配置基础信息");
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-6
@@ -16,7 +16,6 @@ import org.nutz.dao.Cnd;
|
|||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
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.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.lang.Strings;
|
import org.nutz.lang.Strings;
|
||||||
@@ -25,6 +24,7 @@ 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 org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -146,7 +146,7 @@ public class ExecutiveCommitteeDelegationTwoPushController {
|
|||||||
@At
|
@At
|
||||||
@SaCheckPermission("executiveCommittee.delegationTwoPush")
|
@SaCheckPermission("executiveCommittee.delegationTwoPush")
|
||||||
@ApiOperation("推选委员")
|
@ApiOperation("推选委员")
|
||||||
@SLog(type = "executiveCommitteePreparatoryGroupPush", tag = "执委会推选-团长二次推选", msg = "推选委员")
|
@SLog(tag = "执委会推选-团长二次推选", msg = "推选委员")
|
||||||
public Result addOnePush(@Param("userValue") String[] userValue,
|
public Result addOnePush(@Param("userValue") String[] userValue,
|
||||||
String teacherMeetId) {
|
String teacherMeetId) {
|
||||||
try {
|
try {
|
||||||
@@ -177,7 +177,7 @@ public class ExecutiveCommitteeDelegationTwoPushController {
|
|||||||
|
|
||||||
List<Teacher_congress_delegate> dbList = dao.query(Teacher_congress_delegate.class,
|
List<Teacher_congress_delegate> dbList = dao.query(Teacher_congress_delegate.class,
|
||||||
Cnd.where(Teacher_congress_delegate::getSessionId, "=", teacherMeetId)
|
Cnd.where(Teacher_congress_delegate::getSessionId, "=", teacherMeetId)
|
||||||
.andEX(Teacher_congress_delegate::getUserId, "in", userValue));
|
.andEX(Teacher_congress_delegate::getUserId, "in", userValue));
|
||||||
List<ExecutiveCommitteeTwoPush> list = new ArrayList<>();
|
List<ExecutiveCommitteeTwoPush> list = new ArrayList<>();
|
||||||
for (String id : userValue) {
|
for (String id : userValue) {
|
||||||
Teacher_congress_delegate jdhDb = dbList.stream().filter(v -> v.getUserId().equals(id)).findFirst().orElse(null);
|
Teacher_congress_delegate jdhDb = dbList.stream().filter(v -> v.getUserId().equals(id)).findFirst().orElse(null);
|
||||||
@@ -205,9 +205,10 @@ public class ExecutiveCommitteeDelegationTwoPushController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("删除推选人员")
|
@ApiOperation("删除推选人员")
|
||||||
@SaCheckPermission("executiveCommittee.delegationTwoPush")
|
@SaCheckPermission("executiveCommittee.delegationTwoPush")
|
||||||
@SLog(type = "executiveCommitteePreparatoryGroupPush", tag = "执委会推选-团长二次推选", msg = "删除推选人员")
|
@SLog(tag = "执委会推选-团长二次推选", msg = "删除推选人员")
|
||||||
public Result doDelete( String id) {
|
public Result doDelete(@Valid String id, @Valid String teacherMeetId) {
|
||||||
ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, Cnd.NEW());
|
ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class,
|
||||||
|
Cnd.where("teacherMeetId", "=", teacherMeetId));
|
||||||
if (ObjectUtil.isEmpty(config)) {
|
if (ObjectUtil.isEmpty(config)) {
|
||||||
return Result.error("请先配置基础信息");
|
return Result.error("请先配置基础信息");
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-10
@@ -27,6 +27,7 @@ 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 org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -125,7 +126,7 @@ public class ExecutiveCommitteePushController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("executiveCommittee.preparatoryGroupPush")
|
@SaCheckPermission("executiveCommittee.preparatoryGroupPush")
|
||||||
@SLog(type = "executiveCommitteePreparatoryGroupPush", tag = "执委会推选-筹备组推选", msg = "推选委员")
|
@SLog(tag = "执委会推选-筹备组推选", msg = "推选委员")
|
||||||
public Result addOnePush(@Param("userValue") String[] userValue,
|
public Result addOnePush(@Param("userValue") String[] userValue,
|
||||||
String teacherMeetId) {
|
String teacherMeetId) {
|
||||||
try {
|
try {
|
||||||
@@ -150,11 +151,11 @@ public class ExecutiveCommitteePushController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
t1.*
|
t1.*
|
||||||
FROM
|
FROM
|
||||||
teacher_congress_delegate t1
|
teacher_congress_delegate t1
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("t1.sessionId", "=", teacherMeetId);
|
cnd.and("t1.sessionId", "=", teacherMeetId);
|
||||||
@@ -191,9 +192,10 @@ public class ExecutiveCommitteePushController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("executiveCommittee.preparatoryGroupPush")
|
@SaCheckPermission("executiveCommittee.preparatoryGroupPush")
|
||||||
@SLog(type = "executiveCommitteePreparatoryGroupPush", tag = "执委会推选-筹备组推选", msg = "删除推选的人")
|
@SLog(tag = "执委会推选-筹备组推选", msg = "删除推选的人")
|
||||||
public Result doDelete(String id) {
|
public Result doDelete(@Valid String id, @Valid String teacherMeetId) {
|
||||||
ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, Cnd.NEW());
|
ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class,
|
||||||
|
Cnd.where("teacherMeetId", "=", teacherMeetId));
|
||||||
if (ObjectUtil.isEmpty(config)) {
|
if (ObjectUtil.isEmpty(config)) {
|
||||||
return Result.error("请先配置基础信息");
|
return Result.error("请先配置基础信息");
|
||||||
}
|
}
|
||||||
@@ -217,5 +219,4 @@ public class ExecutiveCommitteePushController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+23
-21
@@ -13,17 +13,17 @@ import com.budwk.app.flow.engine.FlowEngine;
|
|||||||
import com.budwk.app.flow.entity.ProcessInstance;
|
import com.budwk.app.flow.entity.ProcessInstance;
|
||||||
import com.budwk.app.flow.entity.ProcessTask;
|
import com.budwk.app.flow.entity.ProcessTask;
|
||||||
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||||
import com.budwk.app.sys.models.Sys_user;
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
import com.budwk.app.sys.views.View_user;
|
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.enrollmentRegistration.model.EnrollmentRegistration;
|
import com.budwk.app.zhgh.enrollmentRegistration.model.EnrollmentRegistration;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
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.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.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
@@ -51,6 +51,9 @@ public class EnrollmentRegistrationApplyController {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private FlowEngine flowEngine;
|
private FlowEngine flowEngine;
|
||||||
|
@Inject
|
||||||
|
private FlowCommonService flowCommonService;
|
||||||
|
|
||||||
|
|
||||||
@At("/index")
|
@At("/index")
|
||||||
@Ok("beetl:/platform/zhgh/enrollmentRegistration/apply/index.html")
|
@Ok("beetl:/platform/zhgh/enrollmentRegistration/apply/index.html")
|
||||||
@@ -81,35 +84,34 @@ public class EnrollmentRegistrationApplyController {
|
|||||||
@At
|
@At
|
||||||
@SaCheckPermission("enrollmentRegistration.apply")
|
@SaCheckPermission("enrollmentRegistration.apply")
|
||||||
@ApiOperation("保存申请")
|
@ApiOperation("保存申请")
|
||||||
@SLog(type = "enrollmentRegistrationApply", tag = "子女入学管理-子女入学登记", msg = "保存子女入学登记")
|
@SLog( tag = "子女入学管理-子女入学登记", msg = "保存子女入学登记")
|
||||||
public Result save(@Param("data") EnrollmentRegistration enrollmentRegistration) {
|
public Result save(@Param("data") EnrollmentRegistration enrollmentRegistration) {
|
||||||
View_user user = baseService.dao().fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
|
|
||||||
enrollmentRegistration.setUserId(SecurityUtil.getUserId());
|
|
||||||
enrollmentRegistration.setLoginName(SecurityUtil.getUserLoginname());
|
|
||||||
enrollmentRegistration.setUserName(SecurityUtil.getUserUsername());
|
|
||||||
enrollmentRegistration.setUnitId(SecurityUtil.getUnitId());
|
|
||||||
enrollmentRegistration.setUnitName(user.getUnitName());
|
|
||||||
enrollmentRegistration.setUnionId(SecurityUtil.getUnionId());
|
|
||||||
enrollmentRegistration.setUnionName(user.getUnionName());
|
|
||||||
enrollmentRegistration.setApplyTime(DateUtil.now());
|
enrollmentRegistration.setApplyTime(DateUtil.now());
|
||||||
baseService.insertOrUpdate(enrollmentRegistration);
|
baseService.insertOrUpdate(enrollmentRegistration);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SaCheckPermission("enrollmentRegistration.apply")
|
||||||
|
@ApiOperation("重新提交申请")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog( tag = "子女入学管理-子女入学登记", msg = "重新提交申请")
|
||||||
|
public Result submitAgain(@Param("data") EnrollmentRegistration enrollmentRegistration, @Param("taskId") Long taskId) {
|
||||||
|
baseService.insertOrUpdate(enrollmentRegistration);
|
||||||
|
|
||||||
|
Dict dict = Dict.create();
|
||||||
|
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
|
||||||
|
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
|
||||||
|
flowCommonService.executeTask(dict);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("enrollmentRegistration.apply")
|
@SaCheckPermission("enrollmentRegistration.apply")
|
||||||
@ApiOperation("提交申请")
|
@ApiOperation("提交申请")
|
||||||
@SLog(type = "enrollmentRegistrationApply", tag = "子女入学管理-子女入学登记", msg = "提交子女入学登记")
|
@SLog( tag = "子女入学管理-子女入学登记", msg = "提交子女入学登记")
|
||||||
public Result submit(@Param("data") EnrollmentRegistration enrollmentRegistration) {
|
public Result submit(@Param("data") EnrollmentRegistration enrollmentRegistration) {
|
||||||
if (StrUtil.isBlank(enrollmentRegistration.getId())) {
|
if (StrUtil.isBlank(enrollmentRegistration.getId())) {
|
||||||
View_user user = baseService.dao().fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
|
|
||||||
enrollmentRegistration.setUserId(SecurityUtil.getUserId());
|
|
||||||
enrollmentRegistration.setLoginName(SecurityUtil.getUserLoginname());
|
|
||||||
enrollmentRegistration.setUserName(SecurityUtil.getUserUsername());
|
|
||||||
enrollmentRegistration.setUnitId(SecurityUtil.getUnitId());
|
|
||||||
enrollmentRegistration.setUnitName(user.getUnitName());
|
|
||||||
enrollmentRegistration.setUnionId(SecurityUtil.getUnionId());
|
|
||||||
enrollmentRegistration.setUnionName(user.getUnionName());
|
|
||||||
enrollmentRegistration.setApplyTime(DateUtil.now());
|
enrollmentRegistration.setApplyTime(DateUtil.now());
|
||||||
}
|
}
|
||||||
baseService.insertOrUpdate(enrollmentRegistration);
|
baseService.insertOrUpdate(enrollmentRegistration);
|
||||||
|
|||||||
+13
-2
@@ -1,17 +1,21 @@
|
|||||||
package com.budwk.app.zhgh.enrollmentRegistration.controller;
|
package com.budwk.app.zhgh.enrollmentRegistration.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.budwk.app.base.annotation.SLog;
|
||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.base.service.BaseService;
|
import com.budwk.app.base.service.BaseService;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
|
import com.budwk.app.zhgh.enrollmentRegistration.model.EnrollmentRegistration;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
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.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;
|
||||||
@@ -33,7 +37,6 @@ public class EnrollmentRegistrationApplyListController {
|
|||||||
private BaseService baseService;
|
private BaseService baseService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@At("/index")
|
@At("/index")
|
||||||
@Ok("beetl:/platform/zhgh/enrollmentRegistration/applyList/index.html")
|
@Ok("beetl:/platform/zhgh/enrollmentRegistration/applyList/index.html")
|
||||||
@SaCheckPermission("enrollmentRegistration.applyList")
|
@SaCheckPermission("enrollmentRegistration.applyList")
|
||||||
@@ -81,6 +84,14 @@ public class EnrollmentRegistrationApplyListController {
|
|||||||
return Result.success(pagination);
|
return Result.success(pagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("删除子女入学信息")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SaCheckPermission("enrollmentRegistration.applyList")
|
||||||
|
@SLog(tag = "子女入学-我的填报", msg = "删除id: ${args[0]}")
|
||||||
|
public Result doDelete(String id) {
|
||||||
|
baseService.dao().delete(EnrollmentRegistration.class, id);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ public class EnrollmentRegistrationPlanController {
|
|||||||
@ApiOperation("提交登记计划")
|
@ApiOperation("提交登记计划")
|
||||||
@SaCheckPermission("enrollmentRegistration.plan")
|
@SaCheckPermission("enrollmentRegistration.plan")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog(type = "outlayReimburseApply", tag = "子女入学管理-登记计划", msg = "提交登记计划")
|
@SLog( tag = "子女入学管理-登记计划", msg = "提交登记计划")
|
||||||
public Result onSubmit(@Param("data") EnrollmentRegistrationPlan enrollmentRegistrationPlan) {
|
public Result onSubmit(@Param("data") EnrollmentRegistrationPlan enrollmentRegistrationPlan) {
|
||||||
baseService.insertOrUpdate(enrollmentRegistrationPlan);
|
baseService.insertOrUpdate(enrollmentRegistrationPlan);
|
||||||
|
|
||||||
|
|||||||
+10
@@ -34,6 +34,11 @@ public class EnrollmentRegistration extends BaseModel implements Serializable {
|
|||||||
@Comment("登记类型(字典)")
|
@Comment("登记类型(字典)")
|
||||||
private String registrationType;
|
private String registrationType;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR,width = 32)
|
||||||
|
@Comment("登记类型计划Id")
|
||||||
|
private String registrationTypeId;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.VARCHAR,width = 30)
|
@ColDefine(type = ColType.VARCHAR,width = 30)
|
||||||
@Comment("监护人(教工)姓名")
|
@Comment("监护人(教工)姓名")
|
||||||
@@ -84,6 +89,11 @@ public class EnrollmentRegistration extends BaseModel implements Serializable {
|
|||||||
@Comment("子女姓名")
|
@Comment("子女姓名")
|
||||||
private String childrenName;
|
private String childrenName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@ColDefine(type = ColType.VARCHAR,width = 30)
|
||||||
|
@Comment("出身年月")
|
||||||
|
private String childrenBirthday;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ColDefine(type = ColType.VARCHAR,width = 30)
|
@ColDefine(type = ColType.VARCHAR,width = 30)
|
||||||
@Comment("性别")
|
@Comment("性别")
|
||||||
|
|||||||
+24
-7
@@ -3,11 +3,15 @@ package com.budwk.app.zhgh.outlay.activityBudget.conteoller;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.lang.Dict;
|
||||||
import com.alibaba.excel.EasyExcel;
|
import com.alibaba.excel.EasyExcel;
|
||||||
import com.budwk.app.base.annotation.SLog;
|
import com.budwk.app.base.annotation.SLog;
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||||
|
import com.budwk.app.flow.constant.FlowConst;
|
||||||
|
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||||
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
import com.budwk.app.sys.models.Sys_role;
|
import com.budwk.app.sys.models.Sys_role;
|
||||||
import com.budwk.app.sys.models.Sys_user_role;
|
import com.budwk.app.sys.models.Sys_user_role;
|
||||||
import com.budwk.app.sys.services.SysRoleService;
|
import com.budwk.app.sys.services.SysRoleService;
|
||||||
@@ -15,15 +19,12 @@ import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
|||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.club.model.SysClub;
|
import com.budwk.app.zhgh.club.model.SysClub;
|
||||||
import com.budwk.app.zhgh.club.service.SysClubService;
|
import com.budwk.app.zhgh.club.service.SysClubService;
|
||||||
import com.budwk.app.zhgh.democratic.suggestionBox.models.SuggestionBox;
|
|
||||||
import com.budwk.app.zhgh.integral.controller.IntegralManageController;
|
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.service.ActivityBudgetService;
|
import com.budwk.app.zhgh.outlay.activityBudget.service.ActivityBudgetService;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.template.ActivityBudgetTemp;
|
import com.budwk.app.zhgh.outlay.activityBudget.template.ActivityBudgetTemp;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
@@ -38,8 +39,6 @@ import org.nutz.mvc.annotation.Param;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.net.URLEncoder;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -64,6 +63,9 @@ public class ActivityBudgetApplyController {
|
|||||||
@Inject
|
@Inject
|
||||||
private SysRoleService sysRoleService;
|
private SysRoleService sysRoleService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private FlowCommonService flowCommonService;
|
||||||
|
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@Ok("beetl:/platform/zhgh/outlay/activityBudget/apply/index.html")
|
@Ok("beetl:/platform/zhgh/outlay/activityBudget/apply/index.html")
|
||||||
@@ -77,17 +79,32 @@ public class ActivityBudgetApplyController {
|
|||||||
@ApiOperation("提交年度预算申报")
|
@ApiOperation("提交年度预算申报")
|
||||||
@SaCheckPermission("activity.budget.apply")
|
@SaCheckPermission("activity.budget.apply")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog(type = "activityBudgetApply", tag = "年度预算申报-预算申报", msg = "提交年度预算申报")
|
@SLog( tag = "年度预算申报-预算申报", msg = "提交年度预算申报")
|
||||||
public Result submit(@Param("data") ActivityBudget activityBudget) {
|
public Result submit(@Param("data") ActivityBudget activityBudget) {
|
||||||
activityBudget.setApplyDate(DateUtil.now());
|
activityBudget.setApplyDate(DateUtil.now());
|
||||||
return activityBudgetService.submit(activityBudget);
|
return activityBudgetService.submit(activityBudget);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SaCheckPermission("activity.budget.apply")
|
||||||
|
@ApiOperation("重新提交申请")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog( tag = "年度预算申报-预算申报", msg = "重新提交申请")
|
||||||
|
public Result submitAgain(@Param("data") ActivityBudget activityBudget, @Param("taskId") Long taskId) {
|
||||||
|
activityBudgetService.insertOrUpdate(activityBudget);
|
||||||
|
|
||||||
|
Dict dict = Dict.create();
|
||||||
|
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
|
||||||
|
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
|
||||||
|
flowCommonService.executeTask(dict);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("activity.budget.apply")
|
@SaCheckPermission("activity.budget.apply")
|
||||||
@ApiOperation("保存申请")
|
@ApiOperation("保存申请")
|
||||||
@SLog(type = "activityBudgetApply", tag = "年度预算申报-预算申报", msg = "保存年度预算申报")
|
@SLog( tag = "年度预算申报-预算申报", msg = "保存年度预算申报")
|
||||||
public Result save(@Param("data") ActivityBudget activityBudget) {
|
public Result save(@Param("data") ActivityBudget activityBudget) {
|
||||||
activityBudget.setUserId(SecurityUtil.getUserId());
|
activityBudget.setUserId(SecurityUtil.getUserId());
|
||||||
activityBudget.setLoginName(SecurityUtil.getUserLoginname());
|
activityBudget.setLoginName(SecurityUtil.getUserLoginname());
|
||||||
|
|||||||
+3
-24
@@ -8,20 +8,15 @@ import com.budwk.app.base.annotation.SLog;
|
|||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.flow.entity.ProcessInstance;
|
|
||||||
import com.budwk.app.flow.entity.ProcessTask;
|
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudgetDetails;
|
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudgetDetails;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.service.ActivityBudgetService;
|
import com.budwk.app.zhgh.outlay.activityBudget.service.ActivityBudgetService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.checkerframework.checker.units.qual.C;
|
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
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.aop.Aop;
|
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;
|
||||||
@@ -58,11 +53,6 @@ public class ActivityBudgetApplyListController {
|
|||||||
public void index() {
|
public void index() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@At("/view")
|
|
||||||
@Ok("beetl:/platform/zhgh/outlay/activityBudget/view/index.html")
|
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
|
||||||
public void view() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@ApiOperation("分页查询")
|
@ApiOperation("分页查询")
|
||||||
@@ -78,17 +68,11 @@ public class ActivityBudgetApplyListController {
|
|||||||
@ApiOperation("批量删除申报数据")
|
@ApiOperation("批量删除申报数据")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog(type = "activityBudgetApplyList", tag = "年度预算申报-我的申报", msg = "删除了${ids.length}条数据,${ids}")
|
@SLog( tag = "年度预算申报-我的申报", msg = "删除了${ids.length}条数据,${ids}")
|
||||||
public Result batchDelete(@Param("ids[]") @Valid String[] ids) {
|
public Result batchDelete(@Param("ids[]") @Valid String[] ids) {
|
||||||
if (ObjectUtil.isNotEmpty(ids)) {
|
if (ObjectUtil.isNotEmpty(ids)) {
|
||||||
activityBudgetService.clear(Cnd.where("id", "in", ids));
|
activityBudgetService.clear(Cnd.where("id", "in", ids));
|
||||||
activityBudgetService.dao().clear(ActivityBudgetDetails.class, Cnd.where("budgetId", "in", ids));
|
activityBudgetService.dao().clear(ActivityBudgetDetails.class, Cnd.where("budgetId", "in", ids));
|
||||||
List<ProcessInstance> instanceList = activityBudgetService.dao().query(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", ids));
|
|
||||||
if (ObjectUtil.isNotEmpty(instanceList)) {
|
|
||||||
List<Long> instanceIds = instanceList.stream().map(ProcessInstance::getId).toList();
|
|
||||||
activityBudgetService.dao().clear(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "in", instanceIds));
|
|
||||||
activityBudgetService.dao().clear(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", ids));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
@@ -97,22 +81,17 @@ public class ActivityBudgetApplyListController {
|
|||||||
@ApiOperation("删除一条申报数据")
|
@ApiOperation("删除一条申报数据")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog(type = "activityBudgetApplyList", tag = "年度预算申报-我的申报", msg = "删除了一条条数据,${id}")
|
@SLog( tag = "年度预算申报-我的申报", msg = "删除了一条条数据,${id}")
|
||||||
public Result doDelete(String id) {
|
public Result doDelete(String id) {
|
||||||
activityBudgetService.dao().delete(ActivityBudget.class, id);
|
activityBudgetService.dao().delete(ActivityBudget.class, id);
|
||||||
activityBudgetService.dao().clear(ActivityBudgetDetails.class, Cnd.where("budgetId", "=", id));
|
activityBudgetService.dao().clear(ActivityBudgetDetails.class, Cnd.where("budgetId", "=", id));
|
||||||
ProcessInstance instance = activityBudgetService.dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", id));
|
|
||||||
if (ObjectUtil.isNotEmpty(instance)) {
|
|
||||||
activityBudgetService.dao().clear(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()));
|
|
||||||
activityBudgetService.dao().delete(ProcessInstance.class, instance.getId());
|
|
||||||
}
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@ApiOperation("提交申报数据")
|
@ApiOperation("提交申报数据")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
@SLog(type = "activityBudgetApplyList", tag = "年度预算申报-我的申报", msg = "提交了${ids.length}条数据,${ids}")
|
@SLog( tag = "年度预算申报-我的申报", msg = "提交了${ids.length}条数据,${ids}")
|
||||||
public Result batchSubmit(@Valid @Param("ids[]") String[] ids) {
|
public Result batchSubmit(@Valid @Param("ids[]") String[] ids) {
|
||||||
List<ActivityBudget> budgetList = activityBudgetService.query(Cnd.where("id", "in", ids));
|
List<ActivityBudget> budgetList = activityBudgetService.query(Cnd.where("id", "in", ids));
|
||||||
List<ActivityBudget> budgets = budgetList.stream().filter(a ->
|
List<ActivityBudget> budgets = budgetList.stream().filter(a ->
|
||||||
|
|||||||
+159
@@ -0,0 +1,159 @@
|
|||||||
|
package com.budwk.app.zhgh.outlay.outlayManage.club.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.budwk.app.base.annotation.SLog;
|
||||||
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.param.PageForm;
|
||||||
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.base.service.BaseService;
|
||||||
|
import com.budwk.app.flow.enums.ProcessInstanceStateEnum;
|
||||||
|
import com.budwk.app.sys.models.Sys_role;
|
||||||
|
import com.budwk.app.sys.models.Sys_user_role;
|
||||||
|
import com.budwk.app.sys.services.SysRoleService;
|
||||||
|
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.SysClub;
|
||||||
|
import com.budwk.app.zhgh.outlay.outlayManage.club.model.OutlayManageClub;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zhf
|
||||||
|
* @date 2025/8/28 11:36
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@IocBean
|
||||||
|
@At("/platform/outlay/outlayManage/clubManage")
|
||||||
|
@Ok("json:full")
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "分工会经费预算管理")
|
||||||
|
public class OutlayManageClubController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BaseService baseService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SysRoleService sysRoleService;
|
||||||
|
|
||||||
|
@At("")
|
||||||
|
@Ok("beetl:/platform/zhgh/outlay/outlayManage/club/manage/index.html")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.manage")
|
||||||
|
public void index() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("分页查询")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.manage")
|
||||||
|
public Result pageData(PageForm pageForm, Integer year) {
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT * FROM `outlay_manage_club` $condition
|
||||||
|
""");
|
||||||
|
cnd.andEX("year", "=", year);
|
||||||
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
||||||
|
List<Sys_user_role> userRoles = baseService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
|
cnd.andEX("clubId", "in", myClubId);
|
||||||
|
}
|
||||||
|
cnd.asc("clubCode");
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
return Result.success(pagination);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("修改预算")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.manage")
|
||||||
|
@SLog(tag = "分工会预算分配", msg = "修改了预算分配的金额:${args[0]},id:${args[1]}")
|
||||||
|
public Result doSubmit(String totalQuota, String id) {
|
||||||
|
OutlayManageClub outlayManageClub = baseService.dao().fetch(OutlayManageClub.class, id);
|
||||||
|
outlayManageClub.setTotalQuota(new BigDecimal(totalQuota));
|
||||||
|
baseService.updateIgnoreNull(outlayManageClub);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("查看是否分配")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.manage")
|
||||||
|
public Result getIsAllocationOutlay(Integer year) {
|
||||||
|
int count = baseService.dao().count(OutlayManageClub.class, Cnd.where("year", "=", year));
|
||||||
|
return Result.success(count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("重置预算")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.manage")
|
||||||
|
@SLog(tag = "协会预算分配", msg = "重置了预算分配的金额:${args[0]}")
|
||||||
|
public Result resetOutlay(Integer year) {
|
||||||
|
int count = baseService.dao().clear(OutlayManageClub.class, Cnd.where("year", "=", year));
|
||||||
|
return Result.success(count);
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("下发预算")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.manage")
|
||||||
|
@SLog(tag = "协会预算分配", msg = "根据申报的金额修改本年的预算预算")
|
||||||
|
public Result issuedOutlay() {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
ab.clubId,
|
||||||
|
ab.totalBudgetMoney
|
||||||
|
FROM
|
||||||
|
activity_budget ab
|
||||||
|
LEFT JOIN wf_process_instance wpi ON wpi.businessNo = ab.id
|
||||||
|
WHERE
|
||||||
|
YEAR(ab.applyDate) = @year
|
||||||
|
AND ab.outlayManageSource = 'ACTIVITY_BUDGET_TYPE_THREE'
|
||||||
|
AND ab.isSchoolBudget =0
|
||||||
|
AND wpi.state = 20
|
||||||
|
""").setParam("year", DateUtil.thisYear());
|
||||||
|
List<NutMap> budgetList = baseService.listMap(sql);
|
||||||
|
|
||||||
|
Sql sqlClub = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
c.*
|
||||||
|
FROM
|
||||||
|
`sys_club` c
|
||||||
|
LEFT JOIN wf_process_instance inst ON inst.businessNo = c.id
|
||||||
|
WHERE
|
||||||
|
inst.state = @state
|
||||||
|
""").setParam("state", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||||
|
List<SysClub> clubList = baseService.listVO(sqlClub, SysClub.class);
|
||||||
|
|
||||||
|
|
||||||
|
List<OutlayManageClub> insertUnionList = new ArrayList<>();
|
||||||
|
clubList.forEach(v -> {
|
||||||
|
BigDecimal totalBudgetMoney = budgetList.stream()
|
||||||
|
.filter(budget -> budget.getString("clubId").equals(v.getId()))
|
||||||
|
.map(budget -> new BigDecimal(budget.getString("totalBudgetMoney"))) // 提取 money 属性
|
||||||
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
OutlayManageClub outlayManageClub = new OutlayManageClub();
|
||||||
|
outlayManageClub.setYear(DateUtil.thisYear());
|
||||||
|
outlayManageClub.setClubName(v.getClubName());
|
||||||
|
outlayManageClub.setClubCode(v.getClubCode());
|
||||||
|
outlayManageClub.setClubId(v.getId());
|
||||||
|
outlayManageClub.setTotalQuota(totalBudgetMoney);
|
||||||
|
insertUnionList.add(outlayManageClub);
|
||||||
|
});
|
||||||
|
baseService.insert(insertUnionList);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
}
|
||||||
+127
@@ -0,0 +1,127 @@
|
|||||||
|
package com.budwk.app.zhgh.outlay.outlayManage.club.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.budwk.app.base.annotation.SLog;
|
||||||
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.param.PageForm;
|
||||||
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.base.service.BaseService;
|
||||||
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
|
import com.budwk.app.sys.models.Sys_role;
|
||||||
|
import com.budwk.app.sys.models.Sys_user_role;
|
||||||
|
import com.budwk.app.sys.services.SysRoleService;
|
||||||
|
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||||
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
|
import com.budwk.app.zhgh.outlay.outlayManage.model.OutlayUseDetail;
|
||||||
|
import com.budwk.app.zhgh.outlay.outlayManage.service.OutlayUseDetailService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
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.ioc.aop.Aop;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.Strings;
|
||||||
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zhf
|
||||||
|
* @date 2025/8/28 13:56
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@IocBean
|
||||||
|
@At("/platform/outlay/outlayManage/clubUseDetail")
|
||||||
|
@Ok("json:full")
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "协会预算使用明细")
|
||||||
|
public class OutlayManageClubUseDetailController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BaseService baseService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SysRoleService sysRoleService;
|
||||||
|
@Inject
|
||||||
|
private OutlayUseDetailService outlayUseDetailService;
|
||||||
|
|
||||||
|
@At("")
|
||||||
|
@Ok("beetl:/platform/zhgh/outlay/outlayManage/club/useDetail/index.html")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.useDetail")
|
||||||
|
public void index() {
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("分页查询")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.useDetail")
|
||||||
|
public Result pageData(PageForm pageForm,
|
||||||
|
Integer year,
|
||||||
|
String clubId) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
select * from outlay_manage_club $condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.and("totalQuota", "IS NOT", null);
|
||||||
|
cnd.and("year", "=", year);
|
||||||
|
|
||||||
|
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
|
cnd.andEX("clubId", "=", clubId);
|
||||||
|
} else {
|
||||||
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
||||||
|
List<Sys_user_role> userRoles = baseService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
|
cnd.andEX("clubId", "in", myClubId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Strings.isNotBlank(pageForm.getPageOrderBy()) && Strings.isNotBlank(pageForm.getPageOrderName())) {
|
||||||
|
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
|
} else {
|
||||||
|
cnd.asc("clubCode");
|
||||||
|
}
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
return Result.success(pagination);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("某个协会预算使用详情")
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.useDetail")
|
||||||
|
public Result detailInfo(PageForm pageForm, String outlayManageId) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
select * from outlay_use_detail where outlayManageId=@outlayManageId
|
||||||
|
""").setParam("outlayManageId", outlayManageId);
|
||||||
|
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
return Result.success(pagination);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("删除协会预算详情")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.useDetail")
|
||||||
|
@SLog(tag = "协会预算使用详情", msg = "删除了协会预算使用详情:${args[0]}")
|
||||||
|
public Result doDeleteDetail(String id) {
|
||||||
|
outlayUseDetailService.doDeleteDetail(id,"club");
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("编辑协会预算详情")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SaCheckPermission("outlay.outlayManage.club.useDetail")
|
||||||
|
@SLog(tag = "协会预算使用详情", msg = "编辑了协会预算使用详情:${args[0]}")
|
||||||
|
public Result doEditDetail(OutlayUseDetail outlayUseDetail) {
|
||||||
|
outlayUseDetailService.doEditDetail(outlayUseDetail,"club");
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
package com.budwk.app.zhgh.outlay.outlayManage.club.model;
|
||||||
|
|
||||||
|
import com.budwk.app.base.model.BaseModel;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.nutz.dao.entity.annotation.*;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zhf
|
||||||
|
* @date 2025/8/28 11:34
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Table("outlay_manage_club")
|
||||||
|
@TableMeta("{'mysql-charset':'utf8mb4'}")
|
||||||
|
@Comment("协会经费管理")
|
||||||
|
public class OutlayManageClub extends BaseModel implements Serializable {
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Name
|
||||||
|
@Comment("id")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@Prev(els = {@EL("uuid()")})
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("年份")
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
private Integer year;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("总额度")
|
||||||
|
@Default("0")
|
||||||
|
@ColDefine(customType = "decimal(10,2)")
|
||||||
|
private BigDecimal totalQuota;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("已使用额度")
|
||||||
|
@Default("0")
|
||||||
|
@ColDefine(customType = "decimal(10,2)")
|
||||||
|
private BigDecimal usedQuota;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("协会ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String clubId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("协会名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String clubName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("协会code")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String clubCode;
|
||||||
|
|
||||||
|
}
|
||||||
+22
-24
@@ -12,15 +12,13 @@ import com.budwk.app.flow.engine.FlowEngine;
|
|||||||
import com.budwk.app.flow.entity.ProcessInstance;
|
import com.budwk.app.flow.entity.ProcessInstance;
|
||||||
import com.budwk.app.flow.entity.ProcessTask;
|
import com.budwk.app.flow.entity.ProcessTask;
|
||||||
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
|
||||||
import com.budwk.app.sys.views.View_user;
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
|
||||||
import com.budwk.app.zhgh.outlay.outlayReimburse.model.OutlayReimburse;
|
import com.budwk.app.zhgh.outlay.outlayReimburse.model.OutlayReimburse;
|
||||||
import com.budwk.app.zhgh.outlay.outlayReimburse.service.OutlayReimburseApplyService;
|
import com.budwk.app.zhgh.outlay.outlayReimburse.service.OutlayReimburseApplyService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Cnd;
|
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.ioc.aop.Aop;
|
import org.nutz.ioc.aop.Aop;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
@@ -29,7 +27,6 @@ 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 org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,6 +50,9 @@ public class OutlayReimburseApplyController {
|
|||||||
@Inject
|
@Inject
|
||||||
private FlowEngine flowEngine;
|
private FlowEngine flowEngine;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private FlowCommonService flowCommonService;
|
||||||
|
|
||||||
@At("/index")
|
@At("/index")
|
||||||
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/apply/index.html")
|
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/apply/index.html")
|
||||||
@SaCheckPermission("outlay.reimburse.apply")
|
@SaCheckPermission("outlay.reimburse.apply")
|
||||||
@@ -85,20 +85,11 @@ public class OutlayReimburseApplyController {
|
|||||||
|
|
||||||
@At
|
@At
|
||||||
@ApiOperation("提交报销申请")
|
@ApiOperation("提交报销申请")
|
||||||
@SaCheckPermission("activity.budget.apply")
|
@SaCheckPermission("activity.reimburse.apply")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog(type = "outlayReimburseApply", tag = "费用报销管理-报销申请", msg = "提交年度预算申报")
|
@SLog( tag = "费用报销管理-报销申请", msg = "提交年度预算申报")
|
||||||
public Result submit(@Param("data") OutlayReimburse outlayReimburse) {
|
public Result submit(@Param("data") OutlayReimburse outlayReimburse) {
|
||||||
//添加预算详情表
|
|
||||||
if (StrUtil.isBlank(outlayReimburse.getId())){
|
if (StrUtil.isBlank(outlayReimburse.getId())){
|
||||||
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
|
|
||||||
outlayReimburse.setUserId(SecurityUtil.getUserId());
|
|
||||||
outlayReimburse.setUserName(SecurityUtil.getUserUsername());
|
|
||||||
outlayReimburse.setLoginName(SecurityUtil.getUserLoginname());
|
|
||||||
outlayReimburse.setUnitId(SecurityUtil.getUnitId());
|
|
||||||
outlayReimburse.setUnitName(user.getUnitName());
|
|
||||||
outlayReimburse.setUnionId(SecurityUtil.getUnionId());
|
|
||||||
outlayReimburse.setUnionName(user.getUnionName());
|
|
||||||
outlayReimburse.setApplyTime(DateUtil.now());
|
outlayReimburse.setApplyTime(DateUtil.now());
|
||||||
}
|
}
|
||||||
outlayReimburseApplyService.insertOrUpdate(outlayReimburse);
|
outlayReimburseApplyService.insertOrUpdate(outlayReimburse);
|
||||||
@@ -117,20 +108,27 @@ public class OutlayReimburseApplyController {
|
|||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SaCheckPermission("activity.reimburse.apply")
|
||||||
|
@ApiOperation("重新提交申请")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
@SLog( tag = "费用报销管理-报销申请", msg = "重新提交申请")
|
||||||
|
public Result submitAgain(@Param("data") OutlayReimburse outlayReimburse, @Param("taskId") Long taskId) {
|
||||||
|
outlayReimburseApplyService.insertOrUpdate(outlayReimburse);
|
||||||
|
|
||||||
|
Dict dict = Dict.create();
|
||||||
|
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
|
||||||
|
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
|
||||||
|
flowCommonService.executeTask(dict);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@SaCheckPermission("outlay.reimburse.apply")
|
@SaCheckPermission("outlay.reimburse.apply")
|
||||||
@ApiOperation("保存申请")
|
@ApiOperation("保存申请")
|
||||||
@SLog(type = "outlayReimburseApply", tag = "费用报销管理-报销申请", msg = "保存年度预算申报")
|
@SLog( tag = "费用报销管理-报销申请", msg = "保存年度预算申报")
|
||||||
public Result save(@Param("data") OutlayReimburse outlayReimburse) {
|
public Result save(@Param("data") OutlayReimburse outlayReimburse) {
|
||||||
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", SecurityUtil.getUserId()));
|
|
||||||
outlayReimburse.setUserId(SecurityUtil.getUserId());
|
|
||||||
outlayReimburse.setUserName(SecurityUtil.getUserUsername());
|
|
||||||
outlayReimburse.setLoginName(SecurityUtil.getUserLoginname());
|
|
||||||
outlayReimburse.setUnitId(SecurityUtil.getUnitId());
|
|
||||||
outlayReimburse.setUnitName(user.getUnitName());
|
|
||||||
outlayReimburse.setUnionId(SecurityUtil.getUnionId());
|
|
||||||
outlayReimburse.setUnionName(user.getUnionName());
|
|
||||||
outlayReimburse.setApplyTime(DateUtil.now());
|
outlayReimburse.setApplyTime(DateUtil.now());
|
||||||
outlayReimburseApplyService.insertOrUpdate(outlayReimburse);
|
outlayReimburseApplyService.insertOrUpdate(outlayReimburse);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
|
|||||||
+118
@@ -0,0 +1,118 @@
|
|||||||
|
package com.budwk.app.zhgh.outlay.outlayReimburse.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.param.PageForm;
|
||||||
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.base.service.BaseService;
|
||||||
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
|
import com.budwk.app.sys.services.SysDictService;
|
||||||
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zhf
|
||||||
|
* @date 2025/8/19 16:50
|
||||||
|
* @description 分工会主席审核
|
||||||
|
*/
|
||||||
|
@IocBean
|
||||||
|
@Ok("json:full")
|
||||||
|
@Slf4j
|
||||||
|
@Api(tags = "费用报销管理-协会审核")
|
||||||
|
@At("/platform/outlay/reimburse/clubAudit")
|
||||||
|
public class OutlayReimburseClubAuditController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BaseService baseService;
|
||||||
|
@Inject
|
||||||
|
private SysDictService sysDictService;
|
||||||
|
|
||||||
|
@At("/index")
|
||||||
|
@Ok("beetl:/platform/zhgh/outlay/outlayReimburse/clubAudit/index.html")
|
||||||
|
@SaCheckPermission("outlay.reimburse.clubAudit")
|
||||||
|
public void index() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("分页查询")
|
||||||
|
@SaCheckPermission("outlay.reimburse.clubAudit")
|
||||||
|
public Result pageData(PageForm pageForm,
|
||||||
|
Integer year,
|
||||||
|
Boolean approval,
|
||||||
|
String outlayManageSource) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
info.*,
|
||||||
|
YEAR(info.applyTime) year,
|
||||||
|
ins.id AS instanceId,
|
||||||
|
ins.businessNo,
|
||||||
|
ins.state instanceState,
|
||||||
|
ins.variable instanceVariale,
|
||||||
|
ins.processDefineId instanceProcessDefineId,
|
||||||
|
t.id taskId,
|
||||||
|
t.taskName AS taskKey,
|
||||||
|
t.displayName taskName,
|
||||||
|
t.taskType,
|
||||||
|
t.performType taskPerformType,
|
||||||
|
t.taskState,
|
||||||
|
t.finishTime,
|
||||||
|
t.taskParentId,
|
||||||
|
t.variable taskVariable,
|
||||||
|
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
|
||||||
|
IF(rt.id IS NOT NULL, 1, 0) AS canRevoke
|
||||||
|
FROM
|
||||||
|
wf_process_task t
|
||||||
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
|
LEFT JOIN outlay_reimburse info ON info.id = ins.businessNo
|
||||||
|
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||||
|
LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10
|
||||||
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.and("t.taskName", "=", "68a9af7f-f532-4866-aa09-24f0f802389f");
|
||||||
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
|
||||||
|
|
||||||
|
if (approval) {
|
||||||
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
} else {
|
||||||
|
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
|
||||||
|
}
|
||||||
|
if (StrUtil.isAllNotEmpty(pageForm.getSearchName(), pageForm.getSearchKeyword())) {
|
||||||
|
cnd.where().andLike(pageForm.getSearchName(), pageForm.getSearchKeyword());
|
||||||
|
}
|
||||||
|
cnd.andEX("YEAR(info.applyTime)", "=", year);
|
||||||
|
cnd.groupBy("t.id");
|
||||||
|
if (StrUtil.isAllBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
|
||||||
|
cnd.desc("t.createdAt").desc("info.applyTime");
|
||||||
|
} else {
|
||||||
|
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
|
}
|
||||||
|
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
Pagination<NutMap> pageVO = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
return Result.success(pageVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
-1
@@ -54,7 +54,6 @@ public class OutlayReimburseUnionAuditController {
|
|||||||
@SaCheckPermission("outlay.reimburse.unionAudit")
|
@SaCheckPermission("outlay.reimburse.unionAudit")
|
||||||
public Result pageData(PageForm pageForm,
|
public Result pageData(PageForm pageForm,
|
||||||
Integer year,
|
Integer year,
|
||||||
String clubId,
|
|
||||||
Boolean approval,
|
Boolean approval,
|
||||||
String outlayManageSource) {
|
String outlayManageSource) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
|
|||||||
+18
@@ -10,6 +10,7 @@ import com.budwk.app.flow.engine.core.Execution;
|
|||||||
import com.budwk.app.flow.engine.core.ServiceContext;
|
import com.budwk.app.flow.engine.core.ServiceContext;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||||
|
import com.budwk.app.zhgh.outlay.outlayManage.club.model.OutlayManageClub;
|
||||||
import com.budwk.app.zhgh.outlay.outlayManage.model.OutlayUseDetail;
|
import com.budwk.app.zhgh.outlay.outlayManage.model.OutlayUseDetail;
|
||||||
import com.budwk.app.zhgh.outlay.outlayManage.school.model.OutlayManageSchool;
|
import com.budwk.app.zhgh.outlay.outlayManage.school.model.OutlayManageSchool;
|
||||||
import com.budwk.app.zhgh.outlay.outlayManage.union.model.OutlayManageUnion;
|
import com.budwk.app.zhgh.outlay.outlayManage.union.model.OutlayManageUnion;
|
||||||
@@ -88,6 +89,23 @@ public class OutlayReimburseSchoolZxAuditPostInterceptor implements FlowIntercep
|
|||||||
detail.setOutlayManageId(manageUnion.getId());
|
detail.setOutlayManageId(manageUnion.getId());
|
||||||
dao.insert(detail);
|
dao.insert(detail);
|
||||||
}
|
}
|
||||||
|
}else if (outlayReimburse.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_THREE")){
|
||||||
|
// 更新分工会活动经费表
|
||||||
|
OutlayManageClub manageClub = dao.fetch(OutlayManageClub.class,
|
||||||
|
Cnd.where("year", "=", DateUtil.thisYear())
|
||||||
|
.and("clubId", "=", outlayReimburse.getClubId()));
|
||||||
|
if (ObjectUtil.isEmpty(manageClub)) {
|
||||||
|
throw new BaseException("该年份没有设置金额!");
|
||||||
|
}
|
||||||
|
if (manageClub.getTotalQuota().subtract(manageClub.getUsedQuota()).compareTo(outlayReimburse.getMoney()) < 0) {
|
||||||
|
throw new BaseException("剩余配额不足!剩余:" + manageClub.getTotalQuota().subtract(manageClub.getUsedQuota()));
|
||||||
|
}
|
||||||
|
manageClub.setUsedQuota(manageClub.getUsedQuota().add(outlayReimburse.getMoney()));
|
||||||
|
dao.updateIgnoreNull(manageClub);
|
||||||
|
|
||||||
|
//添加使用记录到经费管理表
|
||||||
|
detail.setOutlayManageId(manageClub.getId());
|
||||||
|
dao.insert(detail);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,11 @@ public class OutlayReimburse extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
private String clubId;
|
private String clubId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("社团名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||||
|
private String clubName;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("报销经费来源")
|
@Comment("报销经费来源")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
|||||||
+35
-11
@@ -3,10 +3,15 @@ package com.budwk.app.zhgh.outlay.outlayReimburse.service.impl;
|
|||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.budwk.app.sys.models.Sys_role;
|
||||||
|
import com.budwk.app.sys.models.Sys_user_role;
|
||||||
|
import com.budwk.app.sys.services.SysRoleService;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
import com.budwk.app.zhgh.outlay.activityBudget.models.ActivityBudget;
|
||||||
|
import com.budwk.app.zhgh.outlay.outlayManage.club.model.OutlayManageClub;
|
||||||
import com.budwk.app.zhgh.outlay.outlayManage.school.model.OutlayManageSchool;
|
import com.budwk.app.zhgh.outlay.outlayManage.school.model.OutlayManageSchool;
|
||||||
import com.budwk.app.zhgh.outlay.outlayManage.union.model.OutlayManageUnion;
|
import com.budwk.app.zhgh.outlay.outlayManage.union.model.OutlayManageUnion;
|
||||||
import com.budwk.app.zhgh.outlay.outlayReimburse.model.OutlayReimburse;
|
import com.budwk.app.zhgh.outlay.outlayReimburse.model.OutlayReimburse;
|
||||||
@@ -15,6 +20,7 @@ import org.nutz.dao.Cnd;
|
|||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
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.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;
|
||||||
|
|
||||||
@@ -33,6 +39,9 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
super(dao);
|
super(dao);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private SysRoleService sysRoleService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NutMap getBudgetMoneyOrActivity(String outlayManageSource, String clubId, String unionId, String id) {
|
public NutMap getBudgetMoneyOrActivity(String outlayManageSource, String clubId, String unionId, String id) {
|
||||||
|
|
||||||
@@ -114,14 +123,20 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
.and("unionId", "=", StrUtil.isNotBlank(unionId) ? unionId : SecurityUtil.getUnionId()));
|
.and("unionId", "=", StrUtil.isNotBlank(unionId) ? unionId : SecurityUtil.getUnionId()));
|
||||||
map.put("budgetMoney", ObjectUtil.isNotEmpty(union) ? union.getTotalQuota().subtract(union.getUsedQuota()) : 0);
|
map.put("budgetMoney", ObjectUtil.isNotEmpty(union) ? union.getTotalQuota().subtract(union.getUsedQuota()) : 0);
|
||||||
} else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
} else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||||
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
||||||
|
List<Sys_user_role> userRoles = dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
|
|
||||||
|
OutlayManageClub club = dao().fetch(OutlayManageClub.class, Cnd.where("year", "=", DateUtil.thisYear())
|
||||||
|
.and("clubId", "in", StrUtil.isNotBlank(clubId) ? List.of(clubId) : myClubId));
|
||||||
|
map.put("budgetMoney", ObjectUtil.isNotEmpty(club) ? club.getTotalQuota().subtract(club.getUsedQuota()) : 0);
|
||||||
}
|
}
|
||||||
map.put("activityList", canBudgetList);
|
map.put("activityList", canBudgetList);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BigDecimal getBxMoneyByActivityId(String budgetId,Boolean isSchoolBudget) {
|
public BigDecimal getBxMoneyByActivityId(String budgetId, Boolean isSchoolBudget) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
rei.money
|
rei.money
|
||||||
@@ -133,9 +148,9 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
AND ins.state = 20
|
AND ins.state = 20
|
||||||
""").setParam("budgetId", budgetId);
|
""").setParam("budgetId", budgetId);
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (isSchoolBudget!=null){
|
if (isSchoolBudget != null) {
|
||||||
cnd.and("isSchoolBudget", "=", isSchoolBudget);
|
cnd.and("isSchoolBudget", "=", isSchoolBudget);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<NutMap> reiList = listMap(sql);
|
List<NutMap> reiList = listMap(sql);
|
||||||
|
|
||||||
@@ -159,7 +174,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
if (budget.getIsRepeatReimburse()) {
|
if (budget.getIsRepeatReimburse()) {
|
||||||
//1.查询已经报销了的总金额
|
//1.查询已经报销了的总金额
|
||||||
if (budget.getIsSchoolBudget()) {
|
if (budget.getIsSchoolBudget()) {
|
||||||
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId,budget.getIsSchoolBudget());
|
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId, budget.getIsSchoolBudget());
|
||||||
//如果是分工会进来并且报销的活动是校会预算
|
//如果是分工会进来并且报销的活动是校会预算
|
||||||
// 1. 计算本次加上之前的报销总金额
|
// 1. 计算本次加上之前的报销总金额
|
||||||
BigDecimal totalReimbursement = bXMoney.add(moneyBig);
|
BigDecimal totalReimbursement = bXMoney.add(moneyBig);
|
||||||
@@ -170,7 +185,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId,budget.getIsSchoolBudget());
|
BigDecimal bXMoney = getBxMoneyByActivityId(budgetId, budget.getIsSchoolBudget());
|
||||||
//如果是自己的项目就能超20%
|
//如果是自己的项目就能超20%
|
||||||
//1.算出现在还能报销多少钱
|
//1.算出现在还能报销多少钱
|
||||||
BigDecimal twentyPercent = budget.getTotalBudgetMoney().multiply(new BigDecimal("20")).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
|
BigDecimal twentyPercent = budget.getTotalBudgetMoney().multiply(new BigDecimal("20")).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP);
|
||||||
@@ -203,7 +218,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
//如果报销的项目是可以重复报销的
|
//如果报销的项目是可以重复报销的
|
||||||
if (budget.getIsRepeatReimburse()) {
|
if (budget.getIsRepeatReimburse()) {
|
||||||
//这个预算已经报销了多少钱
|
//这个预算已经报销了多少钱
|
||||||
BigDecimal totalMoney = getBxMoneyByActivityId(budgetId,null);
|
BigDecimal totalMoney = getBxMoneyByActivityId(budgetId, null);
|
||||||
//查出这个活动有没有跟其他预算关联,如果跟其他预算关联了,代表当前这条预算是分工会也能报校工会也能报,
|
//查出这个活动有没有跟其他预算关联,如果跟其他预算关联了,代表当前这条预算是分工会也能报校工会也能报,
|
||||||
// schoolBudgetId字段不为空就代表这条预算是使用的校工会的金额
|
// schoolBudgetId字段不为空就代表这条预算是使用的校工会的金额
|
||||||
List<ActivityBudget> budgetList = dao().query(ActivityBudget.class,
|
List<ActivityBudget> budgetList = dao().query(ActivityBudget.class,
|
||||||
@@ -257,18 +272,27 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}else if ("ACTIVITY_BUDGET_TYPE_THREE".equals(outlayManageSource)) {
|
||||||
|
//如果进来的是协会
|
||||||
|
OutlayManageClub outlayManageClub = dao().fetch(OutlayManageClub.class, Cnd.where("year", "=", DateUtil.thisYear())
|
||||||
|
.and("clubId", "=", clubId));
|
||||||
|
if (ObjectUtil.isEmpty(outlayManageClub)) {
|
||||||
|
return Result.error("该年份没有设置金额!");
|
||||||
|
}
|
||||||
|
if (outlayManageClub.getTotalQuota().subtract(outlayManageClub.getUsedQuota()).compareTo(moneyBig) < 0) {
|
||||||
|
return Result.error("剩余配额不足!剩余:" + outlayManageClub.getTotalQuota().subtract(outlayManageClub.getUsedQuota()));
|
||||||
|
} else {
|
||||||
|
return Result.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return Result.error("经费查询错误!");
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NutMap findOne(String id) {
|
public NutMap findOne(String id) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -210,9 +210,12 @@ layout("/layouts/platform.html"){
|
|||||||
honorChange(val) {
|
honorChange(val) {
|
||||||
const secondList = this.honorOptions.map((item) => item.children).flat()
|
const secondList = this.honorOptions.map((item) => item.children).flat()
|
||||||
const honor = secondList.find((o) => o.id === val)
|
const honor = secondList.find((o) => o.id === val)
|
||||||
this.selectHonor = this.honorOptions.find((o) => o.id === honor.parentId)
|
if (honor){
|
||||||
this.$set(this.formData, "honorTypeId", this.selectHonor.id)
|
this.selectHonor = this.honorOptions.find((o) => o.id === honor.parentId)
|
||||||
this.$set(this.formData, "honorId", honor.id)
|
this.$set(this.formData, "honorTypeId", this.selectHonor.id)
|
||||||
|
this.$set(this.formData, "honorId", honor.id)
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
doSave() {},
|
doSave() {},
|
||||||
doSubmit() {
|
doSubmit() {
|
||||||
@@ -233,9 +236,8 @@ layout("/layouts/platform.html"){
|
|||||||
openAdd() {
|
openAdd() {
|
||||||
this.stepActive = 0
|
this.stepActive = 0
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
this.$nextTick(() => {
|
this.formData={}
|
||||||
this.$refs.formRef.resetFields()
|
this.$refs.formRef.clearValidate()
|
||||||
})
|
|
||||||
this.$axios.post("/platform/evaluate/activity/initQuotaAllocations").then((res) => {
|
this.$axios.post("/platform/evaluate/activity/initQuotaAllocations").then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$set(this.formData, "quotaAllocations", res.data)
|
this.$set(this.formData, "quotaAllocations", res.data)
|
||||||
|
|||||||
@@ -1,111 +1,117 @@
|
|||||||
const apply_component = {
|
const apply_component = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<el-dialog title="填写申请" :visible.sync="dialogVisible" width="70%" top="50px" class="ele-dialog-form">
|
<el-card shadow="never">
|
||||||
|
<snaker-start slot="header" label="荣誉申报" define_key="PYPX"></snaker-start>
|
||||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="120px">
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="120px">
|
||||||
<template v-if="this.formData.honorType == '个人荣誉'">
|
<template v-if="formData.honorTypeName == '个人荣誉'">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item prop="userName" label="姓名">
|
<el-form-item prop="userName" label="姓名">
|
||||||
<el-input :value="formData.userName" disabled></el-input>
|
<el-input :value="formData.userName" disabled></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item prop="loginName" label="工号">
|
<el-form-item prop="loginName" label="工号">
|
||||||
<el-input :value="formData.loginName" disabled></el-input>
|
<el-input :value="formData.loginName" disabled></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item prop="birthday" label="出生日期">
|
<el-form-item prop="birthday" label="出生日期">
|
||||||
<el-date-picker v-model="formData.birthday" type="date" placeholder="选择日期" value-format="yyyy-MM-dd" style="width: 100%"></el-date-picker>
|
<el-date-picker v-model="formData.birthday" type="date" placeholder="选择日期"
|
||||||
</el-form-item>
|
value-format="yyyy-MM-dd" style="width: 100%"></el-date-picker>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="12">
|
</el-col>
|
||||||
<el-form-item prop="sex" label="性别" disabled>
|
<el-col :span="12">
|
||||||
<el-input v-model="formData.sex" disabled></el-input>
|
<el-form-item prop="sex" label="性别" disabled>
|
||||||
</el-form-item>
|
<el-input v-model="formData.sex" disabled></el-input>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
</el-row>
|
</el-col>
|
||||||
<el-row :gutter="20">
|
</el-row>
|
||||||
<el-col :span="12">
|
<el-row :gutter="20">
|
||||||
<el-form-item prop="unitName" label="所属单位">
|
<el-col :span="12">
|
||||||
<el-input :value="formData.unitName" disabled></el-input>
|
<el-form-item prop="unitName" label="所属单位">
|
||||||
</el-form-item>
|
<el-input :value="formData.unitName" disabled></el-input>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
<el-col :span="12">
|
</el-col>
|
||||||
<el-form-item prop="unionName" label="所属分工会">
|
<el-col :span="12">
|
||||||
<el-input :value="formData.unionName" disabled></el-input>
|
<el-form-item prop="unionName" label="所属分工会">
|
||||||
</el-form-item>
|
<el-input :value="formData.unionName" disabled></el-input>
|
||||||
</el-col>
|
</el-form-item>
|
||||||
</el-row>
|
</el-col>
|
||||||
<el-row :gutter="20">
|
</el-row>
|
||||||
<el-col :span="12">
|
<el-row :gutter="20">
|
||||||
<el-form-item label="民族" prop="nation">
|
<el-col :span="12">
|
||||||
<dict-select style="width: 100%" placeholder="请选择民族" v-model="formData.nation" code="USER_NATION"></dict-select>
|
<el-form-item label="民族" prop="nation">
|
||||||
</el-form-item>
|
<dict-select style="width: 100%" placeholder="请选择民族" v-model="formData.nation"
|
||||||
</el-col>
|
code="USER_NATION"></dict-select>
|
||||||
<el-col :span="12">
|
</el-form-item>
|
||||||
<el-form-item prop="political" label="政治面貌">
|
</el-col>
|
||||||
<dict-select
|
<el-col :span="12">
|
||||||
style="width: 100%"
|
<el-form-item prop="political" label="政治面貌">
|
||||||
placeholder="请选择政治面貌"
|
<dict-select
|
||||||
v-model="formData.political"
|
style="width: 100%"
|
||||||
code="POLITICAL_STATUS"
|
placeholder="请选择政治面貌"
|
||||||
></dict-select>
|
v-model="formData.political"
|
||||||
</el-form-item>
|
code="POLITICAL_STATUS"
|
||||||
</el-col>
|
></dict-select>
|
||||||
</el-row>
|
</el-form-item>
|
||||||
<el-row :gutter="20">
|
</el-col>
|
||||||
<el-col :span="12">
|
</el-row>
|
||||||
<el-form-item prop="education" label="学历">
|
<el-row :gutter="20">
|
||||||
<dict-select style="width: 100%" placeholder="请选择学历" v-model="formData.education" code="USER_EDUCATION"></dict-select>
|
<el-col :span="12">
|
||||||
</el-form-item>
|
<el-form-item prop="education" label="学历">
|
||||||
</el-col>
|
<dict-select style="width: 100%" placeholder="请选择学历" v-model="formData.education"
|
||||||
<el-col :span="12">
|
code="USER_EDUCATION"></dict-select>
|
||||||
<el-form-item prop="technicalTitle" label="技术职称">
|
</el-form-item>
|
||||||
<el-input v-model="formData.technicalTitle" placeholder="填写技术职称" max="50"></el-input>
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span="12">
|
||||||
</el-col>
|
<el-form-item prop="technicalTitle" label="技术职称">
|
||||||
</el-row>
|
<el-input v-model="formData.technicalTitle" placeholder="填写技术职称"
|
||||||
<el-row :gutter="20">
|
max="50"></el-input>
|
||||||
<el-col :span="12">
|
</el-form-item>
|
||||||
<el-form-item prop="governmentPosition" label="党政职务">
|
</el-col>
|
||||||
<el-input v-model="formData.governmentPosition" placeholder="填写党政职务" max="50"></el-input>
|
</el-row>
|
||||||
</el-form-item>
|
<el-row :gutter="20">
|
||||||
</el-col>
|
<el-col :span="12">
|
||||||
</el-row>
|
<el-form-item prop="governmentPosition" label="党政职务">
|
||||||
|
<el-input v-model="formData.governmentPosition" placeholder="填写党政职务"
|
||||||
|
max="50"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item prop="unionName" label="申报工会">
|
<el-form-item prop="unionName" label="申报工会">
|
||||||
<el-input :value="formData.unionName" placeholder="请输入申报工会"></el-input>
|
<el-input :value="formData.unionName" placeholder="请输入申报工会"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="工会主席" prop="unionLeader">
|
<el-form-item label="工会主席" prop="unionLeader">
|
||||||
<el-input placeholder="请填写工会主席" v-model="formData.unionLeader"></el-input>
|
<el-input placeholder="请填写工会主席" v-model="formData.unionLeader"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="会员人数" prop="memberNumber">
|
<el-form-item label="会员人数" prop="memberNumber">
|
||||||
<el-input-number v-model="formData.memberNumber" :min="0"
|
<el-input-number v-model="formData.memberNumber" :min="0"
|
||||||
placeholder="请填写会员人数"
|
placeholder="请填写会员人数"
|
||||||
:max="2000" style="width: 100%"></el-input-number>
|
:max="2000" style="width: 100%"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="曾获何种奖励" prop="historyHonor">
|
<el-form-item label="曾获何种奖励" prop="historyHonor">
|
||||||
<el-input v-model="formData.historyHonor" type="textarea" rows="8" maxlength="5000"
|
<el-input v-model="formData.historyHonor" type="textarea" rows="8" maxlength="5000"
|
||||||
show-word-limit></el-input>
|
show-word-limit></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -113,77 +119,74 @@ const apply_component = {
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="简要事迹(主要成绩)" prop="briefDeeds">
|
<el-form-item label="简要事迹(主要成绩)" prop="briefDeeds">
|
||||||
<el-input v-model="formData.briefDeeds" type="textarea" rows="8" maxlength="5000"
|
<el-input v-model="formData.briefDeeds" type="textarea" rows="8" maxlength="5000"
|
||||||
show-word-limit></el-input>
|
show-word-limit></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="附件" prop="files">
|
<el-form-item label="附件" prop="files">
|
||||||
<file-upload :value.sync="formData.files" upload_result_category="array" :upload_number="5" complete_result></file-upload>
|
<file-upload :value.sync="formData.files" upload_result_category="array" :upload_number="5"
|
||||||
|
complete_result></file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer">
|
<el-row type="flex" justify="end" style="margin-top: 20px;">
|
||||||
<el-button @click="dialogVisible = false">取消</el-button>
|
<el-button type="primary" plain @click="onSave">保存</el-button>
|
||||||
<el-button type="primary" plain @click="save">保存</el-button>
|
<el-button type="primary" @click="onSubmit" v-if="!taskId" class="ml15">提交</el-button>
|
||||||
<el-button type="primary" @click="submit">提交</el-button>
|
<el-button type="primary" @click="onFinishTask" class="ml15" v-else>提交</el-button>
|
||||||
</div>
|
</el-row>
|
||||||
</el-dialog>
|
</el-card>
|
||||||
`,
|
`,
|
||||||
store,
|
store,
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dialogVisible: false,
|
taskId: "",
|
||||||
formData: {},
|
formData: {},
|
||||||
formRules: {
|
formRules: {
|
||||||
loginName: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
loginName: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
userName: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
userName: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
unitName: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
unitName: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
unionName: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
unionName: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
birthday: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
birthday: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
sex: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
sex: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
nation: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
nation: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
political: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
political: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
education: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
education: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
technicalTitle: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
technicalTitle: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
governmentPosition: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
governmentPosition: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
briefDeeds: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
briefDeeds: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
historyHonor: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
historyHonor: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
unionLeader: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
unionLeader: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
memberNumber: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
memberNumber: [{required: true, message: "必填", trigger: ["change", "blur"]}],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onOpenEdit(id) {
|
onOpenEdit(row) {
|
||||||
this.dialogVisible = true
|
this.taskId = row.taskId
|
||||||
this.$nextTick(() => {
|
this.$axios.post("/platform/evaluate/apply/info", {id: row.id}).then((res) => {
|
||||||
this.$axios.post("/platform/evaluate/apply/info", { id }).then((res) => {
|
if (res.code === 0) {
|
||||||
if (res.code === 0) {
|
this.formData = res.data
|
||||||
this.formData = res.data
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
onOpen(activity) {
|
onOpen(activity) {
|
||||||
this.dialogVisible = true
|
this.initForm()
|
||||||
this.$nextTick(() => {
|
this.$set(this.formData, "evaluateId", activity.id)
|
||||||
this.initForm()
|
this.$set(this.formData, "honorTypeId", activity.honorTypeId)
|
||||||
this.$set(this.formData, "evaluateId", activity.id)
|
this.$set(this.formData, "honorTypeName", activity.honorTypeName)
|
||||||
this.$set(this.formData, "honorTypeId", activity.honorTypeId)
|
this.$set(this.formData, "honorId", activity.honorId)
|
||||||
this.$set(this.formData, "honorType", activity.honorType)
|
|
||||||
this.$set(this.formData, "honorId", activity.honorId)
|
|
||||||
|
|
||||||
if (activity.honorType.includes('集体')) {
|
if (activity.honorTypeName.includes('集体')) {
|
||||||
this.getCollectiveInfo()
|
this.getCollectiveInfo()
|
||||||
}
|
}
|
||||||
})
|
|
||||||
},
|
},
|
||||||
getCollectiveInfo() {
|
getCollectiveInfo() {
|
||||||
this.$axios.post("/platform/honor/basic/settings/getUnionInfo", { id: this.$store.state.user.union.id }).then((res) => {
|
this.$axios.post("/platform/honor/basic/settings/getUnionInfo", {id: this.$store.state.user.union.id}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.formData.memberNumber = res.data.memberNumber
|
this.formData.memberNumber = res.data.memberNumber
|
||||||
this.formData.unionLeader = res.data.username
|
this.formData.unionLeader = res.data.username
|
||||||
@@ -191,41 +194,67 @@ const apply_component = {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
save() {
|
// 保存
|
||||||
this.$confirm("保存后可在我的申请里面再次编辑,您确定要保存吗?", "提示", { type: "warning" }).then(() => {
|
onSave() {
|
||||||
this.$axios
|
this.$confirm("您确定保存吗?", "提示", {
|
||||||
.post("/platform/evaluate/apply/save", {
|
confirmButtonText: "确定",
|
||||||
evaluateApply: JSON.stringify(this.formData)
|
cancelButtonText: "取消",
|
||||||
})
|
type: "warning"
|
||||||
.then((res) => {
|
}).then(() => {
|
||||||
if (res.code === 0) {
|
this.$axios.post('/platform/evaluate/apply/save', {data: JSON.stringify(this.formData)}).then(res => {
|
||||||
this.$message.success("保存成功")
|
if (res.code === 0) {
|
||||||
this.dialogVisible = false
|
this.$message.success("保存成功")
|
||||||
this.$emit("refresh", null)
|
if (this.formData.id) {
|
||||||
this.$store.dispatch("pjaxRoute", "/platform/evaluate/mine")
|
this.$emit('refresh')
|
||||||
|
} else {
|
||||||
|
window.location.href = '/platform/evaluate/mine'
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
submit() {
|
onSubmit() {
|
||||||
this.$refs.formRef.validate((valid) => {
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
if (valid) {
|
confirmButtonText: "确定",
|
||||||
this.$axios
|
cancelButtonText: "取消",
|
||||||
.post("/platform/evaluate/apply/submit", {
|
type: "warning"
|
||||||
evaluateApply: JSON.stringify(this.formData)
|
}).then(() => {
|
||||||
})
|
this.$axios.post('/platform/evaluate/apply/submit', {
|
||||||
.then((res) => {
|
data: JSON.stringify(this.formData),
|
||||||
if (res.code === 0) {
|
taskId: this.taskId
|
||||||
this.$message.success("提交成功")
|
}).then(res => {
|
||||||
this.dialogVisible = false
|
if (res.code === 0) {
|
||||||
this.$emit("refresh", null)
|
this.$message.success("提交成功")
|
||||||
this.$store.dispatch("pjaxRoute", "/platform/evaluate/mine")
|
if (this.formData.id) {
|
||||||
}
|
this.$emit('refresh')
|
||||||
})
|
} else {
|
||||||
}
|
window.location.href = '/platform/evaluate/mine'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onFinishTask() {
|
||||||
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post('/platform/evaluate/apply/submitAgain', {
|
||||||
|
data: JSON.stringify(this.formData),
|
||||||
|
taskId: this.taskId
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success("提交成功")
|
||||||
|
if (this.formData.id) {
|
||||||
|
this.$emit('refresh')
|
||||||
|
} else {
|
||||||
|
window.location.href = '/platform/evaluate/mine'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
initForm() {
|
initForm() {
|
||||||
const user = this.$store.state.user
|
const user = this.$store.state.user
|
||||||
this.$set(this.formData, "userName", user.username)
|
this.$set(this.formData, "userName", user.username)
|
||||||
|
|||||||
@@ -3,35 +3,43 @@ layout("/layouts/platform.html"){
|
|||||||
#-->
|
#-->
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<el-card shadow="never">
|
<guava ref="guava">
|
||||||
<search @search="doSearch">
|
<template>
|
||||||
<search-item label="年度:">
|
<el-card shadow="never">
|
||||||
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度" style="width: 100%"></el-date-picker>
|
<search @search="doSearch">
|
||||||
</search-item>
|
<search-item label="年度:">
|
||||||
</search>
|
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度"
|
||||||
</el-card>
|
style="width: 100%"></el-date-picker>
|
||||||
<el-card shadow="never">
|
</search-item>
|
||||||
<table-tool>
|
</search>
|
||||||
<template slot="tool"></template>
|
</el-card>
|
||||||
</table-tool>
|
<el-card shadow="never">
|
||||||
<el-table :data="tableData" @sort-change="pageOrder">
|
<table-tool>
|
||||||
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
<template slot="tool"></template>
|
||||||
<el-table-column prop="year" label="年份"></el-table-column>
|
</table-tool>
|
||||||
<el-table-column prop="name" label="名称"></el-table-column>
|
<el-table :data="tableData" @sort-change="pageOrder">
|
||||||
<el-table-column prop="startTime" label="开始时间"></el-table-column>
|
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||||
<el-table-column prop="endTime" label="结束时间"></el-table-column>
|
<el-table-column prop="year" label="年份"></el-table-column>
|
||||||
<el-table-column prop="honorName" label="类型"></el-table-column>
|
<el-table-column prop="name" label="名称"></el-table-column>
|
||||||
<el-table-column prop="honorTypeName" label="荣誉类型"></el-table-column>
|
<el-table-column prop="startTime" label="开始时间"></el-table-column>
|
||||||
<el-table-column label="操作" width="200px">
|
<el-table-column prop="endTime" label="结束时间"></el-table-column>
|
||||||
<template slot-scope="{row}">
|
<el-table-column prop="honorName" label="类型"></el-table-column>
|
||||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
<el-table-column prop="honorTypeName" label="荣誉类型"></el-table-column>
|
||||||
<el-button size="mini" type="primary" @click="openApply(row)">申请</el-button>
|
<el-table-column label="操作" width="200px">
|
||||||
</template>
|
<template slot-scope="{row}">
|
||||||
</el-table-column>
|
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||||
</el-table>
|
<el-button size="mini" type="primary" @click="openApply(row)">申请</el-button>
|
||||||
</el-card>
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
<apply_form ref="applyFormRef" @refresh=""></apply_form>
|
<template #edit>
|
||||||
|
<apply_form ref="applyFormRef" @refresh=""></apply_form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -46,22 +54,21 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
dialogVisible: false
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
openView(row) {},
|
openView(row) {
|
||||||
|
},
|
||||||
openApply(row) {
|
openApply(row) {
|
||||||
$.post("/platform/evaluate/apply/valid", { id: row.id }).then((res) => {
|
$.post("/platform/evaluate/apply/valid", {id: row.id}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
const { msg, data } = res
|
const {msg, data} = res
|
||||||
if (!data) {
|
if (!data) {
|
||||||
this.$message.warning(msg)
|
this.$message.warning(msg)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//可以申请
|
//可以申请
|
||||||
this.dialogVisible = true
|
this.$refs.guava.edit(()=>{
|
||||||
this.$nextTick(() => {
|
|
||||||
this.$refs.applyFormRef.onOpen(row)
|
this.$refs.applyFormRef.onOpen(row)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
+77
-69
@@ -7,24 +7,22 @@ layout("/layouts/platform.html"){
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="年度">
|
<search-item label="年度">
|
||||||
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度"></el-date-picker>
|
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy"
|
||||||
|
placeholder="选择年度"></el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="姓名:">
|
<search-item label="申请人">
|
||||||
<el-input placeholder="请输入姓名查询" clearable v-model="pageForm.userName"></el-input>
|
<el-input @keyup.enter.native="doSearch" clearable
|
||||||
</search-item>
|
placeholder="请输入内容"
|
||||||
<search-item label="工号:">
|
v-model="pageForm.searchKeyword">
|
||||||
<el-input placeholder="请输入工号查询" clearable v-model="pageForm.loginName"></el-input>
|
<el-select placeholder="查询类型" slot="prepend"
|
||||||
</search-item>
|
style="width: 100px;"
|
||||||
<search-item label="所属工会:">
|
v-model="pageForm.searchName">
|
||||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
<el-option label="姓名" value="info.userName"></el-option>
|
||||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
<el-option label="工号" value="info.loginName"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</el-input>
|
||||||
<search-item label="所属单位:">
|
|
||||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
|
|
||||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
||||||
</el-select>
|
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
@@ -44,20 +42,19 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column prop="unionName" label="分工会"></el-table-column>
|
<el-table-column prop="unionName" label="分工会"></el-table-column>
|
||||||
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
||||||
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||||
<el-table-column label="操作" width="300px">
|
<el-table-column prop="instanceState" label="流程状态">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
|
size="small"></enum-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" width="300px">
|
||||||
<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.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||||
审核
|
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
|
||||||
@click="openRevoke(row.processInstanceTaskId)"
|
|
||||||
size="mini"
|
|
||||||
type="danger"
|
|
||||||
>
|
|
||||||
撤回
|
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -65,25 +62,32 @@ layout("/layouts/platform.html"){
|
|||||||
<!--#include("/layouts/pagination.html"){}#-->
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<template #public>
|
<template #edit>
|
||||||
<info ref="infoRef"></info>
|
<info ref="infoRef">
|
||||||
<div v-if="showApprovalForm">
|
<div v-if="showApprovalForm">
|
||||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
<div class="process-title">
|
||||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
{{formData.taskName}}
|
||||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
</div>
|
||||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||||
</el-form-item>
|
class="flow-task-form">
|
||||||
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:false,message:'必填',trigger:['change','blur']}]">
|
<el-form-item label="审批意见" prop="tf_opinion"
|
||||||
<pc-signature v-model="formData.approvalSignature"></pc-signature>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
</el-form-item>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form>
|
</el-form-item>
|
||||||
<el-row type="flex" justify="end">
|
<!--:rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
||||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
<el-form-item label="签字" prop="tf_userSign"
|
||||||
<el-button type="danger" @click="doApproval('BACK')">退回重新申请</el-button>
|
>
|
||||||
<el-button type="danger" @click="doApproval('REJECT')">拒绝申请</el-button>
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
<el-button type="primary" @click="doApproval('PASS')">同意申请</el-button>
|
</el-form-item>
|
||||||
</el-row>
|
</el-form>
|
||||||
</div>
|
<el-row type="flex" justify="end">
|
||||||
|
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||||
|
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||||
|
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||||
|
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</info>
|
||||||
</template>
|
</template>
|
||||||
</guava>
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
@@ -102,10 +106,7 @@ layout("/layouts/platform.html"){
|
|||||||
return {
|
return {
|
||||||
pageForm: {
|
pageForm: {
|
||||||
approval: false,
|
approval: false,
|
||||||
unionId: "",
|
searchName: "info.userName"
|
||||||
unitId: "",
|
|
||||||
year: null,
|
|
||||||
searchKeyword: ""
|
|
||||||
},
|
},
|
||||||
unionList: [],
|
unionList: [],
|
||||||
unitList: [],
|
unitList: [],
|
||||||
@@ -114,54 +115,61 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
openView(row) {
|
openView(row) {
|
||||||
this.$refs.guava.public(() => {
|
this.$refs.guava.edit(() => {
|
||||||
this.$refs.infoRef.onOpen(row.id)
|
this.$refs.infoRef.onOpen(row)
|
||||||
this.showApprovalForm = false
|
this.showApprovalForm = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
openApproval(row) {
|
openAudit(row) {
|
||||||
this.$refs.guava.public(() => {
|
this.$refs.guava.edit(() => {
|
||||||
this.$refs.infoRef.onOpen(row.id)
|
|
||||||
this.formData = row.approvalParam
|
|
||||||
this.showApprovalForm = true
|
this.showApprovalForm = true
|
||||||
|
this.formData = {
|
||||||
|
processTaskId: row.taskId,
|
||||||
|
taskName: row.curTaskName
|
||||||
|
}
|
||||||
|
this.$refs.infoRef.onOpen(row)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
doApproval(approvalType) {
|
handleTaskAction(val) {
|
||||||
this.formData.bpmTaskApprovalType = approvalType
|
this.$refs.formRef.validate((valid) => {
|
||||||
this.$refs.approvalFormRef.validate((valid) => {
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.$axios
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
.post(loc() + "/approval", {
|
confirmButtonText: "确定",
|
||||||
approval: JSON.stringify(this.formData)
|
cancelButtonText: "取消",
|
||||||
})
|
type: "warning"
|
||||||
.then((res) => {
|
}).then(() => {
|
||||||
|
this.$axios.post("/flow/common/executeTask", {
|
||||||
|
data: JSON.stringify({
|
||||||
|
...this.formData,
|
||||||
|
submitType: val
|
||||||
|
})
|
||||||
|
}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$refs.guava.index()
|
this.$refs.guava.index()
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
openRevoke(taskId) {
|
onRevoke(row) {
|
||||||
this.$confirm("您确定要撤回吗?", "提示", {
|
this.$confirm("您确定要撤回吗?", "提示", {
|
||||||
confirmButtonText: "确定",
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "info"
|
type: "info"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
this.unitList = await this.$businessTool.listUnit()
|
|
||||||
this.unionList = await this.$businessTool.listUnion()
|
|
||||||
this.pageData()
|
this.pageData()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,99 +1,125 @@
|
|||||||
const info = {
|
const info = {
|
||||||
template: /*language=HTML*/ `
|
template: /*language=HTML*/ `
|
||||||
<div>
|
<div>
|
||||||
<div>
|
<div class="process-title">
|
||||||
<div class="process-title">
|
申请信息
|
||||||
申请信息
|
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
|
||||||
|
</div>
|
||||||
|
<el-descriptions :column="3" border>
|
||||||
|
<template v-if="!this.viewData.memberNumber">
|
||||||
|
<el-descriptions-item label="姓名">{{viewData.userName}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="工号">{{viewData.loginName}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="出生年月">{{viewData.birthday}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="民族">{{viewData.nation}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="政治面貌">{{viewData.political}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="学历">{{viewData.education}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="技术职称">{{viewData.technicalTitle}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="党政职务">{{viewData.governmentPosition}}</el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-descriptions-item label="工会" :span="1.5">{{viewData.unionName}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="单位" :span="1.5">{{viewData.unitName}}</el-descriptions-item>
|
||||||
|
|
||||||
|
<template v-if="this.viewData.memberNumber">
|
||||||
|
<el-descriptions-item label="工会主席" :span="1.5">{{viewData.unionLeader}}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="会员人数" :span="1.5">{{viewData.memberNumber}}</el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-descriptions-item label="曾获何种荣誉称号" :span="3">
|
||||||
|
<div style="white-space: pre-line">
|
||||||
|
{{viewData.historyHonor}}
|
||||||
|
</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="简要事迹(主要成绩)" :span="3">
|
||||||
|
<div style="white-space: pre-line">{{viewData.briefDeeds}}</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="附件">
|
||||||
|
<file-preview :files="viewData.files" complete_result></file-preview>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
|
||||||
|
<template v-for="(task,index) in doneTasks">
|
||||||
|
<div class="task-panel mt10">
|
||||||
|
<div class="task-panel-header">{{ task.displayName }}</div>
|
||||||
|
<el-descriptions border class="flow-task-form" :column="3" :key="task.id"
|
||||||
|
v-if="task.ext.isFirstTaskNode">
|
||||||
|
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName
|
||||||
|
}}({{task.ext.initiatorAccount}})
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="办理结果">
|
||||||
|
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||||
|
:value="task.ext.submitType"></dict-tag>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
|
||||||
|
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
||||||
|
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName
|
||||||
|
}}({{task.taskFormData.loginName}})
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="办理结果">
|
||||||
|
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||||
|
:value="task.ext.submitType"></dict-tag>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode" :span="3">
|
||||||
|
{{
|
||||||
|
task.taskFormData.opinion
|
||||||
|
}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="签字" v-if="!task.ext.isFirstTaskNode" :span="3">
|
||||||
|
<el-image :src="task.ext.tf_userSign" fit="cover" style="height: 60px"
|
||||||
|
v-if="task.ext.tf_userSign"></el-image>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
</el-descriptions>
|
||||||
</div>
|
</div>
|
||||||
<el-descriptions border>
|
</template>
|
||||||
<template v-if="!this.viewData.memberNumber">
|
|
||||||
<el-descriptions-item label="姓名">{{viewData.userName}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="工号">{{viewData.loginName}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="性别">{{viewData.sex}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="出生年月">{{viewData.birthday}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="民族">{{viewData.nation}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="政治面貌">{{viewData.political}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="学历">{{viewData.education}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="技术职称">{{viewData.technicalTitle}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="党政职务">{{viewData.governmentPosition}}</el-descriptions-item>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<el-descriptions-item label="工会" :span="1.5">{{viewData.unionName}}</el-descriptions-item>
|
<slot></slot>
|
||||||
<el-descriptions-item label="单位" :span="1.5">{{viewData.unitName}}</el-descriptions-item>
|
|
||||||
|
|
||||||
<template v-if="this.viewData.memberNumber">
|
|
||||||
<el-descriptions-item label="工会主席" :span="1.5">{{viewData.unionLeader}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="会员人数" :span="1.5">{{viewData.memberNumber}}</el-descriptions-item>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<el-descriptions-item label="曾获何种荣誉称号" :span="3">{{viewData.historyHonor}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="简要事迹(主要成绩)" :span="3">{{viewData.briefDeeds}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="附件">
|
|
||||||
<file-preview :files="viewData.files" complete_result></file-preview>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<div v-for="nodeTask in viewData.nodeTasks" :key="nodeTask.id">
|
|
||||||
<div class="process-title">
|
|
||||||
{{nodeTask.nodeName}}
|
|
||||||
</div>
|
|
||||||
<div v-if="nodeTask.nodeCode === 20">
|
|
||||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id">
|
|
||||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审核时间">{{ task.endOn }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审核结果">
|
|
||||||
<div v-if="task.extVariable">
|
|
||||||
<el-tag type="success" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'PASS'">同意</el-tag>
|
|
||||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'BACK'">退回重新填写</el-tag>
|
|
||||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'REJECT'">拒绝</el-tag>
|
|
||||||
</div>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="签字" :span="3">
|
|
||||||
<el-image :src="task.extVariable.approvalSignature"
|
|
||||||
v-if="task.extVariable && task.extVariable.approvalSignature"
|
|
||||||
class="signature-image"></el-image>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
</div>
|
|
||||||
<div v-if="nodeTask.nodeCode === 50">
|
|
||||||
<el-descriptions :column="3" border v-for="task in nodeTask.tasks" :key="task.id">
|
|
||||||
<el-descriptions-item label="审核人">{{ task.actualOwnerLoginName + '-' + task.actualOwnerUserName }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审核时间">{{ task.endOn }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审核结果">
|
|
||||||
<div v-if="task.extVariable">
|
|
||||||
<el-tag type="success" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'PASS'">同意</el-tag>
|
|
||||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'BACK'">退回重新填写</el-tag>
|
|
||||||
<el-tag type="danger" size="mini" v-if="task.extVariable.bpmTaskApprovalType === 'REJECT'">拒绝</el-tag>
|
|
||||||
</div>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审核意见" :span="3">{{ task.extVariable.approvalOpinion}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="签字" :span="3">
|
|
||||||
<el-image :src="task.extVariable.approvalSignature"
|
|
||||||
v-if="task.extVariable && task.extVariable.approvalSignature"
|
|
||||||
class="signature-image"></el-image>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<snaker-chart ref="snakerChartRef"></snaker-chart>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`,
|
`,
|
||||||
|
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
viewData: {}
|
viewData: {},
|
||||||
|
row: {},
|
||||||
|
doneTasks: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
onOpen(id) {
|
// 打开
|
||||||
this.$axios.post("/platform/evaluate/common/info", { id }).then((res) => {
|
onOpen(row) {
|
||||||
|
this.row = row
|
||||||
|
this.getInfo()
|
||||||
|
this.getDoneTasks()
|
||||||
|
},
|
||||||
|
// 获取申请信息
|
||||||
|
getInfo() {
|
||||||
|
this.$axios.post("/platform/evaluate/common/info", {id: this.row.id}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.viewData = res.data
|
this.viewData = res.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
// 获取已办任务审批记录
|
||||||
|
getDoneTasks() {
|
||||||
|
this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.doneTasks = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 查看流程图
|
||||||
|
openChart() {
|
||||||
|
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="年度">
|
<search-item label="年度">
|
||||||
<el-date-picker v-model="pageForm.year" type="year" placeholder="选择年度" value-format="yyyy"></el-date-picker>
|
<el-date-picker v-model="pageForm.year" type="year" placeholder="选择年度"
|
||||||
|
value-format="yyyy"></el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -22,23 +23,28 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column prop="unionName" label="分工会"></el-table-column>
|
<el-table-column prop="unionName" label="分工会"></el-table-column>
|
||||||
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
||||||
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||||
<el-table-column label="操作" width="300px">
|
<el-table-column prop="instanceState" label="流程状态">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
|
size="small"></enum-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" width="300px">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
<el-button @click="openView(row)" size="mini" type="primary">
|
||||||
<el-button v-if="[10,40,70].includes(row.processInstanceNodeCode)" size="mini" type="primary" @click="openEdit(row)">
|
查看
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="openEdit(row)" size="mini" type="primary"
|
||||||
|
v-if="row.taskKey === 'startTask' || !row.instanceId">
|
||||||
编辑
|
编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||||
v-if="[20].includes(row.processInstanceNodeCode) && !row.nextTaskIsComplete"
|
</el-button>
|
||||||
size="mini"
|
<el-button @click="doDelete(row.id)" size="mini" type="danger"
|
||||||
type="danger"
|
v-if="row.taskKey === 'startTask' || !row.instanceId">
|
||||||
@click="openRevoke(row)"
|
删除
|
||||||
>
|
|
||||||
撤销
|
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- <el-button size="mini" type="primary" @click="exportApplyDocx(row.id)">导出</el-button>-->
|
|
||||||
<el-button v-if="[10].includes(row.processInstanceNodeCode)" size="mini" type="danger" @click="doDelete(row)">删除</el-button>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -47,13 +53,15 @@ layout("/layouts/platform.html"){
|
|||||||
<template #public>
|
<template #public>
|
||||||
<info ref="infoRef"></info>
|
<info ref="infoRef"></info>
|
||||||
</template>
|
</template>
|
||||||
|
<template #edit>
|
||||||
|
<apply_form ref="applyFormRef" @refresh="refresh"></apply_form>
|
||||||
|
</template>
|
||||||
</guava>
|
</guava>
|
||||||
<apply_form ref="applyFormRef" @refresh="doSearch"></apply_form>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
<!--#include('../apply/apply.js'){}#-->
|
|
||||||
<!--#include("../common/info.js"){}#-->
|
<!--#include("../common/info.js"){}#-->
|
||||||
|
<!--#include("../apply/apply.js"){}#-->
|
||||||
|
|
||||||
new Vue({
|
new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
@@ -67,6 +75,38 @@ layout("/layouts/platform.html"){
|
|||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
refresh() {
|
||||||
|
this.$refs.guava.index()
|
||||||
|
this.pageData()
|
||||||
|
},
|
||||||
|
onRevoke(row) {
|
||||||
|
this.$confirm("您确定要撤回吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
doDelete(id) {
|
||||||
|
this.$confirm("您确定要撤回吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/platform/evaluate/mine/delete", {id}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
openView(row) {
|
openView(row) {
|
||||||
this.$refs.guava.public(() => {
|
this.$refs.guava.public(() => {
|
||||||
this.$refs.infoRef.onOpen(row.id)
|
this.$refs.infoRef.onOpen(row.id)
|
||||||
@@ -74,32 +114,10 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
openEdit(row) {
|
openEdit(row) {
|
||||||
this.$refs.applyFormRef.onOpenEdit(row.id)
|
this.$refs.guava.edit(() => {
|
||||||
},
|
this.$refs.applyFormRef.onOpenEdit(row)
|
||||||
openRevoke(row) {
|
|
||||||
this.$confirm("您确定要撤销申请吗?", "提示", {
|
|
||||||
confirmButtonText: "确定",
|
|
||||||
cancelButtonText: "取消",
|
|
||||||
type: "warning"
|
|
||||||
}).then(() => {
|
|
||||||
this.$axios.post("/platform/evaluate/mine/revokeApply", { id: row.id }).then((resp) => {
|
|
||||||
this.$message.success(resp.msg)
|
|
||||||
this.doSearch()
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async doDelete(row) {
|
|
||||||
const confirm = await this.$confirm("您确定要删除吗?", "提示", {
|
|
||||||
confirmButtonText: "确定",
|
|
||||||
cancelButtonText: "取消",
|
|
||||||
type: "warning"
|
|
||||||
})
|
|
||||||
if (confirm === "confirm") {
|
|
||||||
const resp = await this.$axios.post("/platform/evaluate/mine/delete", { id: row.id })
|
|
||||||
this.$message.success(resp.msg)
|
|
||||||
this.doSearch()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.pageData()
|
this.pageData()
|
||||||
|
|||||||
+75
-55
@@ -9,11 +9,17 @@ layout("/layouts/platform.html"){
|
|||||||
<search-item label="年度">
|
<search-item label="年度">
|
||||||
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度"></el-date-picker>
|
<el-date-picker v-model="pageForm.year" type="year" value-format="yyyy" placeholder="选择年度"></el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="姓名:">
|
<search-item label="申请人">
|
||||||
<el-input placeholder="请输入姓名查询" clearable v-model="pageForm.userName"></el-input>
|
<el-input @keyup.enter.native="doSearch" clearable
|
||||||
</search-item>
|
placeholder="请输入内容"
|
||||||
<search-item label="工号:">
|
v-model="pageForm.searchKeyword">
|
||||||
<el-input placeholder="请输入工号查询" clearable v-model="pageForm.loginName"></el-input>
|
<el-select placeholder="查询类型" slot="prepend"
|
||||||
|
style="width: 100px;"
|
||||||
|
v-model="pageForm.searchName">
|
||||||
|
<el-option label="姓名" value="info.userName"></el-option>
|
||||||
|
<el-option label="工号" value="info.loginName"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="所属工会:">
|
<search-item label="所属工会:">
|
||||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
||||||
@@ -42,22 +48,21 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column prop="loginName" label="工号"></el-table-column>
|
<el-table-column prop="loginName" label="工号"></el-table-column>
|
||||||
<el-table-column prop="unitName" label="单位"></el-table-column>
|
<el-table-column prop="unitName" label="单位"></el-table-column>
|
||||||
<el-table-column prop="unionName" label="分工会"></el-table-column>
|
<el-table-column prop="unionName" label="分工会"></el-table-column>
|
||||||
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
|
||||||
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
||||||
<el-table-column label="当前节点" prop="processInstanceNodeName" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
||||||
<el-table-column label="操作" width="300px">
|
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||||
|
<el-table-column prop="instanceState" label="流程状态">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
|
size="small"></enum-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" width="300px">
|
||||||
<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.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||||
审核
|
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||||
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
|
|
||||||
@click="openRevoke(row.processInstanceTaskId)"
|
|
||||||
size="mini"
|
|
||||||
type="danger"
|
|
||||||
>
|
|
||||||
撤回
|
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -65,25 +70,32 @@ layout("/layouts/platform.html"){
|
|||||||
<!--#include("/layouts/pagination.html"){}#-->
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<template #public>
|
<template #edit>
|
||||||
<info ref="infoRef"></info>
|
<info ref="infoRef">
|
||||||
<div v-if="showApprovalForm">
|
<div v-if="showApprovalForm">
|
||||||
<div class="process-title">{{formData.processInstanceNodeName}}</div>
|
<div class="process-title">
|
||||||
<el-form :model="formData" ref="approvalFormRef" label-position="left" label-width="80px">
|
{{formData.taskName}}
|
||||||
<el-form-item label="审核意见" prop="approvalOpinion" :rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
</div>
|
||||||
<user-opinion-textarea v-model="formData.approvalOpinion"></user-opinion-textarea>
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||||
</el-form-item>
|
class="flow-task-form">
|
||||||
<el-form-item label="电子签名" prop="approvalSignature" :rules="[{required:false,message:'必填',trigger:['change','blur']}]">
|
<el-form-item label="审批意见" prop="tf_opinion"
|
||||||
<pc-signature v-model="formData.approvalSignature"></pc-signature>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
</el-form-item>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form>
|
</el-form-item>
|
||||||
<el-row type="flex" justify="end">
|
<!--:rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
||||||
<el-button plain @click="$refs.guava.index()">取消</el-button>
|
<el-form-item label="签字" prop="tf_userSign"
|
||||||
<el-button type="danger" @click="doApproval('BACK')">退回重新申请</el-button>
|
>
|
||||||
<el-button type="danger" @click="doApproval('REJECT')">拒绝申请</el-button>
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
<el-button type="primary" @click="doApproval('PASS')">同意申请</el-button>
|
</el-form-item>
|
||||||
</el-row>
|
</el-form>
|
||||||
</div>
|
<el-row type="flex" justify="end">
|
||||||
|
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||||
|
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||||
|
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||||
|
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</info>
|
||||||
</template>
|
</template>
|
||||||
</guava>
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
@@ -114,50 +126,58 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
openView(row) {
|
openView(row) {
|
||||||
this.$refs.guava.public(() => {
|
this.$refs.guava.edit(() => {
|
||||||
this.$refs.infoRef.onOpen(row.id)
|
this.$refs.infoRef.onOpen(row)
|
||||||
this.showApprovalForm = false
|
this.showApprovalForm = false
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
openApproval(row) {
|
openAudit(row) {
|
||||||
this.$refs.guava.public(() => {
|
this.$refs.guava.edit(() => {
|
||||||
this.$refs.infoRef.onOpen(row.id)
|
this.$refs.infoRef.onOpen(row)
|
||||||
this.formData = row.approvalParam
|
this.formData = {
|
||||||
|
processTaskId: row.taskId,
|
||||||
|
taskName: row.curTaskName
|
||||||
|
}
|
||||||
this.showApprovalForm = true
|
this.showApprovalForm = true
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
doApproval(approvalType) {
|
handleTaskAction(val) {
|
||||||
this.formData.bpmTaskApprovalType = approvalType
|
this.$refs.formRef.validate((valid) => {
|
||||||
this.$refs.approvalFormRef.validate((valid) => {
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.$axios
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
.post(loc() + "/approval", {
|
confirmButtonText: "确定",
|
||||||
approval: JSON.stringify(this.formData)
|
cancelButtonText: "取消",
|
||||||
})
|
type: "warning"
|
||||||
.then((res) => {
|
}).then(() => {
|
||||||
|
this.$axios.post("/flow/common/executeTask", {
|
||||||
|
data: JSON.stringify({
|
||||||
|
...this.formData,
|
||||||
|
submitType: val
|
||||||
|
})
|
||||||
|
}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$refs.guava.index()
|
this.$refs.guava.index()
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})},
|
||||||
},
|
onRevoke(row) {
|
||||||
openRevoke(taskId) {
|
|
||||||
this.$confirm("您确定要撤回吗?", "提示", {
|
this.$confirm("您确定要撤回吗?", "提示", {
|
||||||
confirmButtonText: "确定",
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "info"
|
type: "info"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post(loc() + "/revoke", { taskId }).then((res) => {
|
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
this.unitList = await this.$businessTool.listUnit()
|
this.unitList = await this.$businessTool.listUnit()
|
||||||
|
|||||||
+49
-21
@@ -8,30 +8,47 @@ layout("/layouts/platform.html"){
|
|||||||
<search @search="doSearch">
|
<search @search="doSearch">
|
||||||
<search-item label="年度:">
|
<search-item label="年度:">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
placeholder="选择年度"
|
placeholder="选择年度"
|
||||||
type="year"
|
type="year"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
v-model="pageForm.year"
|
v-model="pageForm.year"
|
||||||
value-format="yyyy"
|
value-format="yyyy"
|
||||||
></el-date-picker>
|
></el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="姓名:">
|
<search-item label="申请人">
|
||||||
<el-input placeholder="请输入姓名查询" clearable v-model="pageForm.userName"></el-input>
|
<el-input @keyup.enter.native="doSearch" clearable
|
||||||
</search-item>
|
placeholder="请输入内容"
|
||||||
<search-item label="工号:">
|
v-model="pageForm.searchKeyword">
|
||||||
<el-input placeholder="请输入工号查询" clearable v-model="pageForm.loginName"></el-input>
|
<el-select placeholder="查询类型" slot="prepend"
|
||||||
|
style="width: 100px;"
|
||||||
|
v-model="pageForm.searchName">
|
||||||
|
<el-option label="姓名" value="info.userName"></el-option>
|
||||||
|
<el-option label="工号" value="info.loginName"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
<!-- <search-item label="名称:">-->
|
<!-- <search-item label="名称:">-->
|
||||||
<!-- <el-input placeholder="请输入评优评先名称查询" clearable v-model="pageForm.evaluateName"></el-input>-->
|
<!-- <el-input placeholder="请输入评优评先名称查询" clearable v-model="pageForm.evaluateName"></el-input>-->
|
||||||
<!-- </search-item>-->
|
<!-- </search-item>-->
|
||||||
|
<search-item label="评优评先事项:">
|
||||||
|
<el-select v-model="pageForm.evaluateId" placeholder="请选择评优评先事项" filterable clearable
|
||||||
|
style="width: 100%">
|
||||||
|
<el-option v-for="item in evaluateList" :key="item.id" :label="item.name"
|
||||||
|
:value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
<search-item label="所属工会:">
|
<search-item label="所属工会:">
|
||||||
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable style="width: 100%">
|
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" filterable clearable
|
||||||
<el-option v-for="item in unionList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
style="width: 100%">
|
||||||
|
<el-option v-for="item in unionList" :key="item.id" :label="item.name"
|
||||||
|
:value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="所属单位:">
|
<search-item label="所属单位:">
|
||||||
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable style="width: 100%">
|
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位" filterable clearable
|
||||||
<el-option v-for="item in unitList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
style="width: 100%">
|
||||||
|
<el-option v-for="item in unitList" :key="item.id" :label="item.name"
|
||||||
|
:value="item.id"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
@@ -50,11 +67,11 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
<el-table-column prop="applyDateTime" label="申请时间"></el-table-column>
|
||||||
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="honorName" label="类型" show-overflow-tooltip></el-table-column>
|
||||||
<!-- <el-table-column prop="honorTypeName" label="荣誉类型"></el-table-column>-->
|
<!-- <el-table-column prop="honorTypeName" label="荣誉类型"></el-table-column>-->
|
||||||
<el-table-column prop="processInstanceNodeName" label="审核状态"></el-table-column>
|
|
||||||
<el-table-column label="操作" width="300px" fixed="right">
|
<el-table-column label="操作" width="300px" fixed="right">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
<el-button size="mini" type="primary" @click="openView(row)">查看</el-button>
|
||||||
<el-button size="mini" type="danger" @click="doDelete(row)" v-if="$auth.hasPermission('evaluation.summary.delete')">
|
<el-button size="mini" type="danger" @click="doDelete(row)"
|
||||||
|
v-if="$auth.hasRoleOr(['SYSADMIN'])">
|
||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
<!--<el-button size="mini" type="primary" @click="">导出登记表</el-button>-->
|
<!--<el-button size="mini" type="primary" @click="">导出登记表</el-button>-->
|
||||||
@@ -63,7 +80,7 @@ layout("/layouts/platform.html"){
|
|||||||
</el-table>
|
</el-table>
|
||||||
<!--#include("/layouts/pagination.html"){}#-->
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
</el-card>
|
</el-card>
|
||||||
<template #public>
|
<template #view>
|
||||||
<info ref="infoRef"></info>
|
<info ref="infoRef"></info>
|
||||||
</template>
|
</template>
|
||||||
</guava>
|
</guava>
|
||||||
@@ -79,13 +96,18 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
pageForm: {
|
||||||
|
year: new Date().getFullYear() + "",
|
||||||
|
searchName: "info.userName"
|
||||||
|
},
|
||||||
unionList: [],
|
unionList: [],
|
||||||
unitList: []
|
unitList: [],
|
||||||
|
evaluateList: [],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
openView(row) {
|
openView(row) {
|
||||||
this.$refs.guava.public(() => {
|
this.$refs.guava.view(() => {
|
||||||
this.$refs.infoRef.onOpen(row.id)
|
this.$refs.infoRef.onOpen(row.id)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -99,15 +121,21 @@ layout("/layouts/platform.html"){
|
|||||||
type: "warning"
|
type: "warning"
|
||||||
})
|
})
|
||||||
if (confirm === "confirm") {
|
if (confirm === "confirm") {
|
||||||
const resp = await this.$axios.post("/platform/evaluate/summary/delete", { id: row.id })
|
const resp = await this.$axios.post("/platform/evaluate/summary/delete", {id: row.id})
|
||||||
this.$message.success(resp.msg)
|
this.$message.success(resp.msg)
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
listEvaluate() {
|
||||||
|
this.$axios.get("/platform/evaluate/activity/listEvaluateActivityByYear", {year: this.pageForm.year}).then(resp => {
|
||||||
|
this.evaluateList = resp.data
|
||||||
|
})
|
||||||
|
},
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
this.unitList = await this.$businessTool.listUnit()
|
this.unitList = await this.$businessTool.listUnit()
|
||||||
this.unionList = await this.$businessTool.listUnion()
|
this.unionList = await this.$businessTool.listUnion()
|
||||||
|
this.listEvaluate()
|
||||||
this.pageData()
|
this.pageData()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
+9
-3
@@ -37,8 +37,10 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="所属工会">
|
<search-item label="所属工会">
|
||||||
<el-select clearable filterable placeholder="所属工会" style="width: 100%" v-model="pageForm.unionId">
|
<el-select clearable filterable placeholder="所属工会" style="width: 100%"
|
||||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in unionOptions"></el-option>
|
v-model="pageForm.unionId">
|
||||||
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in unionOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
@@ -141,7 +143,10 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
const resp = await this.$axios.post('/platform/executiveCommittee/delegationOnePush/doDelete', {id: row.id})
|
const resp = await this.$axios.post('/platform/executiveCommittee/delegationOnePush/doDelete', {
|
||||||
|
id: row.id,
|
||||||
|
teacherMeetId: this.pageForm.teacherMeetId
|
||||||
|
})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
this.$message.success(resp.msg)
|
this.$message.success(resp.msg)
|
||||||
@@ -183,6 +188,7 @@ layout("/layouts/platform.html"){
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pushFormDialog .el-transfer-panel__list.is-filterable {
|
.pushFormDialog .el-transfer-panel__list.is-filterable {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -12,6 +12,7 @@ const DELEGATION_ONE_PUSH_FORMAL_DIALOG = {
|
|||||||
ref="transfer"
|
ref="transfer"
|
||||||
v-model="userValue"
|
v-model="userValue"
|
||||||
:data="userData"
|
:data="userData"
|
||||||
|
filter-placeholder="请按姓名模糊搜索"
|
||||||
:filter-method="filterMethod"
|
:filter-method="filterMethod"
|
||||||
:props="{key: 'userId',label: 'name'}"
|
:props="{key: 'userId',label: 'name'}"
|
||||||
:right-default-checked="rightChecked"
|
:right-default-checked="rightChecked"
|
||||||
|
|||||||
+12
-6
@@ -15,8 +15,8 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="查询"
|
placeholder="查询"
|
||||||
style="width: 100px;"
|
style="width: 100px;"
|
||||||
>
|
>
|
||||||
<el-option label="工号" value="t1.loginName"></el-option>
|
<el-option label="工号" value="t2.loginName"></el-option>
|
||||||
<el-option label="姓名" value="t1.userName"></el-option>
|
<el-option label="姓名" value="t2.userName"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-input>
|
</el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
@@ -37,8 +37,10 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="所属工会">
|
<search-item label="所属工会">
|
||||||
<el-select clearable filterable placeholder="所属工会" style="width: 100%" v-model="pageForm.unionId">
|
<el-select clearable filterable placeholder="所属工会" style="width: 100%"
|
||||||
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in unionOptions"></el-option>
|
v-model="pageForm.unionId">
|
||||||
|
<el-option :key="item.id" :label="item.name" :value="item.id"
|
||||||
|
v-for="item in unionOptions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
@@ -99,7 +101,7 @@ layout("/layouts/platform.html"){
|
|||||||
return {
|
return {
|
||||||
pageDataUrl: "/platform/executiveCommittee/delegationTwoPush/pageData",
|
pageDataUrl: "/platform/executiveCommittee/delegationTwoPush/pageData",
|
||||||
pageForm: {
|
pageForm: {
|
||||||
searchName: 't1.userName',
|
searchName: 't2.userName',
|
||||||
teacherMeetId: null,
|
teacherMeetId: null,
|
||||||
unionId: null
|
unionId: null
|
||||||
},
|
},
|
||||||
@@ -141,7 +143,10 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
const resp = await this.$axios.post('/platform/executiveCommittee/delegationTwoPush/doDelete', {id: row.id})
|
const resp = await this.$axios.post('/platform/executiveCommittee/delegationTwoPush/doDelete', {
|
||||||
|
id: row.id,
|
||||||
|
teacherMeetId: this.pageForm.teacherMeetId
|
||||||
|
})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
this.$message.success(resp.msg)
|
this.$message.success(resp.msg)
|
||||||
@@ -183,6 +188,7 @@ layout("/layouts/platform.html"){
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pushFormDialog .el-transfer-panel__list.is-filterable {
|
.pushFormDialog .el-transfer-panel__list.is-filterable {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -12,6 +12,7 @@ const DELEGATION_TWO_PUSH_FORMAL_DIALOG = {
|
|||||||
ref="transfer"
|
ref="transfer"
|
||||||
v-model="userValue"
|
v-model="userValue"
|
||||||
:data="userData"
|
:data="userData"
|
||||||
|
filter-placeholder="请按姓名模糊搜索"
|
||||||
:filter-method="filterMethod"
|
:filter-method="filterMethod"
|
||||||
:props="{key: 'userId',label: 'name'}"
|
:props="{key: 'userId',label: 'name'}"
|
||||||
:right-default-checked="rightChecked"
|
:right-default-checked="rightChecked"
|
||||||
|
|||||||
+25
-10
@@ -5,9 +5,22 @@ layout("/layouts/platform.html"){
|
|||||||
<div id="app" v-cloak>
|
<div id="app" v-cloak>
|
||||||
<guava ref="guava">
|
<guava ref="guava">
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<search @search="doSearch">
|
<search @search="fetchConfig">
|
||||||
<search-item label="教代会届次">
|
<search-item label="教代会届次">
|
||||||
|
<el-select
|
||||||
|
v-model="pageForm.sessionId"
|
||||||
|
filterable
|
||||||
|
placeholder="请选择教代会"
|
||||||
|
style="width:100%;"
|
||||||
|
@change="fetchConfig"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in teacherMeets"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.fullName"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -18,14 +31,15 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input-number v-model="formData.prepareGroupQuotaCount" placeholder="请填写筹备组推荐名额数"
|
<el-input-number v-model="formData.prepareGroupQuotaCount" placeholder="请填写筹备组推荐名额数"
|
||||||
style="width: 100%"></el-input-number>
|
style="width: 100%"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="committeeQuotaCount" label="委员会预选人数">
|
|
||||||
<el-input-number v-model="formData.committeeQuotaCount"
|
|
||||||
placeholder="请填写委员会预选人数" style="width: 100%"></el-input-number>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item prop="delegationQuotaCount" label="代表团推荐总数">
|
<el-form-item prop="delegationQuotaCount" label="代表团推荐总数">
|
||||||
<el-input-number v-model="formData.delegationQuotaCount"
|
<el-input-number v-model="formData.delegationQuotaCount"
|
||||||
placeholder="请填写代表团推荐名额总数" style="width: 100%"></el-input-number>
|
placeholder="请填写代表团推荐名额总数" style="width: 100%"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item prop="committeeQuotaCount" label="委员会预选人数">
|
||||||
|
<el-input-number v-model="formData.committeeQuotaCount"
|
||||||
|
placeholder="请填写委员会预选人数" style="width: 100%"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item prop="firstTime" label="第一次预选时间">
|
<el-form-item prop="firstTime" label="第一次预选时间">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.firstTime"
|
v-model="formData.firstTime"
|
||||||
@@ -94,7 +108,7 @@ layout("/layouts/platform.html"){
|
|||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
openJdhList:[],
|
teacherMeets:[],
|
||||||
pageForm: {
|
pageForm: {
|
||||||
sessionId: ''
|
sessionId: ''
|
||||||
},
|
},
|
||||||
@@ -123,14 +137,15 @@ layout("/layouts/platform.html"){
|
|||||||
getAllJdh() {
|
getAllJdh() {
|
||||||
this.$axios.post("/platform/teacherCongress/common/listSession", {}).then(resp => {
|
this.$axios.post("/platform/teacherCongress/common/listSession", {}).then(resp => {
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
this.openJdhList = resp.data
|
this.teacherMeets = resp.data
|
||||||
if (this.openJdhList.length > 0) {
|
if (this.teacherMeets && this.teacherMeets.length > 0) {
|
||||||
this.pageForm.sessionId = this.openJdhList[0].id
|
this.$set(this.pageForm, 'sessionId', this.teacherMeets[0].id)
|
||||||
this.fetchConfig()
|
this.fetchConfig()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
onHandle() {
|
onHandle() {
|
||||||
this.$refs['form'].validate(async (valid) => {
|
this.$refs['form'].validate(async (valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|||||||
+3
-3
@@ -14,8 +14,8 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="查询"
|
placeholder="查询"
|
||||||
style="width: 100px;"
|
style="width: 100px;"
|
||||||
>
|
>
|
||||||
<el-option label="工号" value="t1.loginName"></el-option>
|
<el-option label="工号" value="op.loginName"></el-option>
|
||||||
<el-option label="姓名" value="t1.userName"></el-option>
|
<el-option label="姓名" value="op.userName"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-input>
|
</el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
@@ -130,7 +130,7 @@ layout("/layouts/platform.html"){
|
|||||||
return {
|
return {
|
||||||
pageDataUrl: "/platform/executiveCommittee/executiveCommitteeMember/pageData",
|
pageDataUrl: "/platform/executiveCommittee/executiveCommitteeMember/pageData",
|
||||||
pageForm: {
|
pageForm: {
|
||||||
searchName: 't1.userName',
|
searchName: 'op.userName',
|
||||||
},
|
},
|
||||||
teacherMeets: [],
|
teacherMeets: [],
|
||||||
unionOptions: [],
|
unionOptions: [],
|
||||||
|
|||||||
+5
-1
@@ -156,7 +156,10 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(async () => {
|
}).then(async () => {
|
||||||
const resp = await this.$axios.post('/platform/executiveCommittee/delegationOnePush/doDelete', {id: row.id})
|
const resp = await this.$axios.post('/platform/executiveCommittee/preparatoryGroupPush/doDelete', {
|
||||||
|
id: row.id,
|
||||||
|
teacherMeetId: this.pageForm.teacherMeetId
|
||||||
|
})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
this.$message.success(resp.msg)
|
this.$message.success(resp.msg)
|
||||||
@@ -197,6 +200,7 @@ layout("/layouts/platform.html"){
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pushFormDialog .el-transfer-panel__list.is-filterable {
|
.pushFormDialog .el-transfer-panel__list.is-filterable {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -12,6 +12,7 @@ const PUSH_FORMAL_DIALOG = {
|
|||||||
ref="transfer"
|
ref="transfer"
|
||||||
v-model="userValue"
|
v-model="userValue"
|
||||||
:data="userData"
|
:data="userData"
|
||||||
|
filter-placeholder="请按姓名模糊搜索"
|
||||||
:filter-method="filterMethod"
|
:filter-method="filterMethod"
|
||||||
:props="{key: 'userId',label: 'name'}"
|
:props="{key: 'userId',label: 'name'}"
|
||||||
:right-default-checked="rightChecked"
|
:right-default-checked="rightChecked"
|
||||||
|
|||||||
@@ -82,6 +82,18 @@ layout("/layouts/platform.html"){
|
|||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="子女出生年月">
|
||||||
|
<el-form-item prop="childrenBirthday"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="formData.childrenBirthday"
|
||||||
|
type="date"
|
||||||
|
placeholder="请选择子女出生年月"
|
||||||
|
style="width: 100%;"
|
||||||
|
value-format="yyyy-MM-dd">
|
||||||
|
</el-date-picker>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="现就读学校">
|
<el-descriptions-item label="现就读学校">
|
||||||
<el-form-item prop="childrenCurrentSchool"
|
<el-form-item prop="childrenCurrentSchool"
|
||||||
@@ -111,6 +123,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="备注">
|
<el-descriptions-item label="备注">
|
||||||
<el-form-item prop="note"
|
<el-form-item prop="note"
|
||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
@@ -118,7 +132,6 @@ layout("/layouts/platform.html"){
|
|||||||
maxlength="50"></el-input>
|
maxlength="50"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item></el-descriptions-item>
|
|
||||||
<el-descriptions-item label="户口簿照片" :span="2">
|
<el-descriptions-item label="户口簿照片" :span="2">
|
||||||
<el-form-item prop="huKouFiles"
|
<el-form-item prop="huKouFiles"
|
||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
@@ -171,8 +184,50 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
validateBirthday() {
|
||||||
|
if (!this.formData.registrationType) {
|
||||||
|
return "请选择登记类型"
|
||||||
|
}
|
||||||
|
if (!this.formData.childrenBirthday) {
|
||||||
|
return "请选择子女出生年月"
|
||||||
|
}
|
||||||
|
|
||||||
|
const childrenBirthday = new Date(this.formData.childrenBirthday);
|
||||||
|
if (isNaN(childrenBirthday.getTime())) {
|
||||||
|
return "出生日期格式无效";
|
||||||
|
}
|
||||||
|
const registrationType = this.registrationTypeOption.find(item => item.registrationType === this.formData.registrationType)
|
||||||
|
if (registrationType.greaterThanBirthday) {
|
||||||
|
const greaterThanBirthday = new Date(registrationType.greaterThanBirthday);
|
||||||
|
if (isNaN(greaterThanBirthday.getTime())) {
|
||||||
|
return "限制日期格式无效";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (childrenBirthday < greaterThanBirthday) {
|
||||||
|
return "出生日期不能小于" + registrationType.greaterThanBirthday;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (registrationType.lessThanBirthday) {
|
||||||
|
const lessThanBirthday = new Date(registrationType.lessThanBirthday);
|
||||||
|
if (isNaN(lessThanBirthday.getTime())) {
|
||||||
|
return "限制日期格式无效";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (childrenBirthday > lessThanBirthday) {
|
||||||
|
return "出生日期不能大于" + registrationType.lessThanBirthday;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return null; // 表示通过
|
||||||
|
},
|
||||||
// 保存
|
// 保存
|
||||||
onSave() {
|
onSave() {
|
||||||
|
const msg = this.validateBirthday()
|
||||||
|
if ( msg){
|
||||||
|
this.$message.warning(msg)
|
||||||
|
return
|
||||||
|
}
|
||||||
this.getIsRepeatByIdCard().then(flag => {
|
this.getIsRepeatByIdCard().then(flag => {
|
||||||
if (flag) {
|
if (flag) {
|
||||||
|
|
||||||
@@ -194,6 +249,11 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
// 提交
|
// 提交
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
|
const msg = this.validateBirthday()
|
||||||
|
if ( msg){
|
||||||
|
this.$message.warning(msg)
|
||||||
|
return
|
||||||
|
}
|
||||||
this.getIsRepeatByIdCard().then(flag => {
|
this.getIsRepeatByIdCard().then(flag => {
|
||||||
if (flag) {
|
if (flag) {
|
||||||
|
|
||||||
@@ -218,6 +278,11 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
},
|
},
|
||||||
onFinishTask() {
|
onFinishTask() {
|
||||||
|
const msg = this.validateBirthday()
|
||||||
|
if ( msg){
|
||||||
|
this.$message.warning(msg)
|
||||||
|
return
|
||||||
|
}
|
||||||
this.getIsRepeatByIdCard().then(flag => {
|
this.getIsRepeatByIdCard().then(flag => {
|
||||||
if (flag) {
|
if (flag) {
|
||||||
|
|
||||||
@@ -227,11 +292,9 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning"
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post('/flow/common/executeTask', {
|
this.$axios.post('/platform/enrollmentRegistration/apply/submitAgain', {
|
||||||
data: JSON.stringify({
|
data: JSON.stringify(this.formData),
|
||||||
processTaskId: GetQueryString("taskId"),
|
taskId: GetQueryString("taskId")
|
||||||
submitType: 5
|
|
||||||
})
|
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success("提交成功")
|
this.$message.success("提交成功")
|
||||||
@@ -243,7 +306,7 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
async getIsRepeatByIdCard() {
|
async getIsRepeatByIdCard() {
|
||||||
if (!this.formData.childrenIdCard){
|
if (!this.formData.childrenIdCard) {
|
||||||
this.$message.error("请填写子女身份证号码")
|
this.$message.error("请填写子女身份证号码")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -273,11 +336,16 @@ layout("/layouts/platform.html"){
|
|||||||
this.formData = data
|
this.formData = data
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
const {id, username, loginname, mobile, union, unit} = this.$store.state.user
|
||||||
this.formData = {
|
this.formData = {
|
||||||
userName: this.$store.state.user.username,
|
userId: id,
|
||||||
loginName: this.$store.state.user.loginname,
|
userName: username,
|
||||||
unitName: this.$store.state.user.unit.name,
|
loginName: loginname,
|
||||||
mobile: this.$store.state.user.mobile,
|
unitName: unit.name,
|
||||||
|
unitId: unit.id,
|
||||||
|
unionName: union.name,
|
||||||
|
unionId: union.id,
|
||||||
|
mobile: mobile,
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,10 +62,15 @@ layout("/layouts/platform.html"){
|
|||||||
</el-table>
|
</el-table>
|
||||||
<!--#include("/layouts/pagination.html"){}#-->
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
</el-card>
|
</el-card>
|
||||||
|
<template #view>
|
||||||
|
<enrollment-registration-info ref="enrollmentRegistrationInfo">
|
||||||
|
|
||||||
|
</enrollment-registration-info>
|
||||||
|
</template>
|
||||||
</guava>
|
</guava>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
|
<!--#include('../info.js'){}#-->
|
||||||
new Vue({
|
new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
store,
|
store,
|
||||||
@@ -79,9 +84,14 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {},
|
components: {
|
||||||
|
"enrollment-registration-info": ENROLLMENT_REGISTRATION_INFO
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
openView(row) {
|
openView(row) {
|
||||||
|
this.$refs.guava.view(() => {
|
||||||
|
this.$refs.enrollmentRegistrationInfo.onOpen(row)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
openEdit(row) {
|
openEdit(row) {
|
||||||
window.location.href = '/platform/enrollmentRegistration/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id
|
window.location.href = '/platform/enrollmentRegistration/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id
|
||||||
@@ -101,6 +111,18 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
doDelete(id) {
|
doDelete(id) {
|
||||||
|
this.$confirm("您确定要删除吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/platform/enrollmentRegistration/applyList/doDelete", {id: id}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ const ENROLLMENT_REGISTRATION_INFO = {
|
|||||||
<el-descriptions-item label="身份证号">
|
<el-descriptions-item label="身份证号">
|
||||||
{{viewData.childrenIdCard}}
|
{{viewData.childrenIdCard}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="子女出生日期" >
|
||||||
|
{{viewData.childrenBirthday}}
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="现就读学校">
|
<el-descriptions-item label="现就读学校">
|
||||||
{{viewData.childrenCurrentSchool}}
|
{{viewData.childrenCurrentSchool}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@@ -38,10 +41,10 @@ const ENROLLMENT_REGISTRATION_INFO = {
|
|||||||
<el-descriptions-item label="子女户口所在地">
|
<el-descriptions-item label="子女户口所在地">
|
||||||
{{viewData.childrenHuKouAddress}}
|
{{viewData.childrenHuKouAddress}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="备注" :span="2">
|
<el-descriptions-item label="备注" :span="2">
|
||||||
{{viewData.note}}
|
{{viewData.note}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item></el-descriptions-item>
|
|
||||||
<el-descriptions-item :span="3" label="户口簿照片">
|
<el-descriptions-item :span="3" label="户口簿照片">
|
||||||
<file-preview :files="viewData.huKouFiles" complete_result></file-preview>
|
<file-preview :files="viewData.huKouFiles" complete_result></file-preview>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ layout("/layouts/platform.html"){
|
|||||||
</guava>
|
</guava>
|
||||||
|
|
||||||
<el-dialog :visible.sync="dialogVisible" title="创建计划" width="40%">
|
<el-dialog :visible.sync="dialogVisible" title="创建计划" width="40%">
|
||||||
<el-form :model="formData" :rules="formRules" ref="formRef" label-width="150px">
|
<el-form :model="formData" :rules="formRules" ref="formRef" label-width="170px">
|
||||||
<el-row :gutter="10">
|
<el-row :gutter="10">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item
|
<el-form-item
|
||||||
|
|||||||
@@ -312,11 +312,9 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning"
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post('/flow/common/executeTask', {
|
this.$axios.post('/platform/activity/budget/apply/submitAgain', {
|
||||||
data: JSON.stringify({
|
data: JSON.stringify(this.formData),
|
||||||
processTaskId: GetQueryString("taskId"),
|
taskId: GetQueryString("taskId")
|
||||||
submitType: 5
|
|
||||||
})
|
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success("提交成功")
|
this.$message.success("提交成功")
|
||||||
|
|||||||
+1
-1
@@ -223,7 +223,7 @@ layout("/layouts/platform.html"){
|
|||||||
async created() {
|
async created() {
|
||||||
this.budgetTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE")
|
this.budgetTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE")
|
||||||
this.budgetTypeOption.unshift({name: "全部类型", code: ""})
|
this.budgetTypeOption.unshift({name: "全部类型", code: ""})
|
||||||
// this.clubOption = await getClubsByRole()
|
this.clubOption = await this.$businessTool.listCLubByRole()
|
||||||
this.unionList = await this.$businessTool.listUnion()
|
this.unionList = await this.$businessTool.listUnion()
|
||||||
this.getApplyMoney()
|
this.getApplyMoney()
|
||||||
this.pageData()
|
this.pageData()
|
||||||
|
|||||||
@@ -1,110 +0,0 @@
|
|||||||
<div id="suggestion-box-view">
|
|
||||||
<el-descriptions :column="3" border>
|
|
||||||
<el-descriptions-item label="申报人">{{viewData.userName}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="工号">{{viewData.loginName}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="联系方式">{{viewData.mobile}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="预算类型">
|
|
||||||
<dict-tag :options="budgetTypeOption"
|
|
||||||
:value="viewData.outlayManageSource"></dict-tag>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="申报(承办)单位">{{viewData.helpUnitName}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="活动项目">{{viewData.activityMatter}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="活动时间">{{viewData.activityDate}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="申报预算金额(元)">{{viewData.declareTotalBudgetMoney}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="最终预算金额(元)">{{viewData.totalBudgetMoney}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="申报时间">{{viewData.applyDate}}</el-descriptions-item>
|
|
||||||
<el-descriptions-item :span="2"></el-descriptions-item>
|
|
||||||
<el-descriptions-item label="活动内容(如训练、装备等)" :span="3">
|
|
||||||
<div v-html="viewData.activityContent"></div>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
|
|
||||||
<template v-for="task in doneTasks">
|
|
||||||
<div class="task-panel mt10">
|
|
||||||
<div class="task-panel-header">{{ task.displayName }}</div>
|
|
||||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-if="task.ext.isFirstTaskNode">
|
|
||||||
<el-descriptions-item label="申请用户">{{ task.ext.initiatorName }}({{task.ext.initiatorAccount}})
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="申请时间">{{ task.finishTime }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="办理结果">
|
|
||||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
|
|
||||||
<el-descriptions border class="flow-task-form" :column="3" :key="task.id" v-else>
|
|
||||||
<el-descriptions-item label="办理用户">{{ task.taskFormData.userName
|
|
||||||
}}({{task.taskFormData.loginName}})
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="办理时间">{{ task.finishTime }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="办理结果">
|
|
||||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE" :value="task.ext.submitType"></dict-tag>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="审核金额">
|
|
||||||
{{task.ext.tf_totalBudgetMoney}}
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item :span="2"></el-descriptions-item>
|
|
||||||
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{ task.taskFormData.opinion
|
|
||||||
}}
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
new Vue({
|
|
||||||
el: "#suggestion-box-view",
|
|
||||||
store,
|
|
||||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
businessId: GetQueryString("businessId"),
|
|
||||||
instanceId: GetQueryString("instanceId"),
|
|
||||||
viewData: {},
|
|
||||||
doneTasks: [],
|
|
||||||
budgetTypeOption: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
info() {
|
|
||||||
this.$axios.post("/platform/activity/budget/applyList/findOne", {id: this.businessId}).then((res) => {
|
|
||||||
if (res.code === 0) {
|
|
||||||
this.viewData = res.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getDoneTasks() {
|
|
||||||
this.$axios.post("/flow/common/doneTasks", {instanceId: this.instanceId}).then((res) => {
|
|
||||||
if (res.code === 0) {
|
|
||||||
this.doneTasks = res.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE").then(resp => {
|
|
||||||
this.budgetTypeOption = resp
|
|
||||||
})
|
|
||||||
this.info()
|
|
||||||
this.getDoneTasks()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.task-panel {
|
|
||||||
background: white;
|
|
||||||
border-radius: 4px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.task-panel-header {
|
|
||||||
background: rgb(250, 250, 250);
|
|
||||||
border: 1px solid rgb(228, 231, 237);
|
|
||||||
border-bottom: none;
|
|
||||||
padding: 12px 16px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -0,0 +1,182 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="platform" id="app" v-cloak>
|
||||||
|
<guava ref="guava">
|
||||||
|
<template>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="年度">
|
||||||
|
<el-date-picker
|
||||||
|
@change="doSearch"
|
||||||
|
placeholder="选择年度"
|
||||||
|
style="width: 100%" type="year"
|
||||||
|
v-model="pageForm.year"
|
||||||
|
:clearable="false"
|
||||||
|
value-format="yyyy">
|
||||||
|
</el-date-picker>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
<el-card shadow="never" class="mt10">
|
||||||
|
<table-tool label="预算分配">
|
||||||
|
<template v-if="pageForm.year===$moment().format('YYYY')">
|
||||||
|
<el-button @click="issuedOutlay" size="small" type="primary" v-if="!isAllocation">年度分配
|
||||||
|
</el-button>
|
||||||
|
<el-button type="danger" size="small" @click="resetOutlay" v-else>
|
||||||
|
分配重置
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</table-tool>
|
||||||
|
<el-table :data="tableData" style="width: 100%" row-key="id"
|
||||||
|
v-loading="tableLoading" :size="tableSize" class="vi-table">
|
||||||
|
|
||||||
|
<el-table-column align="center" header-align="center" type="index"
|
||||||
|
:index="indexMethod" label="序号"
|
||||||
|
width="80px"></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
header-align="center"
|
||||||
|
v-for="column in tableColumns"
|
||||||
|
:label="column.label"
|
||||||
|
:prop="column.prop"
|
||||||
|
:sortable="column.sortable"
|
||||||
|
:width="column.width"
|
||||||
|
min-width="50"
|
||||||
|
>
|
||||||
|
<template v-if="column.prop=='totalQuota'" v-slot="{row}">
|
||||||
|
<el-input v-if="row.edit" maxlength="8" min="0" type="number"
|
||||||
|
style="width: 70%"
|
||||||
|
size="small"
|
||||||
|
onKeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
|
||||||
|
v-model="row.totalQuota2" placeholder="填写总额度">
|
||||||
|
<template slot="append">元</template>
|
||||||
|
</el-input>
|
||||||
|
<div v-else>
|
||||||
|
<span v-if="!row.totalQuota">暂未分配</span>
|
||||||
|
<span v-else><i>{{row.totalQuota}}</i> 元</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="操作"
|
||||||
|
fixed="right" width="200">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<div v-if="row.edit">
|
||||||
|
<el-button type="success" icon="el-icon-check" size="mini"
|
||||||
|
@click="doSubmit(row)"
|
||||||
|
circle></el-button>
|
||||||
|
<el-button type="danger" icon="el-icon-close" size="mini"
|
||||||
|
@click="$set(row,'edit',false)"
|
||||||
|
circle></el-button>
|
||||||
|
</div>
|
||||||
|
<el-button v-else size="mini" type="primary"
|
||||||
|
@click="$set(row,'edit',true);$set(row,'totalQuota2',row.totalQuota);">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
</guava>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const vue = new Vue({
|
||||||
|
el: '#app',
|
||||||
|
store,
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableColumns: [
|
||||||
|
{prop: 'year', label: '年度'},
|
||||||
|
{prop: 'clubName', label: '协会名称'},
|
||||||
|
{prop: 'totalQuota', label: '预算费用'},
|
||||||
|
],
|
||||||
|
pageForm: {
|
||||||
|
year: this.$moment().format("YYYY")
|
||||||
|
},
|
||||||
|
isAllocation: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {},
|
||||||
|
methods: {
|
||||||
|
doSubmit(row) {
|
||||||
|
this.$confirm('您确定要提交此条记录吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/platform/outlay/outlayManage/clubManage/doSubmit", {
|
||||||
|
id: row.id,
|
||||||
|
totalQuota: row.totalQuota2
|
||||||
|
}).then((resp) => {
|
||||||
|
if (resp.code === 0) {
|
||||||
|
row.edit = false
|
||||||
|
this.doSearch()
|
||||||
|
this.$message.success("编辑成功");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
resetOutlay() {
|
||||||
|
this.$confirm('您确定要重置今年的记录吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/platform/outlay/outlayManage/clubManage/resetOutlay", {
|
||||||
|
year: this.pageForm.year
|
||||||
|
}).then((resp) => {
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.doSearch()
|
||||||
|
this.getIsAllocation()
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
issuedOutlay() {
|
||||||
|
this.$confirm('您确定要下发今年的记录吗?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/platform/outlay/outlayManage/clubManage/issuedOutlay", {
|
||||||
|
year: this.pageForm.year
|
||||||
|
}).then((resp) => {
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.doSearch()
|
||||||
|
this.getIsAllocation()
|
||||||
|
this.$message.success("操作成功");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getIsAllocation() {
|
||||||
|
this.$axios.post("/platform/outlay/outlayManage/clubManage/getIsAllocationOutlay", {
|
||||||
|
year: this.pageForm.year
|
||||||
|
}).then((resp) => {
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.isAllocation = (resp.data > 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
this.getIsAllocation()
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
+101
@@ -0,0 +1,101 @@
|
|||||||
|
<!--#include("../../common/editDetailDialog.js"){}#-->
|
||||||
|
let OUTLAY_MANAGE_CLUB_USE_DETAIL_INFO = {
|
||||||
|
/*language=HTML*/
|
||||||
|
template: `
|
||||||
|
<div>
|
||||||
|
<template>
|
||||||
|
<table-tool label="预算详情列表"></table-tool>
|
||||||
|
<el-table :data="tableData" style="width: 100%" row-key="id"
|
||||||
|
v-loading="tableLoading" :size="tableSize" class="vi-table">
|
||||||
|
<el-table-column align="center" header-align="center" type="index"
|
||||||
|
:index="indexMethod" label="序号"
|
||||||
|
width="80px"></el-table-column>
|
||||||
|
<el-table-column label="活动名称" prop="projectName" header-align="center"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column label="活动时间" prop="activityTime"
|
||||||
|
header-align="center"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column label="活动人数" prop="activityNumber"
|
||||||
|
header-align="center"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column label="活动费用" prop="adjustMoney"
|
||||||
|
header-align="center"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
|
||||||
|
<el-table-column label="审核人" prop="adjustUserName" header-align="center"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column label="事由" prop="adjustReason" header-align="center"
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="操作"
|
||||||
|
fixed="right" width="200">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-button size="mini" type="primary" @click="openEdit(row)"
|
||||||
|
:disabled="!['superadmin'].includes($store.state.user.loginname)"
|
||||||
|
>编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button size="mini" type="danger" @click="doDelete(row)"
|
||||||
|
:disabled="!['superadmin'].includes($store.state.user.loginname)"
|
||||||
|
>删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</template>
|
||||||
|
<template>
|
||||||
|
<outlay-manage-edit-detail-dialog ref="editDetailDialog" @search="search"></outlay-manage-edit-detail-dialog>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
`,
|
||||||
|
store,
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
rowData: {},
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
'outlay-manage-edit-detail-dialog': OUTLAY_MANAGE_EDIT_DETAIL_DIALOG
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
search(){
|
||||||
|
this.doSearch()
|
||||||
|
this.$emit("search")
|
||||||
|
},
|
||||||
|
openEdit(row) {
|
||||||
|
this.$refs.editDetailDialog.open(row,"/platform/outlay/outlayManage/clubUseDetail/doEditDetail")
|
||||||
|
|
||||||
|
},
|
||||||
|
doDelete(row) {
|
||||||
|
this.$confirm("确定要删除该详情吗?", "提示", {type: "warning"}).then(async () => {
|
||||||
|
this.$set(row, "loading", true)
|
||||||
|
const resp = await this.$axios.post("/platform/outlay/outlayManage/clubUseDetail/doDeleteDetail", {id: row.id})
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.doSearch()
|
||||||
|
this.$emit("search")
|
||||||
|
this.$message.success(resp.msg)
|
||||||
|
} else {
|
||||||
|
this.$message.error(resp.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
pageData() {
|
||||||
|
this.$axios.post("/platform/outlay/outlayManage/clubUseDetail/detailInfo", this.pageForm).then((resp) => {
|
||||||
|
this.tableLoading = false
|
||||||
|
if (resp.code === 0) {
|
||||||
|
this.tableData = resp.data.list
|
||||||
|
this.pageForm.totalCount = resp.data.totalCount
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
open(row) {
|
||||||
|
this.tableLoading = true
|
||||||
|
this.rowData = row
|
||||||
|
this.pageForm.outlayManageId = row.id
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,125 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="platform" id="app" v-cloak>
|
||||||
|
<guava ref="guava">
|
||||||
|
<template>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="年度">
|
||||||
|
<el-date-picker
|
||||||
|
@change="doSearch"
|
||||||
|
placeholder="选择年度"
|
||||||
|
style="width: 100%" type="year"
|
||||||
|
v-model="pageForm.year"
|
||||||
|
:clearable="false"
|
||||||
|
value-format="yyyy">
|
||||||
|
</el-date-picker>
|
||||||
|
</search-item>
|
||||||
|
|
||||||
|
<search-item label="所属协会" v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN'])">
|
||||||
|
<el-select clearable
|
||||||
|
placeholder="请选择协会"
|
||||||
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
|
<el-option
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.clubName"
|
||||||
|
:value="item.id"
|
||||||
|
v-for="item in clubOption">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
<el-card shadow="never" class="mt10">
|
||||||
|
<table-tool label="预算使用情况">
|
||||||
|
|
||||||
|
</table-tool>
|
||||||
|
<el-table :data="tableData" style="width: 100%" row-key="id"
|
||||||
|
v-loading="tableLoading" :size="tableSize" class="vi-table">
|
||||||
|
|
||||||
|
<el-table-column align="center" header-align="center" type="index"
|
||||||
|
:index="indexMethod" label="序号"
|
||||||
|
width="80px"></el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
show-overflow-tooltip
|
||||||
|
align="center"
|
||||||
|
header-align="center"
|
||||||
|
v-for="column in tableColumns"
|
||||||
|
:label="column.label"
|
||||||
|
:prop="column.prop"
|
||||||
|
:sortable="column.sortable"
|
||||||
|
:width="column.width"
|
||||||
|
min-width="50"
|
||||||
|
>
|
||||||
|
<template v-slot="{row}" v-if="column.prop=='surplusQuota'">
|
||||||
|
<span v-if="!row.totalQuota">{{row.totalQuota}}元</span>
|
||||||
|
<span v-else>{{(row.totalQuota-row.usedQuota).toFixed(2)}}</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="操作"
|
||||||
|
fixed="right" width="150">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-button size="mini" type="primary" @click="openView(row)">使用详情</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #view>
|
||||||
|
<outlay-manage-club-use-detail-info ref="detailInfo" @search="doSearch"></outlay-manage-club-use-detail-info>
|
||||||
|
</template>
|
||||||
|
</guava>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
<!--#include("detailInfo.js"){}#-->
|
||||||
|
const vue = new Vue({
|
||||||
|
el: '#app',
|
||||||
|
store,
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableColumns: [
|
||||||
|
{prop: 'year', label: '年度'},
|
||||||
|
{prop: 'clubName', label: '协会名称'},
|
||||||
|
{prop: 'clubCode', label: '协会编码'},
|
||||||
|
{prop: 'totalQuota', label: '分配总额度(元)'},
|
||||||
|
{prop: 'usedQuota', label: '已使用额度(元)'},
|
||||||
|
{prop: 'surplusQuota', label: '剩余额度(元)'},
|
||||||
|
],
|
||||||
|
pageForm: {
|
||||||
|
year: this.$moment().format("YYYY")
|
||||||
|
},
|
||||||
|
clubOption: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
"outlay-manage-club-use-detail-info": OUTLAY_MANAGE_CLUB_USE_DETAIL_INFO
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openView(row) {
|
||||||
|
this.$refs.guava.view(() => {
|
||||||
|
this.$refs.detailInfo.open(row)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
this.clubOption = await this.$businessTool.listCLubByRole()
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
@@ -30,14 +30,15 @@ layout("/layouts/platform.html"){
|
|||||||
v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)">
|
v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)">
|
||||||
<el-form-item label="所属协会" prop="clubId"
|
<el-form-item label="所属协会" prop="clubId"
|
||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-select v-model="formData.clubId" @change="getBudgetMoneyOrActivity"
|
<el-select clearable
|
||||||
style="width: 100%"
|
placeholder="请选择协会"
|
||||||
placeholder="请选择所属协会">
|
style="width: 100%;" v-model="formData.clubId"
|
||||||
|
@change="getBudgetMoneyOrActivity();clubChange()">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in clubList"
|
:key="item.id"
|
||||||
:key="item.clubid"
|
|
||||||
:label="item.clubName"
|
:label="item.clubName"
|
||||||
:value="item.clubid">
|
:value="item.id"
|
||||||
|
v-for="item in clubOption">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -115,9 +116,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="签字" :span="2">
|
<el-descriptions-item label="签字" :span="2">
|
||||||
<!-- :rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
<!-- :rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
||||||
<el-form-item label="签字" prop="userSign"
|
<el-form-item label="签字" prop="userSign">
|
||||||
>
|
|
||||||
<pc-signature v-model="formData.userSign"></pc-signature>
|
<pc-signature v-model="formData.userSign"></pc-signature>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@@ -142,7 +142,7 @@ layout("/layouts/platform.html"){
|
|||||||
taskId: GetQueryString("taskId"),
|
taskId: GetQueryString("taskId"),
|
||||||
formData: {},
|
formData: {},
|
||||||
budgetTypeOption: [],
|
budgetTypeOption: [],
|
||||||
clubList: [],
|
clubOption: [],
|
||||||
activityList: [],
|
activityList: [],
|
||||||
moneyPlaceholder: "请输入金额",
|
moneyPlaceholder: "请输入金额",
|
||||||
budgetMoney: 0,
|
budgetMoney: 0,
|
||||||
@@ -198,11 +198,9 @@ layout("/layouts/platform.html"){
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post("/platform/outlay/reimburse/apply/bxAddValidate", this.formData).then(res => {
|
this.$axios.post("/platform/outlay/reimburse/apply/bxAddValidate", this.formData).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$axios.post('/flow/common/executeTask', {
|
this.$axios.post('/platform/outlay/reimburse/apply/submitAgain', {
|
||||||
data: JSON.stringify({
|
data: JSON.stringify(this.formData),
|
||||||
processTaskId: GetQueryString("taskId"),
|
taskId: GetQueryString("taskId")
|
||||||
submitType: 5
|
|
||||||
})
|
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$message.success("提交成功")
|
this.$message.success("提交成功")
|
||||||
@@ -219,6 +217,8 @@ layout("/layouts/platform.html"){
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.$set(this.formData, "budgetId", null)
|
this.$set(this.formData, "budgetId", null)
|
||||||
|
this.$set(this.formData, "clubId", null)
|
||||||
|
this.$set(this.formData, "clubName", null)
|
||||||
await this.getBudgetMoneyOrActivity()
|
await this.getBudgetMoneyOrActivity()
|
||||||
if (val === "ACTIVITY_BUDGET_TYPE_TWO") {
|
if (val === "ACTIVITY_BUDGET_TYPE_TWO") {
|
||||||
this.$set(this.formData, "unionId", this.$store.state.user.union.id)
|
this.$set(this.formData, "unionId", this.$store.state.user.union.id)
|
||||||
@@ -340,17 +340,31 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
const {id, username, loginname, mobile, union, unit} = this.$store.state.user
|
||||||
this.formData = {
|
this.formData = {
|
||||||
userName: this.$store.state.user.username,
|
userId: id,
|
||||||
loginName: this.$store.state.user.loginname,
|
userName: username,
|
||||||
mobile: this.$store.state.user.mobile,
|
loginName: loginname,
|
||||||
|
unitName: unit.name,
|
||||||
|
unitId: unit.id,
|
||||||
|
unionName: union.name,
|
||||||
|
unionId: union.id,
|
||||||
|
mobile: mobile,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
clubChange() {
|
||||||
|
if (this.formData.clubId) {
|
||||||
|
const club = this.clubOption.find(v => v.id === this.formData.clubId)
|
||||||
|
this.$set(this.formData, 'clubName', club.clubName)
|
||||||
|
} else {
|
||||||
|
this.$set(this.formData, 'clubName', null)
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
this.init()
|
this.init()
|
||||||
|
this.clubOption = await this.$businessTool.listCLubByRole()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,199 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
|
||||||
|
|
||||||
|
<div id="app">
|
||||||
|
<guava ref="guava">
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="年度">
|
||||||
|
<el-date-picker
|
||||||
|
@change="doSearch"
|
||||||
|
placeholder="选择年"
|
||||||
|
style="width: 100%"
|
||||||
|
type="year"
|
||||||
|
v-model="pageForm.year"
|
||||||
|
value-format="yyyy">
|
||||||
|
</el-date-picker>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="经办人">
|
||||||
|
<el-input @keyup.enter.native="doSearch" clearable
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model="pageForm.searchKeyword">
|
||||||
|
<el-select placeholder="查询类型" slot="prepend"
|
||||||
|
style="width: 100px;"
|
||||||
|
v-model="pageForm.searchName">
|
||||||
|
<el-option label="姓名" value="info.userName"></el-option>
|
||||||
|
<el-option label="工号" value="info.loginName"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-input>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<table-tool label="申请列表">
|
||||||
|
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||||
|
<el-radio-button :label="true">已审核</el-radio-button>
|
||||||
|
<el-radio-button :label="false">未审核</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</table-tool>
|
||||||
|
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||||
|
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||||
|
<el-table-column prop="loginName" label="经办人工号"></el-table-column>
|
||||||
|
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||||
|
<el-table-column prop="outlayManageSource" label="活动类型">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<dict-tag :options="budgetTypeOption"
|
||||||
|
:value="row.outlayManageSource"></dict-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="activityMatter" label="活动事项"></el-table-column>
|
||||||
|
<el-table-column prop="helpUnitName" label="申报单位">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<span v-if="['ACTIVITY_BUDGET_TYPE_ONE'].includes(row.outlayManageSource)">校工会</span>
|
||||||
|
<span v-if="['ACTIVITY_BUDGET_TYPE_TWO'].includes(row.outlayManageSource)">{{row.unionName}}</span>
|
||||||
|
<span v-if="['ACTIVITY_BUDGET_TYPE_THREE','ACTIVITY_BUDGET_TYPE_FOUR'].includes(row.outlayManageSource)">{{row.clubName}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="money" label="金额"></el-table-column>
|
||||||
|
<el-table-column prop="applyTime" label="申报时间"></el-table-column>
|
||||||
|
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||||
|
<el-table-column prop="instanceState" label="流程状态">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
|
size="small"></enum-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" width="300px">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||||
|
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||||
|
</el-button>
|
||||||
|
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<template #edit>
|
||||||
|
<outlay-reimburse-info ref="outlayReimburseInfo">
|
||||||
|
<div v-if="showApprovalForm">
|
||||||
|
<div class="process-title">
|
||||||
|
{{formData.taskName}}
|
||||||
|
</div>
|
||||||
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||||
|
class="flow-task-form">
|
||||||
|
<el-form-item label="审批意见" prop="tf_opinion"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
|
</el-form-item>
|
||||||
|
<!--:rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
||||||
|
<el-form-item label="签字" prop="tf_userSign"
|
||||||
|
>
|
||||||
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-row type="flex" justify="end">
|
||||||
|
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||||
|
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||||
|
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||||
|
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</outlay-reimburse-info>
|
||||||
|
</template>
|
||||||
|
</guava>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
<!--#include('../info.js'){}#-->
|
||||||
|
new Vue({
|
||||||
|
el: "#app",
|
||||||
|
store,
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageDataUrl: "/platform/outlay/reimburse/clubAudit/pageData",
|
||||||
|
budgetTypeOption: [],
|
||||||
|
unionOptions: [],
|
||||||
|
pageForm: {
|
||||||
|
year: moment().format("YYYY"),
|
||||||
|
approval: false,
|
||||||
|
searchName: "info.userName",
|
||||||
|
},
|
||||||
|
showApprovalForm: false
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
"outlay-reimburse-info": OUTLAY_REIMBURSE_INFO
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openView(row) {
|
||||||
|
this.$refs.guava.edit(() => {
|
||||||
|
this.showApprovalForm = false
|
||||||
|
this.$refs.outlayReimburseInfo.onOpen(row)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleTaskAction(val) {
|
||||||
|
this.$refs.formRef.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/flow/common/executeTask", {
|
||||||
|
data: JSON.stringify({
|
||||||
|
...this.formData,
|
||||||
|
submitType: val
|
||||||
|
})
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$refs.guava.index()
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.doSearch()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onRevoke(row) {
|
||||||
|
this.$confirm("您确定要撤回吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "info"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.doSearch()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
openAudit(row) {
|
||||||
|
this.$refs.guava.edit(() => {
|
||||||
|
this.showApprovalForm = true
|
||||||
|
this.formData = {
|
||||||
|
processTaskId: row.taskId,
|
||||||
|
taskName: row.curTaskName
|
||||||
|
}
|
||||||
|
this.$refs.outlayReimburseInfo.onOpen(row)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
this.budgetTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE")
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
@@ -0,0 +1,199 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
|
||||||
|
|
||||||
|
<div id="app">
|
||||||
|
<guava ref="guava">
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="年度">
|
||||||
|
<el-date-picker
|
||||||
|
@change="doSearch"
|
||||||
|
placeholder="选择年"
|
||||||
|
style="width: 100%"
|
||||||
|
type="year"
|
||||||
|
v-model="pageForm.year"
|
||||||
|
value-format="yyyy">
|
||||||
|
</el-date-picker>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="经办人">
|
||||||
|
<el-input @keyup.enter.native="doSearch" clearable
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model="pageForm.searchKeyword">
|
||||||
|
<el-select placeholder="查询类型" slot="prepend"
|
||||||
|
style="width: 100px;"
|
||||||
|
v-model="pageForm.searchName">
|
||||||
|
<el-option label="姓名" value="info.userName"></el-option>
|
||||||
|
<el-option label="工号" value="info.loginName"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-input>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<table-tool label="申请列表">
|
||||||
|
<el-radio-group v-model="pageForm.approval" size="small" @change="doSearch">
|
||||||
|
<el-radio-button :label="true">已审核</el-radio-button>
|
||||||
|
<el-radio-button :label="false">未审核</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</table-tool>
|
||||||
|
<el-table :data="tableData" @sort-change="pageOrder" style="width: 100%">
|
||||||
|
<el-table-column type="index" width="50px" label="序号" :index="indexMethod"></el-table-column>
|
||||||
|
<el-table-column prop="loginName" label="经办人工号"></el-table-column>
|
||||||
|
<el-table-column prop="userName" label="姓名"></el-table-column>
|
||||||
|
<el-table-column prop="outlayManageSource" label="活动类型">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<dict-tag :options="budgetTypeOption"
|
||||||
|
:value="row.outlayManageSource"></dict-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="activityMatter" label="活动事项"></el-table-column>
|
||||||
|
<el-table-column prop="helpUnitName" label="申报单位">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<span v-if="['ACTIVITY_BUDGET_TYPE_ONE'].includes(row.outlayManageSource)">校工会</span>
|
||||||
|
<span v-if="['ACTIVITY_BUDGET_TYPE_TWO'].includes(row.outlayManageSource)">{{row.unionName}}</span>
|
||||||
|
<span v-if="['ACTIVITY_BUDGET_TYPE_THREE','ACTIVITY_BUDGET_TYPE_FOUR'].includes(row.outlayManageSource)">{{row.clubName}}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="money" label="金额"></el-table-column>
|
||||||
|
<el-table-column prop="applyTime" label="申报时间"></el-table-column>
|
||||||
|
<el-table-column prop="taskName" label="当前节点"></el-table-column>
|
||||||
|
<el-table-column prop="instanceState" label="流程状态">
|
||||||
|
<template v-slot="{row}">
|
||||||
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
|
size="small"></enum-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" width="300px">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||||
|
<el-button v-if="row.taskState === 10" @click="openAudit(row)" size="mini" type="primary">审核
|
||||||
|
</el-button>
|
||||||
|
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<template #edit>
|
||||||
|
<outlay-reimburse-info ref="outlayReimburseInfo">
|
||||||
|
<div v-if="showApprovalForm">
|
||||||
|
<div class="process-title">
|
||||||
|
{{formData.taskName}}
|
||||||
|
</div>
|
||||||
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||||
|
class="flow-task-form">
|
||||||
|
<el-form-item label="审批意见" prop="tf_opinion"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
|
</el-form-item>
|
||||||
|
<!--:rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
||||||
|
<el-form-item label="签字" prop="tf_userSign"
|
||||||
|
>
|
||||||
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-row type="flex" justify="end">
|
||||||
|
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||||
|
<el-button @click="handleTaskAction(6)" size="small" type="info">退回到发起人</el-button>
|
||||||
|
<el-button @click="handleTaskAction(2)" size="small" type="danger">拒绝申请</el-button>
|
||||||
|
<el-button @click="handleTaskAction(1)" size="small" type="primary">同意申请</el-button>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</outlay-reimburse-info>
|
||||||
|
</template>
|
||||||
|
</guava>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
<!--#include('../info.js'){}#-->
|
||||||
|
new Vue({
|
||||||
|
el: "#app",
|
||||||
|
store,
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageDataUrl: "/platform/outlay/reimburse/clubZxAudit/pageData",
|
||||||
|
budgetTypeOption: [],
|
||||||
|
unionOptions: [],
|
||||||
|
pageForm: {
|
||||||
|
year: moment().format("YYYY"),
|
||||||
|
approval: false,
|
||||||
|
searchName: "info.userName",
|
||||||
|
},
|
||||||
|
showApprovalForm: false
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
"outlay-reimburse-info": OUTLAY_REIMBURSE_INFO
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openView(row) {
|
||||||
|
this.$refs.guava.edit(() => {
|
||||||
|
this.showApprovalForm = false
|
||||||
|
this.$refs.outlayReimburseInfo.onOpen(row)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleTaskAction(val) {
|
||||||
|
this.$refs.formRef.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/flow/common/executeTask", {
|
||||||
|
data: JSON.stringify({
|
||||||
|
...this.formData,
|
||||||
|
submitType: val
|
||||||
|
})
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$refs.guava.index()
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.doSearch()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onRevoke(row) {
|
||||||
|
this.$confirm("您确定要撤回吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "info"
|
||||||
|
}).then(() => {
|
||||||
|
this.$axios.post("/flow/common/revokeTask", {taskId: row.taskId}).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success(res.msg)
|
||||||
|
this.doSearch()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
openAudit(row) {
|
||||||
|
this.$refs.guava.edit(() => {
|
||||||
|
this.showApprovalForm = true
|
||||||
|
this.formData = {
|
||||||
|
processTaskId: row.taskId,
|
||||||
|
taskName: row.curTaskName
|
||||||
|
}
|
||||||
|
this.$refs.outlayReimburseInfo.onOpen(row)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
this.budgetTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE")
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
Reference in New Issue
Block a user