commit
This commit is contained in:
@@ -92,6 +92,11 @@ RoleConstant {
|
|||||||
|
|
||||||
PSYCHOLOGY_DOCTOR("心理咨询师"),
|
PSYCHOLOGY_DOCTOR("心理咨询师"),
|
||||||
LEGAL_DOCTOR("法律顾问"),
|
LEGAL_DOCTOR("法律顾问"),
|
||||||
|
|
||||||
|
UNION_REIMBURSEMENT_MANAGER("分工会报销负责人"),
|
||||||
|
CLUB_REIMBURSEMENT_MANAGER("协会报销负责人"),
|
||||||
|
SCHOOL_REIMBURSEMENT_MANAGER("校工会报销负责人"),
|
||||||
|
|
||||||
;
|
;
|
||||||
/**
|
/**
|
||||||
* 避免和枚举类的name冲突
|
* 避免和枚举类的name冲突
|
||||||
|
|||||||
+2
@@ -3,6 +3,7 @@ package com.budwk.app.zhgh.activity.declarereimbursement.declare.models;
|
|||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import com.budwk.app.base.model.BaseModel;
|
import com.budwk.app.base.model.BaseModel;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.vo.ActivityBudgetVO;
|
import com.budwk.app.zhgh.activity.declarereimbursement.vo.ActivityBudgetVO;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.nutz.dao.entity.annotation.*;
|
import org.nutz.dao.entity.annotation.*;
|
||||||
@@ -22,6 +23,7 @@ import java.util.List;
|
|||||||
@Data
|
@Data
|
||||||
@Table
|
@Table
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ApiOperation(value = "活动经费申报信息")
|
||||||
public class ActivityDeclareInfo extends BaseModel {
|
public class ActivityDeclareInfo extends BaseModel {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
|
|||||||
+87
-15
@@ -6,6 +6,7 @@ import cn.hutool.core.lang.Dict;
|
|||||||
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.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.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
import com.budwk.app.base.utils.PageUtil;
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
@@ -15,11 +16,13 @@ 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.flow.service.FlowCommonService;
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
|
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.activity.declarereimbursement.declare.models.ActivityDeclareInfo;
|
import com.budwk.app.zhgh.activity.declarereimbursement.declare.models.ActivityDeclareInfo;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.vo.CommonPageParam;
|
import com.budwk.app.zhgh.activity.declarereimbursement.vo.CommonPageParam;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.outlay.outlayReimburse.service.OutlayReimburseApplyService;
|
||||||
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.Cnd;
|
||||||
@@ -38,7 +41,9 @@ import org.nutz.mvc.annotation.Param;
|
|||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@@ -61,6 +66,8 @@ public class ActivityReimbursementApplyController {
|
|||||||
private FlowCommonService flowCommonService;
|
private FlowCommonService flowCommonService;
|
||||||
@Inject
|
@Inject
|
||||||
private ActivityReimbursementService activityReimbursementService;
|
private ActivityReimbursementService activityReimbursementService;
|
||||||
|
@Inject
|
||||||
|
private OutlayReimburseApplyService outlayReimburseApplyService;
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@SaCheckPermission("activityReimbursement.apply")
|
@SaCheckPermission("activityReimbursement.apply")
|
||||||
@@ -80,6 +87,10 @@ public class ActivityReimbursementApplyController {
|
|||||||
@SaCheckPermission("member.apply.submit")
|
@SaCheckPermission("member.apply.submit")
|
||||||
@SLog(tag = "活动申报", msg = "保存申请,申请人: ${args[0].username}")
|
@SLog(tag = "活动申报", msg = "保存申请,申请人: ${args[0].username}")
|
||||||
public Result save(@Param("data") ActivityReimbursementInfo activityReimbursementInfo) {
|
public Result save(@Param("data") ActivityReimbursementInfo activityReimbursementInfo) {
|
||||||
|
activityReimbursementInfo.setUserId(SecurityUtil.getUserId());
|
||||||
|
activityReimbursementInfo.setLoginName(SecurityUtil.getUserLoginname());
|
||||||
|
activityReimbursementInfo.setUserName(SecurityUtil.getUserUsername());
|
||||||
|
activityReimbursementInfo.setApplyTime(new Date());
|
||||||
if (StrUtil.isBlank(activityReimbursementInfo.getDeclareId())) {
|
if (StrUtil.isBlank(activityReimbursementInfo.getDeclareId())) {
|
||||||
activityReimbursementInfo.setDeclareId(activityReimbursementInfo.getDeclareId());
|
activityReimbursementInfo.setDeclareId(activityReimbursementInfo.getDeclareId());
|
||||||
}
|
}
|
||||||
@@ -88,6 +99,12 @@ public class ActivityReimbursementApplyController {
|
|||||||
.mapToDouble(v -> ObjectUtil.defaultIfNull(v.getActualPrice(), 0D))
|
.mapToDouble(v -> ObjectUtil.defaultIfNull(v.getActualPrice(), 0D))
|
||||||
.sum();
|
.sum();
|
||||||
activityReimbursementInfo.setActualMoney(new BigDecimal(sum));
|
activityReimbursementInfo.setActualMoney(new BigDecimal(sum));
|
||||||
|
|
||||||
|
// 验证金额
|
||||||
|
Result result = activityReimbursementService.bxAddValidate(activityReimbursementInfo.getDeductionBudgetId(), activityReimbursementInfo.getActualMoney(), activityReimbursementInfo.getOutlayManageSource(), activityReimbursementInfo.getClubId());
|
||||||
|
if (Lang.isNotEmpty(result)) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
dao.insertOrUpdate(activityReimbursementInfo);
|
dao.insertOrUpdate(activityReimbursementInfo);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
@@ -98,7 +115,11 @@ public class ActivityReimbursementApplyController {
|
|||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SaCheckPermission("member.apply.submit")
|
@SaCheckPermission("member.apply.submit")
|
||||||
@SLog(tag = "活动申报", msg = "提交申请,申请人: ${args[0].username}")
|
@SLog(tag = "活动申报", msg = "提交申请,申请人: ${args[0].username}")
|
||||||
public Result submit(@Param("data") ActivityReimbursementInfo activityReimbursementInfo){
|
public Result submit(@Param("data") ActivityReimbursementInfo activityReimbursementInfo) {
|
||||||
|
activityReimbursementInfo.setUserId(SecurityUtil.getUserId());
|
||||||
|
activityReimbursementInfo.setLoginName(SecurityUtil.getUserLoginname());
|
||||||
|
activityReimbursementInfo.setUserName(SecurityUtil.getUserUsername());
|
||||||
|
activityReimbursementInfo.setApplyTime(new Date());
|
||||||
if (StrUtil.isBlank(activityReimbursementInfo.getDeclareId())) {
|
if (StrUtil.isBlank(activityReimbursementInfo.getDeclareId())) {
|
||||||
activityReimbursementInfo.setDeclareId(activityReimbursementInfo.getDeclareId());
|
activityReimbursementInfo.setDeclareId(activityReimbursementInfo.getDeclareId());
|
||||||
}
|
}
|
||||||
@@ -108,13 +129,20 @@ public class ActivityReimbursementApplyController {
|
|||||||
.mapToDouble(v -> ObjectUtil.defaultIfNull(v.getActualPrice(), 0D))
|
.mapToDouble(v -> ObjectUtil.defaultIfNull(v.getActualPrice(), 0D))
|
||||||
.sum();
|
.sum();
|
||||||
activityReimbursementInfo.setActualMoney(new BigDecimal(sum));
|
activityReimbursementInfo.setActualMoney(new BigDecimal(sum));
|
||||||
|
|
||||||
|
// 验证金额
|
||||||
|
Result result = activityReimbursementService.bxAddValidate(activityReimbursementInfo.getDeductionBudgetId(), activityReimbursementInfo.getActualMoney(), activityReimbursementInfo.getOutlayManageSource(), activityReimbursementInfo.getClubId());
|
||||||
|
if (Lang.isNotEmpty(result)) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
dao.insertOrUpdate(activityReimbursementInfo);
|
dao.insertOrUpdate(activityReimbursementInfo);
|
||||||
|
|
||||||
// 开启流程实例
|
// 开启流程实例
|
||||||
Dict args = Dict.create();
|
Dict args = Dict.create();
|
||||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||||
args.set(FlowConst.FORM_DATA, activityReimbursementInfo);
|
args.set(FlowConst.FORM_DATA, activityReimbursementInfo);
|
||||||
args.set("type", activityReimbursementInfo.getActivityType());
|
args.set("outlayManageSource", activityReimbursementInfo.getOutlayManageSource());
|
||||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("HDBX", activityReimbursementInfo.getId(), SecurityUtil.getUserId(), args);
|
ProcessInstance instance = flowEngine.startProcessInstanceByKey("HDBX", activityReimbursementInfo.getId(), SecurityUtil.getUserId(), args);
|
||||||
|
|
||||||
// 自动完成第一个申请任务
|
// 自动完成第一个申请任务
|
||||||
@@ -141,6 +169,13 @@ public class ActivityReimbursementApplyController {
|
|||||||
.mapToDouble(v -> ObjectUtil.defaultIfNull(v.getActualPrice(), 0D))
|
.mapToDouble(v -> ObjectUtil.defaultIfNull(v.getActualPrice(), 0D))
|
||||||
.sum();
|
.sum();
|
||||||
activityReimbursementInfo.setActualMoney(new BigDecimal(sum));
|
activityReimbursementInfo.setActualMoney(new BigDecimal(sum));
|
||||||
|
|
||||||
|
// 验证金额
|
||||||
|
Result result = activityReimbursementService.bxAddValidate(activityReimbursementInfo.getDeductionBudgetId(), activityReimbursementInfo.getActualMoney(), activityReimbursementInfo.getOutlayManageSource(), activityReimbursementInfo.getClubId());
|
||||||
|
if (Lang.isNotEmpty(result)) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
dao.insertOrUpdate(activityReimbursementInfo);
|
dao.insertOrUpdate(activityReimbursementInfo);
|
||||||
|
|
||||||
Dict dict = Dict.create();
|
Dict dict = Dict.create();
|
||||||
@@ -154,29 +189,48 @@ public class ActivityReimbursementApplyController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("获取当前用户活动报销")
|
@ApiOperation("获取当前用户活动报销")
|
||||||
@SaCheckPermission("activityReimbursement.apply")
|
@SaCheckPermission("activityReimbursement.apply")
|
||||||
public Result getActivityReimbursementByUser(String id) {
|
public Result getActivityReimbursementByUser(String id, String outlayManageSource, String clubId) {
|
||||||
|
String activityType = "";
|
||||||
if (StrUtil.isNotBlank(id)) {
|
if (StrUtil.isNotBlank(id)) {
|
||||||
ActivityReimbursementInfo reimbursementInfo = dao.fetch(ActivityReimbursementInfo.class, id);
|
ActivityReimbursementInfo reimbursementInfo = dao.fetch(ActivityReimbursementInfo.class, id);
|
||||||
|
if (Objects.equals(reimbursementInfo.getActivityReimbursementMode(), "daily")) {
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
ActivityDeclareInfo info = dao.fetch(ActivityDeclareInfo.class, reimbursementInfo.getDeclareId());
|
ActivityDeclareInfo info = dao.fetch(ActivityDeclareInfo.class, reimbursementInfo.getDeclareId());
|
||||||
return Result.success().addData(List.of(info));
|
return Result.success().addData(List.of(info));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询已经报销成功的记录
|
// 查询已经报销成功的记录
|
||||||
|
Cnd reiCnd = Cnd.NEW();
|
||||||
|
reiCnd.and("info.outlayManageSource", "=", outlayManageSource);
|
||||||
|
if (Objects.equals(outlayManageSource, "ACTIVITY_BUDGET_TYPE_TWO")) {
|
||||||
|
reiCnd.and("info.unionId", "=", SecurityUtil.getUnionId());
|
||||||
|
} else if (Objects.equals(outlayManageSource, "ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||||
|
reiCnd.and("info.clubId", "=", clubId);
|
||||||
|
}
|
||||||
|
reiCnd.and("ins.state", "in", List.of(10, 20));
|
||||||
Sql reiSql = Sqls.create("""
|
Sql reiSql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
info.declareId
|
info.declareId
|
||||||
FROM
|
FROM
|
||||||
activity_reimbursement_info info
|
activity_reimbursement_info info
|
||||||
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
WHERE
|
$condition
|
||||||
userId = @userId
|
""");
|
||||||
AND ins.state IN (10, 20)
|
reiSql.setCondition(reiCnd);
|
||||||
""").setParam("userId", SecurityUtil.getUserId());
|
|
||||||
reiSql.setCallback(Sqls.callback.strList());
|
reiSql.setCallback(Sqls.callback.strList());
|
||||||
dao.execute(reiSql);
|
dao.execute(reiSql);
|
||||||
List<String> reiDecIdList = reiSql.getList(String.class);
|
List<String> reiDecIdList = reiSql.getList(String.class);
|
||||||
|
|
||||||
Sql sql = Sqls.create("select declareId from activity_reimbursement_info where userId = @userId").setParam("userId", SecurityUtil.getUserId());
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.and("outlayManageSource", "=", outlayManageSource);
|
||||||
|
if (Objects.equals(outlayManageSource, "ACTIVITY_BUDGET_TYPE_TWO")) {
|
||||||
|
cnd.and("unionId", "=", SecurityUtil.getUnionId());
|
||||||
|
} else if (Objects.equals(outlayManageSource, "ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||||
|
cnd.and("clubId", "=", clubId);
|
||||||
|
}
|
||||||
|
Sql sql = Sqls.create("select declareId from activity_reimbursement_info $condition");
|
||||||
|
sql.setCondition(cnd);
|
||||||
sql.setCallback(Sqls.callback.strList());
|
sql.setCallback(Sqls.callback.strList());
|
||||||
dao.execute(sql);
|
dao.execute(sql);
|
||||||
List<String> declareIdList = sql.getList(String.class);
|
List<String> declareIdList = sql.getList(String.class);
|
||||||
@@ -189,23 +243,32 @@ public class ActivityReimbursementApplyController {
|
|||||||
LEFT JOIN wf_process_instance ins ON info.id = ins.businessNo
|
LEFT JOIN wf_process_instance ins ON info.id = ins.businessNo
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd applyCnd = Cnd.NEW();
|
||||||
|
|
||||||
|
if (Objects.equals(outlayManageSource, "ACTIVITY_BUDGET_TYPE_TWO")) {
|
||||||
|
applyCnd.and("info.unionId", "=", SecurityUtil.getUnionId());
|
||||||
|
activityType="BRANCH_UNION";
|
||||||
|
} else if (Objects.equals(outlayManageSource, "ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||||
|
applyCnd.and("info.clubId", "=", clubId);
|
||||||
|
activityType="CLUB";
|
||||||
|
}else{
|
||||||
|
activityType="SCHOOL_UNION";
|
||||||
|
}
|
||||||
|
applyCnd.and("info.activityType", "=", activityType);
|
||||||
if (Lang.isNotEmpty(declareIdList)) {
|
if (Lang.isNotEmpty(declareIdList)) {
|
||||||
cnd.and("info.id", "not in", declareIdList);
|
applyCnd.and("info.id", "not in", declareIdList);
|
||||||
}
|
}
|
||||||
if (Lang.isNotEmpty(reiDecIdList)) {
|
if (Lang.isNotEmpty(reiDecIdList)) {
|
||||||
cnd.and("info.id", "not in", reiDecIdList);
|
applyCnd.and("info.id", "not in", reiDecIdList);
|
||||||
}
|
}
|
||||||
cnd.and("info.userId", "=", SecurityUtil.getUserId());
|
applyCnd.and("ins.state", "=", 20);
|
||||||
cnd.and("ins.state", "=", 20);
|
applySql.setCondition(applyCnd);
|
||||||
applySql.setCondition(cnd);
|
|
||||||
|
|
||||||
List<NutMap> resultList = activityReimbursementService.listMap(applySql);
|
List<NutMap> resultList = activityReimbursementService.listMap(applySql);
|
||||||
return Result.success().addData(resultList);
|
return Result.success().addData(resultList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@ApiOperation("获取收款人卡号")
|
@ApiOperation("获取收款人卡号")
|
||||||
@SaCheckPermission("activityReimbursement.apply")
|
@SaCheckPermission("activityReimbursement.apply")
|
||||||
@@ -234,4 +297,13 @@ public class ActivityReimbursementApplyController {
|
|||||||
return Result.success().addData(map);
|
return Result.success().addData(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("获取申报的记录")
|
||||||
|
@SaCheckPermission("activityReimbursement.apply")
|
||||||
|
public Result getBudgetByYear(String outlayManageSource, String clubId) {
|
||||||
|
List<NutMap> budgetMoney = activityReimbursementService.getBudgetMoney(outlayManageSource, clubId);
|
||||||
|
return Result.success(budgetMoney);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+9
@@ -69,6 +69,11 @@ public class ActivityReimbursementBranchUnionController {
|
|||||||
info.activityType,
|
info.activityType,
|
||||||
info.activityContent,
|
info.activityContent,
|
||||||
info.activityNumber,
|
info.activityNumber,
|
||||||
|
info.activityReimbursementMode,
|
||||||
|
info.outlayManageSource,
|
||||||
|
info.deductionBudgetId,
|
||||||
|
info.actualMoney,
|
||||||
|
outlay.budgetReimburseType,
|
||||||
ins.id AS instanceId,
|
ins.id AS instanceId,
|
||||||
ins.businessNo,
|
ins.businessNo,
|
||||||
ins.state instanceState,
|
ins.state instanceState,
|
||||||
@@ -89,6 +94,7 @@ public class ActivityReimbursementBranchUnionController {
|
|||||||
wf_process_task t
|
wf_process_task t
|
||||||
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
||||||
|
LEFT JOIN activity_budget outlay on info.deductionBudgetId=outlay.id
|
||||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
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 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
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
@@ -99,6 +105,9 @@ public class ActivityReimbursementBranchUnionController {
|
|||||||
|
|
||||||
cnd.and("t.taskName", "=", "1e4cc473-beae-427d-b9dc-c1c4d0eb07c8");
|
cnd.and("t.taskName", "=", "1e4cc473-beae-427d-b9dc-c1c4d0eb07c8");
|
||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
cnd.andEX("outlay.budgetReimburseType", "=" , pageParam.getBudgetReimburseType());
|
||||||
|
cnd.andEX("info.outlayManageSource", "=", pageParam.getOutlayManageSource());
|
||||||
|
cnd.andEX("info.activityReimbursementMode", "=", pageParam.getActivityReimbursementMode());
|
||||||
|
|
||||||
if (pageParam.getAudit()) {
|
if (pageParam.getAudit()) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
|||||||
+9
@@ -69,6 +69,11 @@ public class ActivityReimbursementClubPrincipalController {
|
|||||||
info.activityType,
|
info.activityType,
|
||||||
info.activityContent,
|
info.activityContent,
|
||||||
info.activityNumber,
|
info.activityNumber,
|
||||||
|
info.activityReimbursementMode,
|
||||||
|
info.outlayManageSource,
|
||||||
|
info.deductionBudgetId,
|
||||||
|
info.actualMoney,
|
||||||
|
outlay.budgetReimburseType,
|
||||||
ins.id AS instanceId,
|
ins.id AS instanceId,
|
||||||
ins.businessNo,
|
ins.businessNo,
|
||||||
ins.state instanceState,
|
ins.state instanceState,
|
||||||
@@ -89,6 +94,7 @@ public class ActivityReimbursementClubPrincipalController {
|
|||||||
wf_process_task t
|
wf_process_task t
|
||||||
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
||||||
|
LEFT JOIN activity_budget outlay on info.deductionBudgetId=outlay.id
|
||||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
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 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
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
@@ -99,6 +105,9 @@ public class ActivityReimbursementClubPrincipalController {
|
|||||||
|
|
||||||
cnd.and("t.taskName", "=", "5afcf810-7a8b-4896-9aa7-c99995e0856b");
|
cnd.and("t.taskName", "=", "5afcf810-7a8b-4896-9aa7-c99995e0856b");
|
||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
cnd.andEX("outlay.budgetReimburseType", "=" , pageParam.getBudgetReimburseType());
|
||||||
|
cnd.andEX("info.outlayManageSource", "=", pageParam.getOutlayManageSource());
|
||||||
|
cnd.andEX("info.activityReimbursementMode", "=", pageParam.getActivityReimbursementMode());
|
||||||
|
|
||||||
if (pageParam.getAudit()) {
|
if (pageParam.getAudit()) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
|||||||
+17
-1
@@ -97,6 +97,10 @@ public class ActivityReimbursementMineController {
|
|||||||
info.activityType,
|
info.activityType,
|
||||||
info.activityContent,
|
info.activityContent,
|
||||||
info.activityNumber,
|
info.activityNumber,
|
||||||
|
info.activityReimbursementMode,
|
||||||
|
info.outlayManageSource,
|
||||||
|
info.deductionBudgetId,
|
||||||
|
info.actualMoney,
|
||||||
ins.id AS instanceId,
|
ins.id AS instanceId,
|
||||||
ins.businessNo,
|
ins.businessNo,
|
||||||
ins.state instanceState,
|
ins.state instanceState,
|
||||||
@@ -144,7 +148,19 @@ public class ActivityReimbursementMineController {
|
|||||||
@ApiOperation("活动报销,查看活动报销")
|
@ApiOperation("活动报销,查看活动报销")
|
||||||
@SaCheckPermission("activityReimbursement.mine")
|
@SaCheckPermission("activityReimbursement.mine")
|
||||||
public Result findOne(@Valid String id) {
|
public Result findOne(@Valid String id) {
|
||||||
ActivityReimbursementInfo info = dao.fetch(ActivityReimbursementInfo.class, id);
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
info.*,
|
||||||
|
ab.activityMatter deductionBudgetName
|
||||||
|
FROM
|
||||||
|
`activity_reimbursement_info` info
|
||||||
|
LEFT JOIN activity_budget ab ON ab.id = info.deductionBudgetId
|
||||||
|
WHERE
|
||||||
|
info.id = @id
|
||||||
|
""").setParam("id", id);
|
||||||
|
sql.setCallback(Sqls.callback.map());
|
||||||
|
dao.execute(sql);
|
||||||
|
NutMap info = (NutMap) sql.getResult();
|
||||||
return Result.success().addData(info);
|
return Result.success().addData(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
@@ -69,6 +69,11 @@ public class ActivityReimbursementSchoolPrincipalController {
|
|||||||
info.activityType,
|
info.activityType,
|
||||||
info.activityContent,
|
info.activityContent,
|
||||||
info.activityNumber,
|
info.activityNumber,
|
||||||
|
info.activityReimbursementMode,
|
||||||
|
info.outlayManageSource,
|
||||||
|
info.deductionBudgetId,
|
||||||
|
info.actualMoney,
|
||||||
|
outlay.budgetReimburseType,
|
||||||
ins.id AS instanceId,
|
ins.id AS instanceId,
|
||||||
ins.businessNo,
|
ins.businessNo,
|
||||||
ins.state instanceState,
|
ins.state instanceState,
|
||||||
@@ -89,6 +94,7 @@ public class ActivityReimbursementSchoolPrincipalController {
|
|||||||
wf_process_task t
|
wf_process_task t
|
||||||
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
||||||
|
LEFT JOIN activity_budget outlay on info.deductionBudgetId=outlay.id
|
||||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
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 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
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
@@ -99,6 +105,9 @@ public class ActivityReimbursementSchoolPrincipalController {
|
|||||||
|
|
||||||
cnd.and("t.taskName", "=", "6dd2e8b3-fd0d-4b35-bb2a-1eef227cba96");
|
cnd.and("t.taskName", "=", "6dd2e8b3-fd0d-4b35-bb2a-1eef227cba96");
|
||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
cnd.andEX("outlay.budgetReimburseType", "=" , pageParam.getBudgetReimburseType());
|
||||||
|
cnd.andEX("info.outlayManageSource", "=", pageParam.getOutlayManageSource());
|
||||||
|
cnd.andEX("info.activityReimbursementMode", "=", pageParam.getActivityReimbursementMode());
|
||||||
|
|
||||||
if (pageParam.getAudit()) {
|
if (pageParam.getAudit()) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
|||||||
+34
@@ -1,23 +1,34 @@
|
|||||||
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.controller;
|
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import cn.dev33.satoken.annotation.SaMode;
|
||||||
|
import cn.hutool.core.lang.Dict;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
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.utils.PageUtil;
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
|
||||||
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
|
import com.budwk.app.sys.models.Sys_home_activity;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
|
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
||||||
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementSchoolUnionService;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.vo.CommonPageParam;
|
import com.budwk.app.zhgh.activity.declarereimbursement.vo.CommonPageParam;
|
||||||
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.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.json.Json;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
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 java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -37,6 +48,11 @@ public class ActivityReimbursementSchoolUnionController {
|
|||||||
@Inject
|
@Inject
|
||||||
private ActivityReimbursementService activityReimbursementService;
|
private ActivityReimbursementService activityReimbursementService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ActivityReimbursementSchoolUnionService activityReimbursementSchoolUnionService;
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@SaCheckPermission("activityReimbursement.schoolUnion")
|
@SaCheckPermission("activityReimbursement.schoolUnion")
|
||||||
@Ok("beetl:/platform/zhgh/activity/declarereimbursement/reimbursement/schoolunion/index.html")
|
@Ok("beetl:/platform/zhgh/activity/declarereimbursement/reimbursement/schoolunion/index.html")
|
||||||
@@ -69,6 +85,11 @@ public class ActivityReimbursementSchoolUnionController {
|
|||||||
info.activityType,
|
info.activityType,
|
||||||
info.activityContent,
|
info.activityContent,
|
||||||
info.activityNumber,
|
info.activityNumber,
|
||||||
|
info.activityReimbursementMode,
|
||||||
|
info.outlayManageSource,
|
||||||
|
info.deductionBudgetId,
|
||||||
|
info.actualMoney,
|
||||||
|
outlay.budgetReimburseType,
|
||||||
ins.id AS instanceId,
|
ins.id AS instanceId,
|
||||||
ins.businessNo,
|
ins.businessNo,
|
||||||
ins.state instanceState,
|
ins.state instanceState,
|
||||||
@@ -89,6 +110,7 @@ public class ActivityReimbursementSchoolUnionController {
|
|||||||
wf_process_task t
|
wf_process_task t
|
||||||
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
|
||||||
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
LEFT JOIN activity_reimbursement_info info ON info.id = ins.businessNo
|
||||||
|
LEFT JOIN activity_budget outlay on info.deductionBudgetId=outlay.id
|
||||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
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 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
|
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
|
||||||
@@ -99,6 +121,9 @@ public class ActivityReimbursementSchoolUnionController {
|
|||||||
|
|
||||||
cnd.and("t.taskName", "=", "47bfdf53-288c-4352-a403-0653483b54eb");
|
cnd.and("t.taskName", "=", "47bfdf53-288c-4352-a403-0653483b54eb");
|
||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
|
cnd.andEX("outlay.budgetReimburseType", "=" , pageParam.getBudgetReimburseType());
|
||||||
|
cnd.andEX("info.outlayManageSource", "=", pageParam.getOutlayManageSource());
|
||||||
|
cnd.andEX("info.activityReimbursementMode", "=", pageParam.getActivityReimbursementMode());
|
||||||
|
|
||||||
if (pageParam.getAudit()) {
|
if (pageParam.getAudit()) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
@@ -116,4 +141,13 @@ public class ActivityReimbursementSchoolUnionController {
|
|||||||
Pagination<NutMap> pagination = activityReimbursementService.listPageMap(pageParam.getPageNumber(), pageParam.getPageSize(), sql);
|
Pagination<NutMap> pagination = activityReimbursementService.listPageMap(pageParam.getPageNumber(), pageParam.getPageSize(), sql);
|
||||||
return Result.success().addData(pagination);
|
return Result.success().addData(pagination);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SLog(tag = "报销", msg = "校工会审核了一条记录")
|
||||||
|
@SaCheckPermission("activityReimbursement.schoolUnion")
|
||||||
|
public Result doReview(@Param("data") String param, String id) {
|
||||||
|
activityReimbursementSchoolUnionService.doReview( param, id);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-1
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models;
|
|||||||
|
|
||||||
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONObject;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.declare.models.ActivityDeclareInfo;
|
import com.budwk.app.zhgh.activity.declarereimbursement.declare.models.ActivityDeclareInfo;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.nutz.dao.entity.annotation.*;
|
import org.nutz.dao.entity.annotation.*;
|
||||||
@@ -19,8 +20,9 @@ import java.util.List;
|
|||||||
* @注释
|
* @注释
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Table
|
@Table("activity_reimbursement_info")
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ApiOperation(value = "报销信息")
|
||||||
public class ActivityReimbursementInfo extends ActivityDeclareInfo {
|
public class ActivityReimbursementInfo extends ActivityDeclareInfo {
|
||||||
|
|
||||||
@Name
|
@Name
|
||||||
@@ -34,6 +36,21 @@ public class ActivityReimbursementInfo extends ActivityDeclareInfo {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
private String declareId;
|
private String declareId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("报销模式")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
|
private String activityReimbursementMode;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("经费类型")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
|
private String outlayManageSource;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("扣款预算")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String deductionBudgetId;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("实际总金额")
|
@Comment("实际总金额")
|
||||||
@ColDefine(customType = "decimal(10,2)")
|
@ColDefine(customType = "decimal(10,2)")
|
||||||
|
|||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service;
|
||||||
|
|
||||||
|
import com.budwk.app.base.service.BaseService;
|
||||||
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
||||||
|
|
||||||
|
public interface ActivityReimbursementSchoolUnionService extends BaseService<ActivityReimbursementInfo> {
|
||||||
|
|
||||||
|
|
||||||
|
void doReview(String param, String id);
|
||||||
|
}
|
||||||
+19
@@ -1,8 +1,13 @@
|
|||||||
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service;
|
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service;
|
||||||
|
|
||||||
|
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.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@@ -15,4 +20,18 @@ public interface ActivityReimbursementService extends BaseService<ActivityReimbu
|
|||||||
|
|
||||||
|
|
||||||
Sql getActivityUserNumAndMoneySql(Integer startYear, Integer endYear, Boolean isActivityMoney);
|
Sql getActivityUserNumAndMoneySql(Integer startYear, Integer endYear, Boolean isActivityMoney);
|
||||||
|
|
||||||
|
|
||||||
|
List<NutMap> getBudgetMoney(String outlayManageSource, String clubId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预算扣除预算验证
|
||||||
|
* @param deductionBudgetId
|
||||||
|
* @param moneyBig
|
||||||
|
* @param outlayManageSource
|
||||||
|
* @param clubId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Result bxAddValidate(String deductionBudgetId, BigDecimal moneyBig, String outlayManageSource, String clubId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+130
@@ -0,0 +1,130 @@
|
|||||||
|
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.lang.Dict;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.budwk.app.base.exception.BaseException;
|
||||||
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.budwk.app.flow.service.FlowCommonService;
|
||||||
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
|
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
||||||
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
||||||
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementSchoolUnionService;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.outlay.activityBudget.models.ActivityBudget;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.club.model.OutlayManageClub;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.model.OutlayUseDetail;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.school.model.OutlayManageSchool;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.union.model.OutlayManageUnion;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.ioc.aop.Aop;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.json.Json;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author zhf
|
||||||
|
* @date 2025/12/4 18:06
|
||||||
|
* @description
|
||||||
|
*/
|
||||||
|
@IocBean(args = {"refer:dao"})
|
||||||
|
public class ActivityReimbursementSchoolUnionServiceImpl extends BaseServiceImpl<ActivityReimbursementInfo> implements ActivityReimbursementSchoolUnionService {
|
||||||
|
public ActivityReimbursementSchoolUnionServiceImpl(Dao dao) {
|
||||||
|
super(dao);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private FlowCommonService flowCommonService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
public void doReview(String param, String id) {
|
||||||
|
Dict args = Json.fromJson(Dict.class, param);
|
||||||
|
if (args.getInt("submitType") == 1) {
|
||||||
|
ActivityReimbursementInfo info = dao().fetch(ActivityReimbursementInfo.class, id);
|
||||||
|
OutlayUseDetail detail = new OutlayUseDetail();
|
||||||
|
|
||||||
|
detail.setProjectName(info.getActivityName());
|
||||||
|
detail.setAdjustMoney(info.getActualMoney());
|
||||||
|
detail.setAdjustReason(info.getActivityName());
|
||||||
|
detail.setAdjustUserId(SecurityUtil.getUserId());
|
||||||
|
detail.setAdjustUserName(SecurityUtil.getUserUsername());
|
||||||
|
detail.setAdjustLoginName(SecurityUtil.getUserLoginname());
|
||||||
|
detail.setOutlayReimburseId(info.getId());
|
||||||
|
detail.setActivityTime(String.valueOf(info.getStartTime()));
|
||||||
|
// 更新校工会经费表
|
||||||
|
if (info.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_ONE")) {
|
||||||
|
detail.setActivityTime(String.valueOf(info.getApplyTime()));
|
||||||
|
OutlayManageSchool school = dao().fetch(OutlayManageSchool.class, Cnd.where("year", "=", DateUtil.thisYear()));
|
||||||
|
if (ObjectUtil.isEmpty(school)) {
|
||||||
|
throw new BaseException("该年份没有设置金额!");
|
||||||
|
}
|
||||||
|
if (school.getTotalQuota().subtract(school.getUsedQuota()).compareTo(info.getActualMoney()) < 0) {
|
||||||
|
throw new BaseException("剩余配额不足!剩余:" + school.getTotalQuota().subtract(school.getUsedQuota()));
|
||||||
|
}
|
||||||
|
school.setUsedQuota(school.getUsedQuota().add(info.getActualMoney()));
|
||||||
|
dao().updateIgnoreNull(school);
|
||||||
|
|
||||||
|
//添加使用记录到经费管理表
|
||||||
|
detail.setOutlayManageId(school.getId());
|
||||||
|
dao().insert(detail);
|
||||||
|
} else if (info.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_TWO")) {
|
||||||
|
|
||||||
|
ActivityBudget budget = dao().fetch(ActivityBudget.class, Cnd.where("id", "=", info.getDeductionBudgetId()));
|
||||||
|
if (ObjectUtil.isNotEmpty(budget)&&budget.getIsSchoolBudget()){
|
||||||
|
//如果分工会报销了校工会的余额
|
||||||
|
OutlayManageSchool school = dao().fetch(OutlayManageSchool.class, Cnd.where("year", "=", DateUtil.thisYear()));
|
||||||
|
if (ObjectUtil.isEmpty(school)) {
|
||||||
|
throw new BaseException("该年份没有设置金额!");
|
||||||
|
}
|
||||||
|
if (school.getTotalQuota().subtract(school.getUsedQuota()).compareTo(info.getActualMoney()) < 0) {
|
||||||
|
throw new BaseException("剩余配额不足!剩余:" + school.getTotalQuota().subtract(school.getUsedQuota()));
|
||||||
|
}
|
||||||
|
school.setUsedQuota(school.getUsedQuota().add(info.getActualMoney()));
|
||||||
|
dao().updateIgnoreNull(school);
|
||||||
|
|
||||||
|
//添加使用记录到经费管理表
|
||||||
|
detail.setOutlayManageId(school.getId());
|
||||||
|
dao().insert(detail);
|
||||||
|
}else{
|
||||||
|
// 更新分工会活动经费表
|
||||||
|
OutlayManageUnion manageUnion = dao().fetch(OutlayManageUnion.class,
|
||||||
|
Cnd.where("year", "=", DateUtil.thisYear())
|
||||||
|
.and("unionId", "=", info.getUnionId()));
|
||||||
|
if (ObjectUtil.isEmpty(manageUnion)) {
|
||||||
|
throw new BaseException("该年份没有设置金额!");
|
||||||
|
}
|
||||||
|
if (manageUnion.getTotalQuota().subtract(manageUnion.getUsedQuota()).compareTo(info.getActualMoney()) < 0) {
|
||||||
|
throw new BaseException("剩余配额不足!剩余:" + manageUnion.getTotalQuota().subtract(manageUnion.getUsedQuota()));
|
||||||
|
}
|
||||||
|
manageUnion.setUsedQuota(manageUnion.getUsedQuota().add(info.getActualMoney()));
|
||||||
|
dao().updateIgnoreNull(manageUnion);
|
||||||
|
|
||||||
|
//添加使用记录到经费管理表
|
||||||
|
detail.setOutlayManageId(manageUnion.getId());
|
||||||
|
dao().insert(detail);
|
||||||
|
}
|
||||||
|
}else if (info.getOutlayManageSource().equals("ACTIVITY_BUDGET_TYPE_THREE")){
|
||||||
|
// 更新分工会活动经费表
|
||||||
|
OutlayManageClub manageClub = dao().fetch(OutlayManageClub.class,
|
||||||
|
Cnd.where("year", "=", DateUtil.thisYear())
|
||||||
|
.and("clubId", "=", info.getClubId()));
|
||||||
|
if (ObjectUtil.isEmpty(manageClub)) {
|
||||||
|
throw new BaseException("该年份没有设置金额!");
|
||||||
|
}
|
||||||
|
if (manageClub.getTotalQuota().subtract(manageClub.getUsedQuota()).compareTo(info.getActualMoney()) < 0) {
|
||||||
|
throw new BaseException("剩余配额不足!剩余:" + manageClub.getTotalQuota().subtract(manageClub.getUsedQuota()));
|
||||||
|
}
|
||||||
|
manageClub.setUsedQuota(manageClub.getUsedQuota().add(info.getActualMoney()));
|
||||||
|
dao().updateIgnoreNull(manageClub);
|
||||||
|
|
||||||
|
//添加使用记录到经费管理表
|
||||||
|
detail.setOutlayManageId(manageClub.getId());
|
||||||
|
dao().insert(detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
flowCommonService.executeTask(args);
|
||||||
|
}
|
||||||
|
}
|
||||||
+96
@@ -1,12 +1,25 @@
|
|||||||
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.impl;
|
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
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.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.models.ActivityReimbursementInfo;
|
||||||
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
|
||||||
|
import com.budwk.app.zhgh.dayofficework.outlay.activityBudget.models.ActivityBudget;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
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.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.Lang;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@@ -53,4 +66,87 @@ public class ActivityReimbursementServiceImpl extends BaseServiceImpl<ActivityRe
|
|||||||
""").setParam("startYear", startYear).setParam("endYear", endYear);
|
""").setParam("startYear", startYear).setParam("endYear", endYear);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<NutMap> getBudgetMoney(String outlayManageSource, String clubId) {
|
||||||
|
String sqlStr = """
|
||||||
|
SELECT
|
||||||
|
ab.id,
|
||||||
|
ab.isSchoolBudget,
|
||||||
|
ab.schoolBudgetId,
|
||||||
|
ab.totalBudgetMoney,
|
||||||
|
ab.activityMatter
|
||||||
|
FROM
|
||||||
|
activity_budget ab
|
||||||
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = ab.id
|
||||||
|
$condition
|
||||||
|
""";
|
||||||
|
//找出今年的预算
|
||||||
|
Sql sql = Sqls.create(sqlStr);
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.and("YEAR(ab.applyDate)", "=", DateUtil.thisYear());
|
||||||
|
cnd.and("ins.state", "=", 20);
|
||||||
|
cnd.and("ab.outlayManageSource", "=", outlayManageSource);
|
||||||
|
if (Objects.equals("ACTIVITY_BUDGET_TYPE_TWO", outlayManageSource)) {
|
||||||
|
cnd.and("ab.unionId", "=", SecurityUtil.getUnionId());
|
||||||
|
} else if (Objects.equals("ACTIVITY_BUDGET_TYPE_THREE", outlayManageSource)) {
|
||||||
|
cnd.and("ab.clubId", "=", clubId);
|
||||||
|
}
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
List<NutMap> budgetList = listMap(sql);
|
||||||
|
|
||||||
|
Sql sql1 = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
info.deductionBudgetId,
|
||||||
|
info.actualMoney
|
||||||
|
FROM
|
||||||
|
`activity_reimbursement_info` info
|
||||||
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
|
WHERE
|
||||||
|
ins.state = 20
|
||||||
|
""");
|
||||||
|
List<NutMap> infoList = listMap(sql1);
|
||||||
|
|
||||||
|
budgetList.forEach(v -> {
|
||||||
|
double usedBudgetMoney = infoList.stream().filter(info -> info.getString("deductionBudgetId").equals(v.getString("id")))
|
||||||
|
.mapToDouble(info -> info.getDouble("actualMoney")).sum();
|
||||||
|
v.setv("usedBudgetMoney", usedBudgetMoney);
|
||||||
|
});
|
||||||
|
return budgetList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@ApiOperation("预算验证")
|
||||||
|
public Result bxAddValidate(String deductionBudgetId, BigDecimal moneyBig, String outlayManageSource, String clubId) {
|
||||||
|
|
||||||
|
if (StrUtil.isAllEmpty(deductionBudgetId, outlayManageSource)) {
|
||||||
|
return Result.error("参数错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
ActivityBudget budget = dao().fetch(ActivityBudget.class, deductionBudgetId);
|
||||||
|
if (Lang.isEmpty(budget)) {
|
||||||
|
return Result.error("预算不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
info.actualMoney
|
||||||
|
FROM
|
||||||
|
`activity_reimbursement_info` info
|
||||||
|
LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id
|
||||||
|
WHERE
|
||||||
|
ins.state = 20 and info.deductionBudgetId=@deductionBudgetId
|
||||||
|
""").setParam("deductionBudgetId", budget.getId());
|
||||||
|
List<NutMap> infoList = listMap(sql);
|
||||||
|
double usedBudgetMoney = infoList.stream().mapToDouble(info -> info.getDouble("actualMoney")).sum();
|
||||||
|
BigDecimal usedBudgetMoneyBig = BigDecimal.valueOf(usedBudgetMoney);
|
||||||
|
|
||||||
|
if (usedBudgetMoneyBig.add(moneyBig).compareTo(budget.getTotalBudgetMoney()) > 0) {
|
||||||
|
BigDecimal subtract = budget.getTotalBudgetMoney().subtract(usedBudgetMoneyBig);
|
||||||
|
return Result.error("您申报的金额已超过总金额!当前预算还剩下:" + subtract);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,11 @@ public class CommonPageParam extends PageForm {
|
|||||||
|
|
||||||
private String unionId;
|
private String unionId;
|
||||||
|
|
||||||
|
private String activityReimbursementMode;
|
||||||
|
|
||||||
|
private String outlayManageSource;
|
||||||
|
private String budgetReimburseType;
|
||||||
|
|
||||||
|
|
||||||
public void buildSearch(Cnd cnd, String prefix) {
|
public void buildSearch(Cnd cnd, String prefix) {
|
||||||
if (cnd == null) {
|
if (cnd == null) {
|
||||||
@@ -60,5 +65,6 @@ public class CommonPageParam extends PageForm {
|
|||||||
cnd.andEX(prefix + "clubId", "=", this.getClubId());
|
cnd.andEX(prefix + "clubId", "=", this.getClubId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-9
@@ -57,8 +57,8 @@ public class ActivityBudgetApplyListController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("分页查询")
|
@ApiOperation("分页查询")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
public Result pageData(PageForm pageForm, Integer year, String activityMatter) {
|
public Result pageData(PageForm pageForm, Integer year, String activityMatter, String budgetReimburseType) {
|
||||||
Sql sqlByApplyList = activityBudgetService.getSqlByApplyList(pageForm, year, activityMatter, Cnd.NEW());
|
Sql sqlByApplyList = activityBudgetService.getSqlByApplyList(pageForm, year, activityMatter, budgetReimburseType, Cnd.NEW());
|
||||||
Pagination pagination = activityBudgetService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sqlByApplyList);
|
Pagination pagination = activityBudgetService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sqlByApplyList);
|
||||||
return Result.success(pagination);
|
return Result.success(pagination);
|
||||||
}
|
}
|
||||||
@@ -67,7 +67,7 @@ public class ActivityBudgetApplyListController {
|
|||||||
@ApiOperation("批量删除申报数据")
|
@ApiOperation("批量删除申报数据")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog( 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));
|
||||||
@@ -80,7 +80,7 @@ public class ActivityBudgetApplyListController {
|
|||||||
@ApiOperation("删除一条申报数据")
|
@ApiOperation("删除一条申报数据")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog( 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));
|
||||||
@@ -90,7 +90,7 @@ public class ActivityBudgetApplyListController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("提交申报数据")
|
@ApiOperation("提交申报数据")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
@SLog( 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 ->
|
||||||
@@ -121,11 +121,11 @@ public class ActivityBudgetApplyListController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("查询申报的金额")
|
@ApiOperation("查询申报的金额")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
public Result getApplyMoney(Integer year, String activityMatter) {
|
public Result getApplyMoney(Integer year, String activityMatter, String budgetReimburseType) {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.andEX("info.isSchoolBudget", "=", 0);
|
cnd.andEX("info.isSchoolBudget", "=", 0);
|
||||||
cnd.andEX("ins.state", "=", 20);
|
cnd.andEX("ins.state", "=", 20);
|
||||||
Sql sql = activityBudgetService.getSqlByApplyList(null, year, activityMatter, cnd);
|
Sql sql = activityBudgetService.getSqlByApplyList(null, year, activityMatter, budgetReimburseType, cnd);
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
List<NutMap> list = activityBudgetService.listMap(sql);
|
List<NutMap> list = activityBudgetService.listMap(sql);
|
||||||
double declareTotalBudgetMoney = list.stream().mapToDouble(map -> map.getDouble("declareTotalBudgetMoney")).sum();
|
double declareTotalBudgetMoney = list.stream().mapToDouble(map -> map.getDouble("declareTotalBudgetMoney")).sum();
|
||||||
@@ -137,9 +137,9 @@ public class ActivityBudgetApplyListController {
|
|||||||
@At
|
@At
|
||||||
@Ok("void")
|
@Ok("void")
|
||||||
@SaCheckPermission("activity.budget.applyList")
|
@SaCheckPermission("activity.budget.applyList")
|
||||||
public void doExport(@Valid Integer year, String activityMatter, HttpServletResponse response) {
|
public void doExport(@Valid Integer year, String activityMatter, String budgetReimburseType,HttpServletResponse response) {
|
||||||
|
|
||||||
activityBudgetService.doExport(year, activityMatter, response);
|
activityBudgetService.doExport(year, activityMatter, budgetReimburseType,response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+10
-6
@@ -61,8 +61,8 @@ public class ActivityBudgetApplyStatisticsController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("分页查询")
|
@ApiOperation("分页查询")
|
||||||
@SaCheckPermission("activity.budget.applyStatistics")
|
@SaCheckPermission("activity.budget.applyStatistics")
|
||||||
public Result pageData(PageForm pageForm, Integer year, String unionId, String clubId, String outlayManageSource, String activityMatter) {
|
public Result pageData(PageForm pageForm, Integer year, String unionId, String clubId, String outlayManageSource, String budgetReimburseType, String activityMatter) {
|
||||||
Sql sql = activityBudgetService.getsql(year, unionId, clubId, outlayManageSource, activityMatter);
|
Sql sql = activityBudgetService.getsql(year, unionId, clubId, outlayManageSource, activityMatter, budgetReimburseType);
|
||||||
Pagination pagination = activityBudgetService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
Pagination pagination = activityBudgetService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
return Result.success(pagination);
|
return Result.success(pagination);
|
||||||
}
|
}
|
||||||
@@ -70,8 +70,8 @@ public class ActivityBudgetApplyStatisticsController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("查询预算有多少钱")
|
@ApiOperation("查询预算有多少钱")
|
||||||
@SaCheckPermission("activity.budget.applyStatistics")
|
@SaCheckPermission("activity.budget.applyStatistics")
|
||||||
public Result getApplyMoney(Integer year, String unionId, String clubId, String outlayManageSource, String activityMatter) {
|
public Result getApplyMoney(Integer year, String unionId, String clubId, String outlayManageSource, String activityMatter, String budgetReimburseType) {
|
||||||
Sql sql = activityBudgetService.getsql(year, unionId, clubId, outlayManageSource, activityMatter);
|
Sql sql = activityBudgetService.getsql(year, unionId, clubId, outlayManageSource, activityMatter, budgetReimburseType);
|
||||||
List<NutMap> list = activityBudgetService.listMap(sql);
|
List<NutMap> list = activityBudgetService.listMap(sql);
|
||||||
list = list.stream().filter(v -> !v.getBoolean("isSchoolBudget")).toList();
|
list = list.stream().filter(v -> !v.getBoolean("isSchoolBudget")).toList();
|
||||||
double declareTotalBudgetMoney = list.stream().mapToDouble(map -> map.getDouble("declareTotalBudgetMoney")).sum();
|
double declareTotalBudgetMoney = list.stream().mapToDouble(map -> map.getDouble("declareTotalBudgetMoney")).sum();
|
||||||
@@ -83,13 +83,16 @@ public class ActivityBudgetApplyStatisticsController {
|
|||||||
@Ok("void")
|
@Ok("void")
|
||||||
@ApiOperation("导出")
|
@ApiOperation("导出")
|
||||||
@SaCheckPermission("activity.budget.applyStatistics")
|
@SaCheckPermission("activity.budget.applyStatistics")
|
||||||
public void doExport(@Valid Integer year, String clubId, String unionId, @Valid String outlayManageSource, HttpServletResponse response) {
|
public void doExport(@Valid Integer year, String clubId, String unionId, @Valid String outlayManageSource, String budgetReimburseType, HttpServletResponse response) {
|
||||||
Sql sql = activityBudgetService.getsql(year, unionId, clubId, outlayManageSource, null);
|
Sql sql = activityBudgetService.getsql(year, unionId, clubId, outlayManageSource, null, budgetReimburseType);
|
||||||
List<NutMap> mapList = activityBudgetService.listMap(sql);
|
List<NutMap> mapList = activityBudgetService.listMap(sql);
|
||||||
List<Sys_dict> dictList = sysDictService.getSubListByCode("ACTIVITY_BUDGET_TYPE");
|
List<Sys_dict> dictList = sysDictService.getSubListByCode("ACTIVITY_BUDGET_TYPE");
|
||||||
|
List<Sys_dict> dictList2 = sysDictService.getSubListByCode("ACTIVITY_BUDGET_REIMBURSE_TYPE");
|
||||||
mapList.forEach(map -> {
|
mapList.forEach(map -> {
|
||||||
Sys_dict dict = dictList.stream().filter(d -> d.getCode().equals(map.getString("outlayManageSource"))).findFirst().orElse(null);
|
Sys_dict dict = dictList.stream().filter(d -> d.getCode().equals(map.getString("outlayManageSource"))).findFirst().orElse(null);
|
||||||
map.put("outlayManageSource", dict.getName());
|
map.put("outlayManageSource", dict.getName());
|
||||||
|
Sys_dict dict2 = dictList2.stream().filter(d -> d.getCode().equals(map.getString("budgetReimburseType"))).findFirst().orElse(null);
|
||||||
|
map.put("budgetReimburseType", dict2.getName());
|
||||||
});
|
});
|
||||||
ArrayList<ExcelExportEntity> entities = new ArrayList<>();
|
ArrayList<ExcelExportEntity> entities = new ArrayList<>();
|
||||||
entities.add(new ExcelExportEntity("年度", "year", 20));
|
entities.add(new ExcelExportEntity("年度", "year", 20));
|
||||||
@@ -97,6 +100,7 @@ public class ActivityBudgetApplyStatisticsController {
|
|||||||
entities.add(new ExcelExportEntity("申报人工号", "loginName", 20));
|
entities.add(new ExcelExportEntity("申报人工号", "loginName", 20));
|
||||||
entities.add(new ExcelExportEntity("联系方式", "mobile", 20));
|
entities.add(new ExcelExportEntity("联系方式", "mobile", 20));
|
||||||
entities.add(new ExcelExportEntity("申报类型", "outlayManageSource", 20));
|
entities.add(new ExcelExportEntity("申报类型", "outlayManageSource", 20));
|
||||||
|
entities.add(new ExcelExportEntity("预算条目", "budgetReimburseType", 20));
|
||||||
entities.add(new ExcelExportEntity("申报单位", "helpUnitName", 20));
|
entities.add(new ExcelExportEntity("申报单位", "helpUnitName", 20));
|
||||||
entities.add(new ExcelExportEntity("事项", "activityMatter", 20));
|
entities.add(new ExcelExportEntity("事项", "activityMatter", 20));
|
||||||
ExcelExportEntity draftCodeEntity = new ExcelExportEntity("申报预算金额", "declareTotalBudgetMoney", 20);
|
ExcelExportEntity draftCodeEntity = new ExcelExportEntity("申报预算金额", "declareTotalBudgetMoney", 20);
|
||||||
|
|||||||
+4
-4
@@ -52,16 +52,16 @@ public class ActivityBudgetQueryStatisticsController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("分页查询")
|
@ApiOperation("分页查询")
|
||||||
@SaCheckPermission("activity.budget.queryStatistics")
|
@SaCheckPermission("activity.budget.queryStatistics")
|
||||||
public Result pageData(@Valid Integer year, String clubId, String unionId, @Valid String outlayManageSource) {
|
public Result pageData(@Valid Integer year, String clubId, String unionId, @Valid String outlayManageSource,String budgetReimburseType) {
|
||||||
return Result.success(statisticsService.getDataByBudgetTypeCode(year, clubId, unionId, outlayManageSource));
|
return Result.success(statisticsService.getDataByBudgetTypeCode(year, clubId, unionId, outlayManageSource,budgetReimburseType));
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@Ok("void")
|
@Ok("void")
|
||||||
@ApiOperation("导出")
|
@ApiOperation("导出")
|
||||||
@SaCheckPermission("activity.budget.queryStatistics")
|
@SaCheckPermission("activity.budget.queryStatistics")
|
||||||
public void doExport(@Valid Integer year, String clubId, String unionId, @Valid String outlayManageSource, HttpServletResponse response) {
|
public void doExport(@Valid Integer year, String clubId, String unionId, @Valid String outlayManageSource, String budgetReimburseType,HttpServletResponse response) {
|
||||||
List<NutMap> mapList = statisticsService.getDataByBudgetTypeCode(year, clubId, unionId, outlayManageSource);
|
List<NutMap> mapList = statisticsService.getDataByBudgetTypeCode(year, clubId, unionId, outlayManageSource,budgetReimburseType);
|
||||||
if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_TWO")){
|
if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_TWO")){
|
||||||
mapList.forEach(m->{
|
mapList.forEach(m->{
|
||||||
if (StrUtil.isEmpty(m.getString("unionName"))){
|
if (StrUtil.isEmpty(m.getString("unionName"))){
|
||||||
|
|||||||
+3
-1
@@ -54,6 +54,7 @@ public class ActivityBudgetSchoolAuditController {
|
|||||||
Integer year,
|
Integer year,
|
||||||
String unionId,
|
String unionId,
|
||||||
String clubId,
|
String clubId,
|
||||||
|
String budgetReimburseType,
|
||||||
Boolean approval,
|
Boolean approval,
|
||||||
String outlayManageSource,
|
String outlayManageSource,
|
||||||
String activityMatter) {
|
String activityMatter) {
|
||||||
@@ -88,9 +89,10 @@ public class ActivityBudgetSchoolAuditController {
|
|||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("t.taskName", "=", "b6f29037-972d-4b97-8677-c3b3672ef0dc");
|
cnd.and("t.taskName", "=", "b6f29037-972d-4b97-8677-c3b3672ef0dc");
|
||||||
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
// cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
|
||||||
cnd.andEX("info.unionId", "=", unionId);
|
cnd.andEX("info.unionId", "=", unionId);
|
||||||
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
|
cnd.andEX("info.outlayManageSource", "=", outlayManageSource);
|
||||||
|
cnd.andEX("info.budgetReimburseType", "=", budgetReimburseType);
|
||||||
|
|
||||||
if (approval) {
|
if (approval) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
|||||||
+4
@@ -78,6 +78,10 @@ public class ActivityBudget extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 200)
|
@ColDefine(type = ColType.VARCHAR, width = 200)
|
||||||
private String outlayManageSource;
|
private String outlayManageSource;
|
||||||
@Column
|
@Column
|
||||||
|
@Comment("预算条目")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 200)
|
||||||
|
private String budgetReimburseType;
|
||||||
|
@Column
|
||||||
@Comment("创建人工会")
|
@Comment("创建人工会")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
private String unionId;
|
private String unionId;
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@ import org.nutz.dao.sql.Sql;
|
|||||||
|
|
||||||
public interface ActivityBudgetApplyStatisticsService extends BaseService {
|
public interface ActivityBudgetApplyStatisticsService extends BaseService {
|
||||||
|
|
||||||
Sql getsql(Integer year, String unionId,String clubId, String outlayManageSource,String activityMatter);
|
Sql getsql(Integer year, String unionId,String clubId, String outlayManageSource,String activityMatter,String budgetReimburseType);
|
||||||
|
|
||||||
|
|
||||||
void doDelete(String id);
|
void doDelete(String id);
|
||||||
|
|||||||
+1
-1
@@ -7,5 +7,5 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface ActivityBudgetQueryStatisticsService extends BaseService {
|
public interface ActivityBudgetQueryStatisticsService extends BaseService {
|
||||||
|
|
||||||
List<NutMap> getDataByBudgetTypeCode(Integer year, String clubId, String unionId, String outlayManageSource);
|
List<NutMap> getDataByBudgetTypeCode(Integer year, String clubId, String unionId, String outlayManageSource,String budgetReimburseType);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -13,10 +13,11 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
public interface ActivityBudgetService extends BaseService<ActivityBudget> {
|
public interface ActivityBudgetService extends BaseService<ActivityBudget> {
|
||||||
|
|
||||||
|
|
||||||
Sql getSqlByApplyList(PageForm pageForm, Integer year, String activityMatter, Cnd cnd);
|
Sql getSqlByApplyList(PageForm pageForm, Integer year, String activityMatter, String budgetReimburseType, Cnd cnd);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提交年度预算申报
|
* 提交年度预算申报
|
||||||
|
*
|
||||||
* @param activityBudget
|
* @param activityBudget
|
||||||
*/
|
*/
|
||||||
Result submit(ActivityBudget activityBudget);
|
Result submit(ActivityBudget activityBudget);
|
||||||
@@ -24,5 +25,5 @@ public interface ActivityBudgetService extends BaseService<ActivityBudget> {
|
|||||||
NutMap findOne(String id);
|
NutMap findOne(String id);
|
||||||
|
|
||||||
|
|
||||||
void doExport(Integer year, String activityMatter, HttpServletResponse response);
|
void doExport(Integer year, String activityMatter, String budgetReimburseType, HttpServletResponse response);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -35,7 +35,7 @@ public class ActivityBudgetApplyStatisticsServiceImpl extends BaseServiceImpl im
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Sql getsql(Integer year, String unionId, String clubId, String outlayManageSource, String activityMatter) {
|
public Sql getsql(Integer year, String unionId, String clubId, String outlayManageSource, String activityMatter,String budgetReimburseType) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
YEAR(ab.applyDate) year,
|
YEAR(ab.applyDate) year,
|
||||||
@@ -60,6 +60,7 @@ public class ActivityBudgetApplyStatisticsServiceImpl extends BaseServiceImpl im
|
|||||||
}*/
|
}*/
|
||||||
cnd.andEX("ab.clubId", "=", clubId);
|
cnd.andEX("ab.clubId", "=", clubId);
|
||||||
cnd.andEX("ab.outlayManageSource", "=", outlayManageSource);
|
cnd.andEX("ab.outlayManageSource", "=", outlayManageSource);
|
||||||
|
cnd.andEX("ab.budgetReimburseType", "=", budgetReimburseType);
|
||||||
cnd.andEX("ins.state", "=", 20);
|
cnd.andEX("ins.state", "=", 20);
|
||||||
cnd.desc("ab.applyDate");
|
cnd.desc("ab.applyDate");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
|
|||||||
+4
-1
@@ -19,7 +19,7 @@ public class ActivityBudgetQueryStatisticsServiceImpl extends BaseServiceImpl im
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<NutMap> getDataByBudgetTypeCode(Integer year, String clubId, String unionId, String outlayManageSource) {
|
public List<NutMap> getDataByBudgetTypeCode(Integer year, String clubId, String unionId, String outlayManageSource,String budgetReimburseType) {
|
||||||
if (List.of("ACTIVITY_BUDGET_TYPE_ONE").contains(outlayManageSource)) {
|
if (List.of("ACTIVITY_BUDGET_TYPE_ONE").contains(outlayManageSource)) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -34,6 +34,7 @@ public class ActivityBudgetQueryStatisticsServiceImpl extends BaseServiceImpl im
|
|||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.andEX("YEAR(ab.applyDate)", "=", year);
|
cnd.andEX("YEAR(ab.applyDate)", "=", year);
|
||||||
cnd.andEX("ab.outlayManageSource", "=", outlayManageSource);
|
cnd.andEX("ab.outlayManageSource", "=", outlayManageSource);
|
||||||
|
cnd.andEX("ab.budgetReimburseType", "=", budgetReimburseType);
|
||||||
cnd.andEX("wpi.state", "=", 20);
|
cnd.andEX("wpi.state", "=", 20);
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
return listMap(sql);
|
return listMap(sql);
|
||||||
@@ -56,6 +57,7 @@ public class ActivityBudgetQueryStatisticsServiceImpl extends BaseServiceImpl im
|
|||||||
cnd.andEX("ab.unionId", "=", unionId);
|
cnd.andEX("ab.unionId", "=", unionId);
|
||||||
cnd.andEX("ab.isSchoolBudget", "=", 0);
|
cnd.andEX("ab.isSchoolBudget", "=", 0);
|
||||||
cnd.andEX("ab.outlayManageSource", "=", "ACTIVITY_BUDGET_TYPE_TWO");
|
cnd.andEX("ab.outlayManageSource", "=", "ACTIVITY_BUDGET_TYPE_TWO");
|
||||||
|
cnd.andEX("ab.budgetReimburseType", "=", budgetReimburseType);
|
||||||
cnd.andEX("wpi.state", "=", 20);
|
cnd.andEX("wpi.state", "=", 20);
|
||||||
cnd.andEX("YEAR(ab.applyDate)", "=", year);
|
cnd.andEX("YEAR(ab.applyDate)", "=", year);
|
||||||
cnd.groupBy("ab.unionId");
|
cnd.groupBy("ab.unionId");
|
||||||
@@ -81,6 +83,7 @@ public class ActivityBudgetQueryStatisticsServiceImpl extends BaseServiceImpl im
|
|||||||
cnd.andEX("ab.clubId", "=", clubId);
|
cnd.andEX("ab.clubId", "=", clubId);
|
||||||
cnd.andEX("ab.isSchoolBudget", "=", 0);
|
cnd.andEX("ab.isSchoolBudget", "=", 0);
|
||||||
cnd.andEX("ab.outlayManageSource", "=", "ACTIVITY_BUDGET_TYPE_THREE");
|
cnd.andEX("ab.outlayManageSource", "=", "ACTIVITY_BUDGET_TYPE_THREE");
|
||||||
|
cnd.andEX("ab.budgetReimburseType", "=", budgetReimburseType);
|
||||||
cnd.andEX("wpi.state", "=", 20);
|
cnd.andEX("wpi.state", "=", 20);
|
||||||
cnd.andEX("YEAR(ab.applyDate)", "=", year);
|
cnd.andEX("YEAR(ab.applyDate)", "=", year);
|
||||||
cnd.groupBy("ab.clubId");
|
cnd.groupBy("ab.clubId");
|
||||||
|
|||||||
+4
-3
@@ -59,7 +59,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
|||||||
private FlowEngine flowEngine;
|
private FlowEngine flowEngine;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Sql getSqlByApplyList(PageForm pageForm, Integer year, String activityMatter,Cnd cnd) {
|
public Sql getSqlByApplyList(PageForm pageForm, Integer year, String activityMatter,String budgetReimburseType,Cnd cnd) {
|
||||||
|
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
@@ -117,6 +117,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
|||||||
cnd.and(group);
|
cnd.and(group);
|
||||||
}
|
}
|
||||||
cnd.andEX("YEAR(info.applyDate)", "=", year);
|
cnd.andEX("YEAR(info.applyDate)", "=", year);
|
||||||
|
cnd.andEX("info.budgetReimburseType", "=", budgetReimburseType);
|
||||||
cnd.desc("info.applyDate");
|
cnd.desc("info.applyDate");
|
||||||
sql.setCondition(cnd);
|
sql.setCondition(cnd);
|
||||||
return sql;
|
return sql;
|
||||||
@@ -245,9 +246,9 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doExport(Integer year, String activityMatter, HttpServletResponse response) {
|
public void doExport(Integer year, String activityMatter, String budgetReimburseType,HttpServletResponse response) {
|
||||||
|
|
||||||
Sql sql = getSqlByApplyList(null, year, activityMatter,Cnd.NEW());
|
Sql sql = getSqlByApplyList(null, year, activityMatter,budgetReimburseType,Cnd.NEW());
|
||||||
List<NutMap> mapList = listMap(sql);
|
List<NutMap> mapList = listMap(sql);
|
||||||
List<Sys_dict> dictList = sysDictService.getSubListByCode("ACTIVITY_BUDGET_TYPE");
|
List<Sys_dict> dictList = sysDictService.getSubListByCode("ACTIVITY_BUDGET_TYPE");
|
||||||
mapList.forEach(map -> {
|
mapList.forEach(map -> {
|
||||||
|
|||||||
+5
-5
@@ -112,7 +112,7 @@ public class OutlayManageClubController {
|
|||||||
@SaCheckPermission("outlay.outlayManage.club.manage")
|
@SaCheckPermission("outlay.outlayManage.club.manage")
|
||||||
@SLog(tag = "协会预算分配", msg = "根据申报的金额修改本年的预算预算")
|
@SLog(tag = "协会预算分配", msg = "根据申报的金额修改本年的预算预算")
|
||||||
public Result issuedOutlay() {
|
public Result issuedOutlay() {
|
||||||
Sql sql = Sqls.create("""
|
/* Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
ab.clubId,
|
ab.clubId,
|
||||||
ab.totalBudgetMoney
|
ab.totalBudgetMoney
|
||||||
@@ -126,7 +126,7 @@ public class OutlayManageClubController {
|
|||||||
AND wpi.state = 20
|
AND wpi.state = 20
|
||||||
""").setParam("year", DateUtil.thisYear());
|
""").setParam("year", DateUtil.thisYear());
|
||||||
List<NutMap> budgetList = baseService.listMap(sql);
|
List<NutMap> budgetList = baseService.listMap(sql);
|
||||||
|
*/
|
||||||
Sql sqlClub = Sqls.create("""
|
Sql sqlClub = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
c.*
|
c.*
|
||||||
@@ -141,16 +141,16 @@ public class OutlayManageClubController {
|
|||||||
|
|
||||||
List<OutlayManageClub> insertUnionList = new ArrayList<>();
|
List<OutlayManageClub> insertUnionList = new ArrayList<>();
|
||||||
clubList.forEach(v -> {
|
clubList.forEach(v -> {
|
||||||
BigDecimal totalBudgetMoney = budgetList.stream()
|
/* BigDecimal totalBudgetMoney = budgetList.stream()
|
||||||
.filter(budget -> budget.getString("clubId").equals(v.getId()))
|
.filter(budget -> budget.getString("clubId").equals(v.getId()))
|
||||||
.map(budget -> new BigDecimal(budget.getString("totalBudgetMoney"))) // 提取 money 属性
|
.map(budget -> new BigDecimal(budget.getString("totalBudgetMoney"))) // 提取 money 属性
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);*/
|
||||||
OutlayManageClub outlayManageClub = new OutlayManageClub();
|
OutlayManageClub outlayManageClub = new OutlayManageClub();
|
||||||
outlayManageClub.setYear(DateUtil.thisYear());
|
outlayManageClub.setYear(DateUtil.thisYear());
|
||||||
outlayManageClub.setClubName(v.getClubName());
|
outlayManageClub.setClubName(v.getClubName());
|
||||||
outlayManageClub.setClubCode(v.getClubCode());
|
outlayManageClub.setClubCode(v.getClubCode());
|
||||||
outlayManageClub.setClubId(v.getId());
|
outlayManageClub.setClubId(v.getId());
|
||||||
outlayManageClub.setTotalQuota(totalBudgetMoney);
|
// outlayManageClub.setTotalQuota(totalBudgetMoney);
|
||||||
insertUnionList.add(outlayManageClub);
|
insertUnionList.add(outlayManageClub);
|
||||||
});
|
});
|
||||||
baseService.insert(insertUnionList);
|
baseService.insert(insertUnionList);
|
||||||
|
|||||||
+3
-3
@@ -95,7 +95,7 @@ public class OutlayManageSchoolController {
|
|||||||
@SaCheckPermission("outlay.outlayManage.school.manage")
|
@SaCheckPermission("outlay.outlayManage.school.manage")
|
||||||
@SLog(tag = "校工会预算分配", msg = "下发预算的金额:${args[0]}")
|
@SLog(tag = "校工会预算分配", msg = "下发预算的金额:${args[0]}")
|
||||||
public Result issuedOutlay() {
|
public Result issuedOutlay() {
|
||||||
Sql sql = Sqls.create("""
|
/* Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
totalBudgetMoney
|
totalBudgetMoney
|
||||||
FROM
|
FROM
|
||||||
@@ -109,10 +109,10 @@ public class OutlayManageSchoolController {
|
|||||||
List<NutMap> budgetList = baseService.listMap(sql);
|
List<NutMap> budgetList = baseService.listMap(sql);
|
||||||
BigDecimal totalBudgetMoney = budgetList.stream()
|
BigDecimal totalBudgetMoney = budgetList.stream()
|
||||||
.map(v->new BigDecimal(v.getString("totalBudgetMoney"))) // 提取 money 属性
|
.map(v->new BigDecimal(v.getString("totalBudgetMoney"))) // 提取 money 属性
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);*/
|
||||||
OutlayManageSchool outlayManageSchool = new OutlayManageSchool();
|
OutlayManageSchool outlayManageSchool = new OutlayManageSchool();
|
||||||
outlayManageSchool.setYear(DateUtil.thisYear());
|
outlayManageSchool.setYear(DateUtil.thisYear());
|
||||||
outlayManageSchool.setTotalQuota(totalBudgetMoney);
|
// outlayManageSchool.setTotalQuota(totalBudgetMoney);
|
||||||
baseService.insert(outlayManageSchool);
|
baseService.insert(outlayManageSchool);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -106,7 +106,7 @@ public class OutlayManageUnionController {
|
|||||||
@SaCheckPermission("outlay.outlayManage.union.manage")
|
@SaCheckPermission("outlay.outlayManage.union.manage")
|
||||||
@SLog(tag = "分工会预算分配", msg = "根据申报的金额修改本年的预算预算")
|
@SLog(tag = "分工会预算分配", msg = "根据申报的金额修改本年的预算预算")
|
||||||
public Result issuedOutlay() {
|
public Result issuedOutlay() {
|
||||||
Sql sql = Sqls.create("""
|
/* Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
unionId,
|
unionId,
|
||||||
totalBudgetMoney
|
totalBudgetMoney
|
||||||
@@ -119,22 +119,22 @@ public class OutlayManageUnionController {
|
|||||||
AND ab.isSchoolBudget =0
|
AND ab.isSchoolBudget =0
|
||||||
AND wpi.state = 20
|
AND wpi.state = 20
|
||||||
""").setParam("year", DateUtil.thisYear());
|
""").setParam("year", DateUtil.thisYear());
|
||||||
List<NutMap> budgetList = baseService.listMap(sql);
|
List<NutMap> budgetList = baseService.listMap(sql);*/
|
||||||
|
|
||||||
List<Sys_union> unionList = baseService.dao().query(Sys_union.class, Cnd.NEW());
|
List<Sys_union> unionList = baseService.dao().query(Sys_union.class, Cnd.NEW());
|
||||||
|
|
||||||
List<OutlayManageUnion> insertUnionList = new ArrayList<>();
|
List<OutlayManageUnion> insertUnionList = new ArrayList<>();
|
||||||
unionList.forEach(v -> {
|
unionList.forEach(v -> {
|
||||||
BigDecimal totalBudgetMoney = budgetList.stream()
|
/*BigDecimal totalBudgetMoney = budgetList.stream()
|
||||||
.filter(budget -> budget.getString("unionId").equals(v.getId()))
|
.filter(budget -> budget.getString("unionId").equals(v.getId()))
|
||||||
.map(budget -> new BigDecimal(budget.getString("totalBudgetMoney"))) // 提取 money 属性
|
.map(budget -> new BigDecimal(budget.getString("totalBudgetMoney"))) // 提取 money 属性
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);*/
|
||||||
OutlayManageUnion outlayManageUnion = new OutlayManageUnion();
|
OutlayManageUnion outlayManageUnion = new OutlayManageUnion();
|
||||||
outlayManageUnion.setYear(DateUtil.thisYear());
|
outlayManageUnion.setYear(DateUtil.thisYear());
|
||||||
outlayManageUnion.setUnionName(v.getName());
|
outlayManageUnion.setUnionName(v.getName());
|
||||||
outlayManageUnion.setUnionCode(v.getUnionCode());
|
outlayManageUnion.setUnionCode(v.getUnionCode());
|
||||||
outlayManageUnion.setUnionId(v.getId());
|
outlayManageUnion.setUnionId(v.getId());
|
||||||
outlayManageUnion.setTotalQuota(totalBudgetMoney);
|
// outlayManageUnion.setTotalQuota(totalBudgetMoney);
|
||||||
insertUnionList.add(outlayManageUnion);
|
insertUnionList.add(outlayManageUnion);
|
||||||
});
|
});
|
||||||
baseService.insert(insertUnionList);
|
baseService.insert(insertUnionList);
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ module.exports = {
|
|||||||
watch: {
|
watch: {
|
||||||
value: {
|
value: {
|
||||||
handler(val) {
|
handler(val) {
|
||||||
console.log(val)
|
|
||||||
if(val){
|
if(val){
|
||||||
this.signatureContent = val
|
this.signatureContent = val
|
||||||
this.$emit("input", this.signatureContent)
|
this.$emit("input", this.signatureContent)
|
||||||
|
|||||||
@@ -309,7 +309,6 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
menuSelect(index, indexPath) {
|
menuSelect(index, indexPath) {
|
||||||
debugger
|
|
||||||
try {
|
try {
|
||||||
const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app"))
|
const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app"))
|
||||||
window.sessionStorage.setItem("zhgh_sub_app_left_menu_active_index-" + app.id, index)
|
window.sessionStorage.setItem("zhgh_sub_app_left_menu_active_index-" + app.id, index)
|
||||||
@@ -319,7 +318,6 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
},
|
},
|
||||||
// 获取菜单
|
// 获取菜单
|
||||||
getMenus(appId) {
|
getMenus(appId) {
|
||||||
debugger
|
|
||||||
if (!appId) return
|
if (!appId) return
|
||||||
this.$axios.post("/platform/sys/user/subAppMenus", {appId}).then((res) => {
|
this.$axios.post("/platform/sys/user/subAppMenus", {appId}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
@@ -334,7 +332,6 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
|
|
||||||
// 设置应用信息
|
// 设置应用信息
|
||||||
setAppInfo(app) {
|
setAppInfo(app) {
|
||||||
debugger
|
|
||||||
if (app) {
|
if (app) {
|
||||||
// 储存到缓存
|
// 储存到缓存
|
||||||
window.sessionStorage.setItem("zhgh_sub_app", JSON.stringify(app))
|
window.sessionStorage.setItem("zhgh_sub_app", JSON.stringify(app))
|
||||||
@@ -350,13 +347,10 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
},
|
},
|
||||||
// 菜单回显
|
// 菜单回显
|
||||||
echoMenus() {
|
echoMenus() {
|
||||||
debugger
|
|
||||||
try {
|
try {
|
||||||
const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app"))
|
const app = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app"))
|
||||||
this.activeMenuIndex = window.sessionStorage.getItem("zhgh_sub_app_left_menu_active_index-" + app.id)
|
this.activeMenuIndex = window.sessionStorage.getItem("zhgh_sub_app_left_menu_active_index-" + app.id)
|
||||||
this.openedMenus = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app_left_menu_opens-" + app.id)) || []
|
this.openedMenus = JSON.parse(window.sessionStorage.getItem("zhgh_sub_app_left_menu_opens-" + app.id)) || []
|
||||||
console.log(this.openedMenus)
|
|
||||||
console.log(this.activeMenuIndex)
|
|
||||||
|
|
||||||
// !this.activeMenuIndex &&
|
// !this.activeMenuIndex &&
|
||||||
if ('/platform/v4/subApp' === getBaseSubAppPath()) {
|
if ('/platform/v4/subApp' === getBaseSubAppPath()) {
|
||||||
@@ -371,7 +365,6 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
|
|
||||||
// 地址选中
|
// 地址选中
|
||||||
hrefSelect() {
|
hrefSelect() {
|
||||||
debugger
|
|
||||||
function findMenuPath(menus, targetHref) {
|
function findMenuPath(menus, targetHref) {
|
||||||
function search(items, path) {
|
function search(items, path) {
|
||||||
for (const item of items) {
|
for (const item of items) {
|
||||||
@@ -451,7 +444,6 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
},
|
},
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
debugger
|
|
||||||
// 页面加载时获取到正确的菜单
|
// 页面加载时获取到正确的菜单
|
||||||
const pathname = window.location.pathname
|
const pathname = window.location.pathname
|
||||||
if (!pathname.startsWith("/platform/v4/subApp")) {
|
if (!pathname.startsWith("/platform/v4/subApp")) {
|
||||||
|
|||||||
@@ -217,7 +217,6 @@
|
|||||||
this.subscribers.get(type).add(callback)
|
this.subscribers.get(type).add(callback)
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
console.log(this.ws.readyState)
|
|
||||||
// 所有订阅完成后,发送 join 消息
|
// 所有订阅完成后,发送 join 消息
|
||||||
if (!this.isSubscribed && this.ws.readyState === WebSocket.OPEN) {
|
if (!this.isSubscribed && this.ws.readyState === WebSocket.OPEN) {
|
||||||
this.isSubscribed = true
|
this.isSubscribed = true
|
||||||
|
|||||||
@@ -149,8 +149,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
connect() {
|
connect() {
|
||||||
//const WS_URL = window.location.host + "${base}/websocket"
|
const WS_URL = window.location.host + "${base}/websocket"
|
||||||
const WS_URL = 'zhgh.jshvc.edu.cn' + "${base}/websocket"
|
// const WS_URL = 'zhgh.jshvc.edu.cn' + "${base}/websocket"
|
||||||
const protocol = window.location.protocol === "http:" ? "ws://" : "wss://"
|
const protocol = window.location.protocol === "http:" ? "ws://" : "wss://"
|
||||||
this.ws = new WebSocket(protocol + WS_URL)
|
this.ws = new WebSocket(protocol + WS_URL)
|
||||||
}
|
}
|
||||||
@@ -163,7 +163,6 @@
|
|||||||
this.subscribers.get(type).add(callback)
|
this.subscribers.get(type).add(callback)
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
console.log(this.ws.readyState)
|
|
||||||
// 所有订阅完成后,发送 join 消息
|
// 所有订阅完成后,发送 join 消息
|
||||||
if (!this.isSubscribed && this.ws.readyState === WebSocket.OPEN) {
|
if (!this.isSubscribed && this.ws.readyState === WebSocket.OPEN) {
|
||||||
this.isSubscribed = true
|
this.isSubscribed = true
|
||||||
|
|||||||
+206
-29
@@ -10,10 +10,54 @@ layout("/layouts/platform.html"){
|
|||||||
<div>
|
<div>
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<snaker-start slot="header" label="活动报销" define_key="HDBX"></snaker-start>
|
<snaker-start slot="header" label="活动报销" define_key="HDBX"></snaker-start>
|
||||||
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":" class="flow-task-form">
|
<el-form :model="formData" ref="formRef" :rules="formRules" label-width="0" label-suffix=":"
|
||||||
|
class="flow-task-form">
|
||||||
<el-descriptions :column="2" border>
|
<el-descriptions :column="2" border>
|
||||||
<el-descriptions-item label="活动名称">
|
|
||||||
<el-form-item prop="declareId">
|
<el-descriptions-item label="经费类型">
|
||||||
|
<el-form-item label="经费类型" prop="outlayManageSource"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<el-radio-group v-model="formData.outlayManageSource" @change="outlayManageSourceChange">
|
||||||
|
<el-radio border :label="i.code" :key="i.code" v-for="i in budgetTypeOption">
|
||||||
|
{{i.name}}
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="报销模式">
|
||||||
|
<el-form-item prop="activityReimbursementMode"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<el-radio-group v-model="formData.activityReimbursementMode" @change="getActivityReimbursementByUser">
|
||||||
|
<el-radio-button label="activity">活动报销</el-radio-button>
|
||||||
|
<el-radio-button label="daily">日常报销</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="所属协会"
|
||||||
|
v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)">
|
||||||
|
<el-form-item label="所属协会" prop="clubId"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<el-select
|
||||||
|
placeholder="请选择协会"
|
||||||
|
style="width: 100%;" v-model="formData.clubId"
|
||||||
|
@change="clubIdChange">
|
||||||
|
<el-option
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.clubName"
|
||||||
|
:value="item.id"
|
||||||
|
v-for="item in clubOption">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<el-descriptions-item label="项目名称" v-if="formData.activityReimbursementMode==='activity'">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="18">
|
||||||
|
<el-form-item prop="declareId"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-select v-model="formData.declareId"
|
<el-select v-model="formData.declareId"
|
||||||
style="width: 100%;"
|
style="width: 100%;"
|
||||||
@change="activityChange"
|
@change="activityChange"
|
||||||
@@ -26,19 +70,50 @@ layout("/layouts/platform.html"){
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-button size="small" type="primary" @click="viewDeclare"
|
||||||
|
v-if="formData.declareId">
|
||||||
|
查看申报信息
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<template v-if="formData.declareId">
|
<el-descriptions-item label="项目名称" v-else>
|
||||||
<el-descriptions-item label="相关数据">
|
<el-form-item prop="activityName"
|
||||||
<el-button size="small" type="primary" @click="viewDeclare">查看申报信息</el-button>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<el-input v-model="formData.activityName" maxlength="50"
|
||||||
|
placeholder="请输入项目名称"></el-input>
|
||||||
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
|
||||||
<el-descriptions-item></el-descriptions-item>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
|
<el-descriptions-item label="扣款预算">
|
||||||
|
<el-form-item prop="deductionBudgetId"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<el-select v-model="formData.deductionBudgetId"
|
||||||
|
style="width: 100%;"
|
||||||
|
filterable placeholder="选择扣款预算">
|
||||||
|
<el-option
|
||||||
|
v-for="item in budgetOption"
|
||||||
|
:key="item.id"
|
||||||
|
:label="'预算名称:'+item.activityMatter + ',申报预算:' + item.totalBudgetMoney + ',已使用:'+item.usedBudgetMoney"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item
|
||||||
|
v-if="formData.activityReimbursementMode!=='activity'
|
||||||
|
&&
|
||||||
|
['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)"></el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
|
<template v-if="formData.activityReimbursementMode==='activity'">
|
||||||
<el-descriptions-item label="实际活动时间">
|
<el-descriptions-item label="实际活动时间">
|
||||||
<el-form-item prop="activityTime">
|
<el-form-item prop="activityTime"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
range-separator="-"
|
range-separator="-"
|
||||||
@@ -53,7 +128,8 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="活动计划时间">
|
<el-descriptions-item label="活动计划时间">
|
||||||
<el-form-item prop="planDate">
|
<el-form-item prop="planDate"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
readonly
|
readonly
|
||||||
start-placeholder="开始日期"
|
start-placeholder="开始日期"
|
||||||
@@ -66,9 +142,13 @@ layout("/layouts/platform.html"){
|
|||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item
|
||||||
|
v-if="formData.activityReimbursementMode==='activity'
|
||||||
|
&&
|
||||||
|
['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)"></el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-descriptions-item label="费用" :span="2">
|
||||||
<el-descriptions-item label="活动预算费用" :span="2">
|
|
||||||
<el-form-item prop="budgets">
|
<el-form-item prop="budgets">
|
||||||
<el-table :data="formData.budgets" border max-height="500" size="mini" style="width: 100%">
|
<el-table :data="formData.budgets" border max-height="500" size="mini" style="width: 100%">
|
||||||
<el-table-column label="序号" sortable fixed type="index" width="60"></el-table-column>
|
<el-table-column label="序号" sortable fixed type="index" width="60"></el-table-column>
|
||||||
@@ -82,7 +162,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="预算费用" prop="budgetPrice" width="250">
|
<el-table-column label="预算费用" prop="budgetPrice" width="250"
|
||||||
|
v-if="formData.activityReimbursementMode==='activity'">
|
||||||
<template scope="{row,$index}">
|
<template scope="{row,$index}">
|
||||||
<el-form-item label-width="0"
|
<el-form-item label-width="0"
|
||||||
:prop="'budgets.'+$index+'.budgetPrice'"
|
:prop="'budgets.'+$index+'.budgetPrice'"
|
||||||
@@ -104,10 +185,11 @@ layout("/layouts/platform.html"){
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="收款人" prop="payeeId" width="200">
|
<el-table-column label="收款人" prop="username" width="200">
|
||||||
<template scope="{row,$index}">
|
<template scope="{row,$index}">
|
||||||
<el-form-item label-width="0"
|
<el-form-item label-width="0"
|
||||||
:prop="'budgets.'+$index+'.payeeId'">
|
:prop="'budgets.'+$index+'.username'"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-input v-model="row.username" maxlength="50"
|
<el-input v-model="row.username" maxlength="50"
|
||||||
@input="getCardNumberByPayeeId(row)"
|
@input="getCardNumberByPayeeId(row)"
|
||||||
placeholder="请输入收款人"></el-input>
|
placeholder="请输入收款人"></el-input>
|
||||||
@@ -117,7 +199,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="支行名称" prop="bankName" width="300">
|
<el-table-column label="支行名称" prop="bankName" width="300">
|
||||||
<template scope="{row,$index}">
|
<template scope="{row,$index}">
|
||||||
<el-form-item label-width="0"
|
<el-form-item label-width="0"
|
||||||
:prop="'budgets.'+$index+'.bankName'">
|
:prop="'budgets.'+$index+'.bankName'"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-input v-model="row.bankName" maxlength="80"
|
<el-input v-model="row.bankName" maxlength="80"
|
||||||
placeholder="请输入支行名称"></el-input>
|
placeholder="请输入支行名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -125,7 +208,9 @@ layout("/layouts/platform.html"){
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="报销卡号" prop="bankCardNum" width="250">
|
<el-table-column label="报销卡号" prop="bankCardNum" width="250">
|
||||||
<template scope="{row,$index}">
|
<template scope="{row,$index}">
|
||||||
<el-form-item label-width="0">
|
<el-form-item label-width="0"
|
||||||
|
:prop="'budgets.'+$index+'.bankCardNum'"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-input type="number" v-model="row.bankCardNum"
|
<el-input type="number" v-model="row.bankCardNum"
|
||||||
maxlength="50"
|
maxlength="50"
|
||||||
placeholder="请输入报销卡号"></el-input>
|
placeholder="请输入报销卡号"></el-input>
|
||||||
@@ -143,7 +228,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column fixed="right" header-align="center" label="操作" width="100">
|
<el-table-column fixed="right" header-align="center" label="操作" width="100">
|
||||||
<template slot="header" slot-scope="scope">
|
<template slot="header" slot-scope="scope">
|
||||||
<el-button @click="formData.budgets.push({})" type="primary" size="mini">添加</el-button>
|
<el-button @click="formData.budgets.push({})" type="primary" size="mini">添加
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button :disabled="formData.budgets.length==1"
|
<el-button :disabled="formData.budgets.length==1"
|
||||||
@@ -166,6 +252,7 @@ layout("/layouts/platform.html"){
|
|||||||
complete_result></file-upload>
|
complete_result></file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<template v-if="formData.activityReimbursementMode==='activity'">
|
||||||
<el-descriptions-item label="活动报道照片/总结/链接" :span="2">
|
<el-descriptions-item label="活动报道照片/总结/链接" :span="2">
|
||||||
<el-form-item prop="photoFiles">
|
<el-form-item prop="photoFiles">
|
||||||
<file-upload :value.sync="formData.photoFiles"
|
<file-upload :value.sync="formData.photoFiles"
|
||||||
@@ -185,6 +272,7 @@ layout("/layouts/platform.html"){
|
|||||||
complete_result></file-upload>
|
complete_result></file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
<el-descriptions-item label="签字" :span="2">
|
<el-descriptions-item label="签字" :span="2">
|
||||||
<el-form-item prop="sign">
|
<el-form-item prop="sign">
|
||||||
@@ -217,10 +305,11 @@ layout("/layouts/platform.html"){
|
|||||||
<script>
|
<script>
|
||||||
<!--#include("../../declare/common/info.js"){}#-->
|
<!--#include("../../declare/common/info.js"){}#-->
|
||||||
|
|
||||||
new Vue({
|
const vue = new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
store,
|
store,
|
||||||
|
dicts: ["ACTIVITY_BUDGET_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
bizId: GetQueryString("bizId"),
|
bizId: GetQueryString("bizId"),
|
||||||
@@ -238,13 +327,47 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
activityOptions: [],
|
activityOptions: [],
|
||||||
|
|
||||||
declareDialogVisible: false
|
declareDialogVisible: false,
|
||||||
|
|
||||||
|
budgetOption: [],
|
||||||
|
budgetTypeOption: [],
|
||||||
|
clubOption: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
"info": INFO,
|
"info": INFO,
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
clubIdChange() {
|
||||||
|
this.$set(this.formData, 'deductionBudgetId', null)
|
||||||
|
const club = this.clubOption.find(v => v.id === this.formData.clubId)
|
||||||
|
this.$set(this.formData, 'declareUnitName', club.clubName)
|
||||||
|
this.getBudgetByYear()
|
||||||
|
this.getActivityReimbursementByUser()
|
||||||
|
},
|
||||||
|
outlayManageSourceChange(val) {
|
||||||
|
this.$set(this.formData, 'clubId', null)
|
||||||
|
this.$set(this.formData, 'deductionBudgetId', null)
|
||||||
|
if (val === "ACTIVITY_BUDGET_TYPE_ONE") {
|
||||||
|
this.$set(this.formData, "declareUnitName", "校工会")
|
||||||
|
} else if (val === "ACTIVITY_BUDGET_TYPE_TWO") {
|
||||||
|
this.$set(this.formData, "unionId", this.$store.state.user.union.id)
|
||||||
|
this.$set(this.formData, "declareUnitName", this.$store.state.user.union.name)
|
||||||
|
}
|
||||||
|
this.getBudgetByYear()
|
||||||
|
this.getActivityReimbursementByUser()
|
||||||
|
},
|
||||||
|
getBudgetByYear() {
|
||||||
|
this.budgetOption = []
|
||||||
|
this.$axios.post('/platform/activityReimbursement/apply/getBudgetByYear', {
|
||||||
|
outlayManageSource: this.formData.outlayManageSource,
|
||||||
|
clubId: this.formData.clubId
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.budgetOption = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
// 保存
|
// 保存
|
||||||
onSave() {
|
onSave() {
|
||||||
this.$confirm("您确定保存吗?", "提示", {
|
this.$confirm("您确定保存吗?", "提示", {
|
||||||
@@ -267,6 +390,12 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
// 提交
|
// 提交
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
|
this.$refs.formRef.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
if (this.budgets && this.budgets.length === 0) {
|
||||||
|
this.$message.error("请填写费用!")
|
||||||
|
return
|
||||||
|
}
|
||||||
this.$confirm("您确定要提交吗?", "提示", {
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
confirmButtonText: "确定",
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
@@ -285,9 +414,17 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
onFinishTask() {
|
onFinishTask() {
|
||||||
|
this.$refs.formRef.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
if (this.budgets && this.budgets.length === 0) {
|
||||||
|
this.$message.error("请填写费用!")
|
||||||
|
return
|
||||||
|
}
|
||||||
this.$confirm("您确定要提交吗?", "提示", {
|
this.$confirm("您确定要提交吗?", "提示", {
|
||||||
confirmButtonText: "确定",
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
@@ -307,6 +444,8 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// 查看申报数据
|
// 查看申报数据
|
||||||
@@ -318,7 +457,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
|
|
||||||
async getCardNumberByPayeeId(row) {
|
async getCardNumberByPayeeId(row) {
|
||||||
const resp = await this.$axios.post('/platform/activityReimbursement/apply/getCardNumberByPayeeId', {username:row.username})
|
const resp = await this.$axios.post('/platform/activityReimbursement/apply/getCardNumberByPayeeId', {username: row.username})
|
||||||
if (resp.code === 0) {
|
if (resp.code === 0) {
|
||||||
if (resp.data) {
|
if (resp.data) {
|
||||||
this.$set(row, "bankCardNum", resp.data.bankCardNum)
|
this.$set(row, "bankCardNum", resp.data.bankCardNum)
|
||||||
@@ -341,16 +480,23 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async getActivityReimbursementByUser(id) {
|
getActivityReimbursementByUser() {
|
||||||
const {code, data} = await this.$axios.post('/platform/activityReimbursement/apply/getActivityReimbursementByUser',{id});
|
this.$axios.post('/platform/activityReimbursement/apply/getActivityReimbursementByUser', {
|
||||||
if (code === 0) {
|
id: this.bizId,
|
||||||
this.activityOptions = data
|
outlayManageSource: this.formData.outlayManageSource,
|
||||||
|
clubId: this.formData.clubId
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.activityOptions = res.data
|
||||||
}
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
findOne(){
|
findOne() {
|
||||||
this.$axios.post('/platform/activityReimbursement/mine/findOne', {id: this.bizId})
|
this.$axios.post('/platform/activityReimbursement/mine/findOne', {id: this.bizId})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
|
if (res.data.billFiles) res.data.billFiles = JSON.parse(res.data.billFiles)
|
||||||
|
if (res.data.budgets) res.data.budgets = JSON.parse(res.data.budgets)
|
||||||
this.formData = res.data
|
this.formData = res.data
|
||||||
if (res.data.planStartTime && res.data.planEndTime) {
|
if (res.data.planStartTime && res.data.planEndTime) {
|
||||||
this.formData.planDate = [res.data.planStartTime, res.data.planEndTime]
|
this.formData.planDate = [res.data.planStartTime, res.data.planEndTime]
|
||||||
@@ -358,13 +504,44 @@ layout("/layouts/platform.html"){
|
|||||||
if (res.data.startTime && res.data.endTime) {
|
if (res.data.startTime && res.data.endTime) {
|
||||||
this.formData.activityTime = [res.data.startTime, res.data.endTime]
|
this.formData.activityTime = [res.data.startTime, res.data.endTime]
|
||||||
}
|
}
|
||||||
// this.activityChange(res.data.activityId)
|
this.getBudgetByYear()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
initBudgetType() {
|
||||||
|
this.budgetTypeOption = this.dict.type.ACTIVITY_BUDGET_TYPE
|
||||||
|
const budgetTypeCloseOption = []
|
||||||
|
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (this.$auth.hasRoleOr(["SCHOOL_REIMBURSEMENT_MANAGER"])) {
|
||||||
|
this.budgetTypeOption.map(v => {
|
||||||
|
if (["ACTIVITY_BUDGET_TYPE_ONE"].includes(v.code)) {
|
||||||
|
budgetTypeCloseOption.push(v)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.$auth.hasRoleOr(["UNION_REIMBURSEMENT_MANAGER"])) {
|
||||||
|
this.budgetTypeOption.map(v => {
|
||||||
|
if (["ACTIVITY_BUDGET_TYPE_TWO"].includes(v.code)) {
|
||||||
|
budgetTypeCloseOption.push(v)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.$auth.hasRoleOr(["CLUB_REIMBURSEMENT_MANAGER"])) {
|
||||||
|
this.budgetTypeOption.map(v => {
|
||||||
|
if (["ACTIVITY_BUDGET_TYPE_THREE"].includes(v.code)) {
|
||||||
|
budgetTypeCloseOption.push(v)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.budgetTypeOption = budgetTypeCloseOption
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
await this.getActivityReimbursementByUser(this.bizId)
|
this.clubOption = await this.$businessTool.listCLubByRole()
|
||||||
|
this.initBudgetType()
|
||||||
if (this.bizId) {
|
if (this.bizId) {
|
||||||
this.findOne()
|
this.findOne()
|
||||||
}
|
}
|
||||||
|
|||||||
+32
-11
@@ -18,6 +18,19 @@ layout("/layouts/platform.html"){
|
|||||||
<search-item label="申请人">
|
<search-item label="申请人">
|
||||||
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="报销模式">
|
||||||
|
<el-select clearable filterable placeholder="请选择报销模式"
|
||||||
|
style="width: 100%;" v-model="pageForm.activityReimbursementMode">
|
||||||
|
<el-option label="活动报销" value="activity"></el-option>
|
||||||
|
<el-option label="日常报销" value="daily"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="经费类型">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_TYPE" v-model="pageForm.outlayManageSource" placeholder="请选择经费类型"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_REIMBURSE_TYPE" v-model="pageForm.budgetReimburseType" placeholder="请选择预算条目"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
||||||
<search-item label="所属工会">
|
<search-item label="所属工会">
|
||||||
@@ -68,8 +81,14 @@ layout("/layouts/platform.html"){
|
|||||||
<template scope="{row}" v-if="column.prop=='loginName'">
|
<template scope="{row}" v-if="column.prop=='loginName'">
|
||||||
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='activityType'">
|
<template scope="{row}" v-else-if="column.prop=='outlayManageSource'">
|
||||||
<span>{{ getActivityTypeName(row.activityType) }}</span>
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_TYPE" :value="row.outlayManageSource"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='budgetReimburseType'">
|
||||||
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_REIMBURSE_TYPE" :value="row.budgetReimburseType"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='activityReimbursementMode'">
|
||||||
|
<span>{{ row.activityReimbursementMode==='activity'?'活动报销' : '日常报销' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
||||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
@@ -122,21 +141,23 @@ layout("/layouts/platform.html"){
|
|||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
store,
|
store,
|
||||||
|
dicts: ["ACTIVITY_BUDGET_TYPE","ACTIVITY_BUDGET_REIMBURSE_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pageForm: {
|
pageForm: {
|
||||||
year: this.$moment().format("YYYY")
|
year: this.$moment().format("YYYY")
|
||||||
},
|
},
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: "loginName", label: "申报人", sortable: true },
|
{prop: "loginName", label: "申报人", sortable: true},
|
||||||
{ prop: "mobile", label: "联系方式"},
|
{prop: "activityName", label: "项目名称"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{prop: "activityReimbursementMode", label: "报销模式"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{ prop: "taskName", label: "当前节点"},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{ prop: "instanceState", label: "流程状态"}
|
{prop: "taskName", label: "当前节点"},
|
||||||
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
unions: [],
|
unions: [],
|
||||||
|
|||||||
+32
-11
@@ -18,6 +18,19 @@ layout("/layouts/platform.html"){
|
|||||||
<search-item label="申请人">
|
<search-item label="申请人">
|
||||||
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="报销模式">
|
||||||
|
<el-select clearable filterable placeholder="请选择报销模式"
|
||||||
|
style="width: 100%;" v-model="pageForm.activityReimbursementMode">
|
||||||
|
<el-option label="活动报销" value="activity"></el-option>
|
||||||
|
<el-option label="日常报销" value="daily"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="经费类型">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_TYPE" v-model="pageForm.outlayManageSource" placeholder="请选择经费类型"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_REIMBURSE_TYPE" v-model="pageForm.budgetReimburseType" placeholder="请选择预算条目"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属协会">
|
<search-item label="所属协会">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属协会"
|
||||||
@@ -55,8 +68,14 @@ layout("/layouts/platform.html"){
|
|||||||
<template scope="{row}" v-if="column.prop=='loginName'">
|
<template scope="{row}" v-if="column.prop=='loginName'">
|
||||||
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='activityType'">
|
<template scope="{row}" v-else-if="column.prop=='outlayManageSource'">
|
||||||
<span>{{ getActivityTypeName(row.activityType) }}</span>
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_TYPE" :value="row.outlayManageSource"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='budgetReimburseType'">
|
||||||
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_REIMBURSE_TYPE" :value="row.budgetReimburseType"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='activityReimbursementMode'">
|
||||||
|
<span>{{ row.activityReimbursementMode==='activity'?'活动报销' : '日常报销' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
||||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
@@ -109,21 +128,23 @@ layout("/layouts/platform.html"){
|
|||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
store,
|
store,
|
||||||
|
dicts: ["ACTIVITY_BUDGET_TYPE","ACTIVITY_BUDGET_REIMBURSE_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pageForm: {
|
pageForm: {
|
||||||
year: this.$moment().format("YYYY")
|
year: this.$moment().format("YYYY")
|
||||||
},
|
},
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: "loginName", label: "申报人", sortable: true },
|
{prop: "loginName", label: "申报人", sortable: true},
|
||||||
{ prop: "mobile", label: "联系方式"},
|
{prop: "activityName", label: "项目名称"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{prop: "activityReimbursementMode", label: "报销模式"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{ prop: "taskName", label: "当前节点"},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{ prop: "instanceState", label: "流程状态"}
|
{prop: "taskName", label: "当前节点"},
|
||||||
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
unions: [],
|
unions: [],
|
||||||
|
|||||||
+42
-27
@@ -5,20 +5,30 @@ const INFO = {
|
|||||||
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
|
<el-link type="primary" @click="openChart">点击查看流程图</el-link>
|
||||||
</div>
|
</div>
|
||||||
<el-descriptions :column="2" border>
|
<el-descriptions :column="2" border>
|
||||||
<el-descriptions-item label="活动名称">{{ viewData.activityName }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
|
<el-descriptions-item label="报销模式">
|
||||||
|
{{ viewData.activityReimbursementMode==='activity'?'活动报销' : '日常报销' }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="经费类型">
|
||||||
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_TYPE" :value="viewData.outlayManageSource"></dict-tag>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="扣款预算">
|
||||||
|
{{viewData.deductionBudgetName}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="项目名称">{{ viewData.activityName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
|
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{
|
<el-descriptions-item
|
||||||
viewData.declareUnitName }}
|
:label="viewData.outlayManageSource == 'ACTIVITY_BUDGET_TYPE_THREE' ? '申请协会' : '申请单位'">
|
||||||
|
{{viewData.declareUnitName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item></el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动计划时间">{{ (viewData.planStartTime ? viewData.planStartTime : '未填写')
|
<template v-if="viewData.activityReimbursementMode==='activity'">
|
||||||
|
<el-descriptions-item label="活动计划时间">{{ (viewData.planStartTime ? viewData.planStartTime :
|
||||||
|
'未填写')
|
||||||
+ ' ~ ' + (viewData.planEndTime ? viewData.planEndTime : '未填写') }}
|
+ ' ~ ' + (viewData.planEndTime ? viewData.planEndTime : '未填写') }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="活动人数">{{ viewData.activityNumber }}</el-descriptions-item>
|
<el-descriptions-item label="活动人数">{{ viewData.activityNumber }}</el-descriptions-item>
|
||||||
@@ -27,37 +37,39 @@ const INFO = {
|
|||||||
'未填写') + ' ~ ' + (viewData.endTime ? viewData.endTime : '未填写') }}
|
'未填写') + ' ~ ' + (viewData.endTime ? viewData.endTime : '未填写') }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="活动地址" :span="2">{{ viewData.activityAddress }}</el-descriptions-item>
|
<el-descriptions-item label="活动地址" :span="2">{{ viewData.activityAddress }}
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="活动预算费用" :span="2">
|
</template>
|
||||||
|
<el-descriptions-item label="费用" :span="2">
|
||||||
<el-table :data="viewData.budgets" border max-height="500" size="mini"
|
<el-table :data="viewData.budgets" border max-height="500" size="mini"
|
||||||
style="width: calc(1200px - 150px - 15%)">
|
style="width: calc(1200px - 150px - 15%)">
|
||||||
<el-table-column label="序号" sortable type="index" fixed></el-table-column>
|
<el-table-column label="序号" sortable type="index" fixed></el-table-column>
|
||||||
<el-table-column label="费用项目名称" fixed prop="name" fixed></el-table-column>
|
<el-table-column label="费用项目名称" fixed prop="name" fixed></el-table-column>
|
||||||
<el-table-column label="预算费用" prop="budgetPrice"></el-table-column>
|
<el-table-column label="预算费用" prop="budgetPrice"
|
||||||
|
v-if="viewData.activityReimbursementMode==='activity'"></el-table-column>
|
||||||
<el-table-column label="实际费用" prop="actualPrice"></el-table-column>
|
<el-table-column label="实际费用" prop="actualPrice"></el-table-column>
|
||||||
<el-table-column label="收款人" prop="username"></el-table-column>
|
<el-table-column label="收款人" prop="username"></el-table-column>
|
||||||
<el-table-column label="支行名称" prop="bankName"></el-table-column>
|
<el-table-column label="支行名称" prop="bankName"></el-table-column>
|
||||||
<el-table-column label="报销卡号" prop="bankCardNum"></el-table-column>
|
<el-table-column label="报销卡号" prop="bankCardNum" width="180"></el-table-column>
|
||||||
<el-table-column label="备注" prop="remark"></el-table-column>
|
<el-table-column label="备注" prop="remark"></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="发票" :span="2">
|
||||||
<el-descriptions-item label="活动方案及简介" :span="2">
|
<file-preview v-if="viewData.billFiles && viewData.billFiles.length > 0"
|
||||||
<div v-html="viewData.activityContent"></div>
|
:files="viewData.billFiles"
|
||||||
|
complete_result></file-preview>
|
||||||
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<template v-if="viewData.activityReimbursementMode==='activity'">
|
||||||
|
<!-- <el-descriptions-item label="活动方案及简介" :span="2">
|
||||||
|
<div v-html="viewData.activityContent"></div>
|
||||||
|
</el-descriptions-item>-->
|
||||||
|
|
||||||
<el-descriptions-item label="附件" :span="2">
|
<!-- <el-descriptions-item label="附件" :span="2">
|
||||||
<file-preview v-if="viewData.files && viewData.files.length > 0" :files="viewData.files"
|
<file-preview v-if="viewData.files && viewData.files.length > 0" :files="viewData.files"
|
||||||
complete_result></file-preview>
|
complete_result></file-preview>
|
||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>-->
|
||||||
|
|
||||||
<el-descriptions-item label="发票" :span="2">
|
|
||||||
<file-preview v-if="viewData.billFiles && viewData.billFiles.length > 0" :files="viewData.billFiles"
|
|
||||||
complete_result></file-preview>
|
|
||||||
<span v-else>暂无</span>
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
<el-descriptions-item label="活动报道照片/总结/链接" :span="2">
|
<el-descriptions-item label="活动报道照片/总结/链接" :span="2">
|
||||||
<file-preview v-if="viewData.photoFiles && viewData.photoFiles.length > 0"
|
<file-preview v-if="viewData.photoFiles && viewData.photoFiles.length > 0"
|
||||||
@@ -71,6 +83,7 @@ const INFO = {
|
|||||||
<span v-else>暂无</span>
|
<span v-else>暂无</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
</template>
|
||||||
<el-descriptions-item label="签字" :span="2">
|
<el-descriptions-item label="签字" :span="2">
|
||||||
<el-image v-if="viewData.sign"
|
<el-image v-if="viewData.sign"
|
||||||
:src="viewData.sign"
|
:src="viewData.sign"
|
||||||
@@ -116,7 +129,7 @@ const INFO = {
|
|||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
store,
|
store,
|
||||||
dicts: ["PROCESS_TASK_SUBMIT_TYPE"],
|
dicts: ["PROCESS_TASK_SUBMIT_TYPE", "ACTIVITY_BUDGET_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
viewData: {},
|
viewData: {},
|
||||||
@@ -136,8 +149,10 @@ const INFO = {
|
|||||||
|
|
||||||
// 获取申请信息
|
// 获取申请信息
|
||||||
info() {
|
info() {
|
||||||
this.$axios.post("/platform/activityReimbursement/mine/findOne", { id: this.row.id }).then((res) => {
|
this.$axios.post("/platform/activityReimbursement/mine/findOne", {id: this.row.id}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
|
if (res.data.billFiles) res.data.billFiles = JSON.parse(res.data.billFiles)
|
||||||
|
if (res.data.budgets) res.data.budgets = JSON.parse(res.data.budgets)
|
||||||
this.viewData = res.data
|
this.viewData = res.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -145,7 +160,7 @@ const INFO = {
|
|||||||
|
|
||||||
// 获取已办任务审批记录
|
// 获取已办任务审批记录
|
||||||
getDoneTasks() {
|
getDoneTasks() {
|
||||||
this.$axios.post("/flow/common/doneTasks", { bizId: this.row.id }).then((res) => {
|
this.$axios.post("/flow/common/doneTasks", {bizId: this.row.id}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.doneTasks = res.data
|
this.doneTasks = res.data
|
||||||
}
|
}
|
||||||
@@ -153,7 +168,7 @@ const INFO = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// 查看流程图
|
// 查看流程图
|
||||||
openChart(){
|
openChart() {
|
||||||
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
|
this.$refs.snakerChartRef.onOpenFull(this.row.instanceProcessDefineId, this.row.instanceId)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
+30
-20
@@ -16,7 +16,8 @@ layout("/layouts/platform.html"){
|
|||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="申请人">
|
<search-item label="申请人">
|
||||||
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
<el-input placeholder="请输入申请人工号或姓名" clearable
|
||||||
|
v-model="pageForm.searchKeyword"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
||||||
@@ -75,8 +76,11 @@ layout("/layouts/platform.html"){
|
|||||||
<template scope="{row}" v-if="column.prop=='loginName'">
|
<template scope="{row}" v-if="column.prop=='loginName'">
|
||||||
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='activityType'">
|
<template scope="{row}" v-else-if="column.prop=='outlayManageSource'">
|
||||||
<span>{{ getActivityTypeName(row.activityType) }}</span>
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_TYPE" :value="row.outlayManageSource"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='activityReimbursementMode'">
|
||||||
|
<span>{{ row.activityReimbursementMode==='activity'?'活动报销' : '日常报销' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
||||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
@@ -86,15 +90,20 @@ layout("/layouts/platform.html"){
|
|||||||
<el-table-column label="操作" fixed="right" width="350px" fixed="right">
|
<el-table-column label="操作" fixed="right" width="350px" fixed="right">
|
||||||
<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.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)" size="mini" type="primary">
|
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onEdit(row)"
|
||||||
|
size="mini" type="primary">
|
||||||
编辑
|
编辑
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
<el-button v-if="row.canRevoke" @click="onRevoke(row)" size="mini" type="danger">撤回
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)" size="mini" type="danger">删除</el-button>
|
<el-button v-if="row.taskKey === 'startTask' || !row.instanceId" @click="onDelete(row.id)"
|
||||||
|
size="mini" type="danger">删除
|
||||||
|
</el-button>
|
||||||
|
|
||||||
<el-button @click="doExportDeclare(row)" size="mini" type="primary">申请表导出</el-button>
|
<el-button @click="doExportDeclare(row)" size="mini" type="primary">申请表导出</el-button>
|
||||||
<el-button v-if="row.instanceState === 20" @click="doExportReimbursement(row)" size="mini" type="primary">报销凭证导出</el-button>
|
<el-button v-if="row.instanceState === 20" @click="doExportReimbursement(row)" size="mini"
|
||||||
|
type="primary">报销凭证导出
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -115,21 +124,22 @@ layout("/layouts/platform.html"){
|
|||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
store,
|
store,
|
||||||
|
dicts: ["ACTIVITY_BUDGET_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pageForm: {
|
pageForm: {
|
||||||
year: this.$moment().format("YYYY")
|
year: this.$moment().format("YYYY")
|
||||||
},
|
},
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: "loginName", label: "申报人", sortable: true },
|
{prop: "loginName", label: "申报人", sortable: true,width: "180"},
|
||||||
{ prop: "mobile", label: "联系方式"},
|
{prop: "activityName", label: "项目名称",width: "280"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{prop: "activityReimbursementMode", label: "报销模式"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{ prop: "taskName", label: "当前节点"},
|
{prop: "taskName", label: "当前节点"},
|
||||||
{ prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
|
|
||||||
unions: [],
|
unions: [],
|
||||||
@@ -144,11 +154,11 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 导出示例
|
// 导出示例
|
||||||
doExportDeclare(row){
|
doExportDeclare(row) {
|
||||||
this.$downLoad('/platform/activityDeclare/mine/doExportDeclare?id=' + row.declareId)
|
this.$downLoad('/platform/activityDeclare/mine/doExportDeclare?id=' + row.declareId)
|
||||||
},
|
},
|
||||||
// 导出报销凭证
|
// 导出报销凭证
|
||||||
doExportReimbursement(row){
|
doExportReimbursement(row) {
|
||||||
this.$downLoad('/platform/activityReimbursement/mine/doExportReimbursement?id=' + row.id)
|
this.$downLoad('/platform/activityReimbursement/mine/doExportReimbursement?id=' + row.id)
|
||||||
},
|
},
|
||||||
onApply() {
|
onApply() {
|
||||||
@@ -168,7 +178,7 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning"
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post("/flow/common/revokeTask", { taskId: row.startTaskId }).then((resp) => {
|
this.$axios.post("/flow/common/revokeTask", {taskId: row.startTaskId}).then((resp) => {
|
||||||
this.$message.success(resp.msg)
|
this.$message.success(resp.msg)
|
||||||
this.pageData()
|
this.pageData()
|
||||||
})
|
})
|
||||||
@@ -180,7 +190,7 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning"
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post("/platform/activityReimbursement/mine/onDelete", { id }).then((res) => {
|
this.$axios.post("/platform/activityReimbursement/mine/onDelete", {id}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
@@ -188,7 +198,7 @@ layout("/layouts/platform.html"){
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async flushUnits(){
|
async flushUnits() {
|
||||||
this.$set(this.pageForm, "unitId", null)
|
this.$set(this.pageForm, "unitId", null)
|
||||||
if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')) {
|
if (this.$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN')) {
|
||||||
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||||
|
|||||||
+33
-11
@@ -19,6 +19,20 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
|
<search-item label="报销模式">
|
||||||
|
<el-select clearable filterable placeholder="请选择报销模式"
|
||||||
|
style="width: 100%;" v-model="pageForm.activityReimbursementMode">
|
||||||
|
<el-option label="活动报销" value="activity"></el-option>
|
||||||
|
<el-option label="日常报销" value="daily"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="经费类型">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_TYPE" v-model="pageForm.outlayManageSource" placeholder="请选择经费类型"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_REIMBURSE_TYPE" v-model="pageForm.budgetReimburseType" placeholder="请选择预算条目"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
||||||
<search-item label="所属工会">
|
<search-item label="所属工会">
|
||||||
<el-select @change="flushUnits" @clear="flushUnits" clearable
|
<el-select @change="flushUnits" @clear="flushUnits" clearable
|
||||||
@@ -68,8 +82,14 @@ layout("/layouts/platform.html"){
|
|||||||
<template scope="{row}" v-if="column.prop=='loginName'">
|
<template scope="{row}" v-if="column.prop=='loginName'">
|
||||||
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='activityType'">
|
<template scope="{row}" v-else-if="column.prop=='outlayManageSource'">
|
||||||
<span>{{ getActivityTypeName(row.activityType) }}</span>
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_TYPE" :value="row.outlayManageSource"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='budgetReimburseType'">
|
||||||
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_REIMBURSE_TYPE" :value="row.budgetReimburseType"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='activityReimbursementMode'">
|
||||||
|
<span>{{ row.activityReimbursementMode==='activity'?'活动报销' : '日常报销' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
||||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
@@ -122,21 +142,23 @@ layout("/layouts/platform.html"){
|
|||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
store,
|
store,
|
||||||
|
dicts: ["ACTIVITY_BUDGET_TYPE","ACTIVITY_BUDGET_REIMBURSE_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pageForm: {
|
pageForm: {
|
||||||
year: this.$moment().format("YYYY")
|
year: this.$moment().format("YYYY")
|
||||||
},
|
},
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: "loginName", label: "申报人", sortable: true },
|
{prop: "loginName", label: "申报人", sortable: true},
|
||||||
{ prop: "mobile", label: "联系方式"},
|
{prop: "activityName", label: "项目名称"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{prop: "activityReimbursementMode", label: "报销模式"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{ prop: "taskName", label: "当前节点"},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{ prop: "instanceState", label: "流程状态"}
|
{prop: "taskName", label: "当前节点"},
|
||||||
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
unions: [],
|
unions: [],
|
||||||
|
|||||||
+35
-13
@@ -18,6 +18,19 @@ layout("/layouts/platform.html"){
|
|||||||
<search-item label="申请人">
|
<search-item label="申请人">
|
||||||
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="报销模式">
|
||||||
|
<el-select clearable filterable placeholder="请选择报销模式"
|
||||||
|
style="width: 100%;" v-model="pageForm.activityReimbursementMode">
|
||||||
|
<el-option label="活动报销" value="activity"></el-option>
|
||||||
|
<el-option label="日常报销" value="daily"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="经费类型">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_TYPE" v-model="pageForm.outlayManageSource" placeholder="请选择经费类型"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select code="ACTIVITY_BUDGET_REIMBURSE_TYPE" v-model="pageForm.budgetReimburseType" placeholder="请选择预算条目"></dict-select>
|
||||||
|
</search-item>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, BRANCH_UNION_ADMIN')">
|
||||||
<search-item label="所属工会">
|
<search-item label="所属工会">
|
||||||
@@ -68,8 +81,14 @@ layout("/layouts/platform.html"){
|
|||||||
<template scope="{row}" v-if="column.prop=='loginName'">
|
<template scope="{row}" v-if="column.prop=='loginName'">
|
||||||
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='activityType'">
|
<template scope="{row}" v-else-if="column.prop=='outlayManageSource'">
|
||||||
<span>{{ getActivityTypeName(row.activityType) }}</span>
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_TYPE" :value="row.outlayManageSource"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='budgetReimburseType'">
|
||||||
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_REIMBURSE_TYPE" :value="row.budgetReimburseType"></dict-tag>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='activityReimbursementMode'">
|
||||||
|
<span>{{ row.activityReimbursementMode==='activity'?'活动报销' : '日常报销' }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
<template scope="{row}" v-else-if="column.prop=='instanceState'">
|
||||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
@@ -122,21 +141,23 @@ layout("/layouts/platform.html"){
|
|||||||
el: "#app",
|
el: "#app",
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
store,
|
store,
|
||||||
|
dicts: ["ACTIVITY_BUDGET_TYPE","ACTIVITY_BUDGET_REIMBURSE_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pageForm: {
|
pageForm: {
|
||||||
year: this.$moment().format("YYYY")
|
year: this.$moment().format("YYYY")
|
||||||
},
|
},
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: "loginName", label: "申报人", sortable: true },
|
{prop: "loginName", label: "申报人", sortable: true},
|
||||||
{ prop: "mobile", label: "联系方式"},
|
{prop: "activityName", label: "项目名称"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{prop: "activityReimbursementMode", label: "报销模式"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{ prop: "taskName", label: "当前节点"},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{ prop: "instanceState", label: "流程状态"}
|
{prop: "taskName", label: "当前节点"},
|
||||||
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
unions: [],
|
unions: [],
|
||||||
@@ -162,6 +183,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.$refs.guava.edit(()=>{
|
this.$refs.guava.edit(()=>{
|
||||||
this.showApprovalForm = true
|
this.showApprovalForm = true
|
||||||
this.formData = {
|
this.formData = {
|
||||||
|
id: row.id,
|
||||||
processTaskId: row.taskId,
|
processTaskId: row.taskId,
|
||||||
taskName: row.curTaskName
|
taskName: row.curTaskName
|
||||||
}
|
}
|
||||||
@@ -175,11 +197,11 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning"
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post("/flow/common/executeTask", {
|
this.$axios.post("/platform/activityReimbursement/schoolUnion/doReview", {
|
||||||
data: JSON.stringify({
|
data: JSON.stringify({
|
||||||
...this.formData,
|
...this.formData,
|
||||||
submitType: val
|
submitType: val
|
||||||
})
|
}), id: this.formData.id
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
this.$refs.guava.index()
|
this.$refs.guava.index()
|
||||||
|
|||||||
+13
-2
@@ -23,6 +23,10 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input v-model="pageForm.activityMatter" placeholder="请输入活动项目"
|
<el-input v-model="pageForm.activityMatter" placeholder="请输入活动项目"
|
||||||
clearable></el-input>
|
clearable></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select v-model="pageForm.budgetReimburseType"
|
||||||
|
code="ACTIVITY_BUDGET_REIMBURSE_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card shadow="never" class="mt10">
|
<el-card shadow="never" class="mt10">
|
||||||
@@ -76,6 +80,10 @@ layout("/layouts/platform.html"){
|
|||||||
<dict-tag :options="budgetTypeOption"
|
<dict-tag :options="budgetTypeOption"
|
||||||
:value="row.outlayManageSource"></dict-tag>
|
:value="row.outlayManageSource"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-slot="{row}" v-else-if="column.prop==='budgetReimburseType'">
|
||||||
|
<dict-tag :options="budgetReimburseTypeOption"
|
||||||
|
:value="row.budgetReimburseType"></dict-tag>
|
||||||
|
</template>
|
||||||
<template v-slot="{row}" v-else-if="column.prop==='instanceState'">
|
<template v-slot="{row}" v-else-if="column.prop==='instanceState'">
|
||||||
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
|
||||||
size="small"></enum-tag>
|
size="small"></enum-tag>
|
||||||
@@ -121,16 +129,18 @@ layout("/layouts/platform.html"){
|
|||||||
totalBudgetMoney: 0,
|
totalBudgetMoney: 0,
|
||||||
pageForm: {year: new Date().getFullYear() + ""},
|
pageForm: {year: new Date().getFullYear() + ""},
|
||||||
budgetTypeOption: [],
|
budgetTypeOption: [],
|
||||||
|
budgetReimburseTypeOption: [],
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{prop: 'year', label: '年度', width: '80'},
|
{prop: 'year', label: '年度', width: '80'},
|
||||||
{prop: 'userName', label: '申报人姓名'},
|
{prop: 'userName', label: '申报人姓名'},
|
||||||
{prop: 'loginName', label: '申报人工号'},
|
{prop: 'loginName', label: '申报人工号'},
|
||||||
{prop: 'mobile', label: '联系方式', width: '120'},
|
{prop: 'mobile', label: '联系方式', width: '120'},
|
||||||
{prop: 'outlayManageSource', label: '申报类型'},
|
{prop: 'outlayManageSource', label: '申报类型', width: '140'},
|
||||||
|
{prop: 'budgetReimburseType', label: '预算条目'},
|
||||||
{prop: 'activityMatter', label: '活动项目', width: '300'},
|
{prop: 'activityMatter', label: '活动项目', width: '300'},
|
||||||
{prop: 'declareTotalBudgetMoney', label: '申报预算金额'},
|
{prop: 'declareTotalBudgetMoney', label: '申报预算金额'},
|
||||||
{prop: 'totalBudgetMoney', label: '审核预算金额'},
|
{prop: 'totalBudgetMoney', label: '审核预算金额'},
|
||||||
{prop: 'applyDate', label: '申报时间'},
|
{prop: 'applyDate', label: '申报时间', width: '120'},
|
||||||
{prop: 'taskName', label: '当前节点'},
|
{prop: 'taskName', label: '当前节点'},
|
||||||
{prop: 'instanceState', label: '流程状态'},
|
{prop: 'instanceState', label: '流程状态'},
|
||||||
],
|
],
|
||||||
@@ -267,6 +277,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.getApplyMoney()
|
this.getApplyMoney()
|
||||||
this.pageData()
|
this.pageData()
|
||||||
this.budgetTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE")
|
this.budgetTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE")
|
||||||
|
this.budgetReimburseTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_REIMBURSE_TYPE")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
+12
-1
@@ -21,6 +21,10 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input v-model="pageForm.activityMatter" placeholder="请输入活动项目"
|
<el-input v-model="pageForm.activityMatter" placeholder="请输入活动项目"
|
||||||
clearable></el-input>
|
clearable></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select v-model="pageForm.budgetReimburseType"
|
||||||
|
code="ACTIVITY_BUDGET_REIMBURSE_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
<search-item label="所属工会"
|
<search-item label="所属工会"
|
||||||
v-if="!pageForm.outlayManageSource||pageForm.outlayManageSource==='ACTIVITY_BUDGET_TYPE_TWO'">
|
v-if="!pageForm.outlayManageSource||pageForm.outlayManageSource==='ACTIVITY_BUDGET_TYPE_TWO'">
|
||||||
<el-select v-model="pageForm.unionId" filterable
|
<el-select v-model="pageForm.unionId" filterable
|
||||||
@@ -94,6 +98,10 @@ layout("/layouts/platform.html"){
|
|||||||
<dict-tag :options="budgetTypeOption"
|
<dict-tag :options="budgetTypeOption"
|
||||||
:value="row.outlayManageSource"></dict-tag>
|
:value="row.outlayManageSource"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
|
<template v-slot="{row}" v-else-if="column.prop==='budgetReimburseType'">
|
||||||
|
<dict-tag :options="dict.type.ACTIVITY_BUDGET_REIMBURSE_TYPE"
|
||||||
|
:value="row.budgetReimburseType"></dict-tag>
|
||||||
|
</template>
|
||||||
<template v-slot="{row}" v-else-if="column.prop==='note'">
|
<template v-slot="{row}" v-else-if="column.prop==='note'">
|
||||||
<span v-if="row.schoolBudgetId">费用使用校工会中的:{{row.activityMatterTwo}}</span>
|
<span v-if="row.schoolBudgetId">费用使用校工会中的:{{row.activityMatterTwo}}</span>
|
||||||
|
|
||||||
@@ -135,6 +143,7 @@ layout("/layouts/platform.html"){
|
|||||||
el: '#app',
|
el: '#app',
|
||||||
store,
|
store,
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
|
dicts: ["ACTIVITY_BUDGET_REIMBURSE_TYPE"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
declareTotalBudgetMoney: 0,
|
declareTotalBudgetMoney: 0,
|
||||||
@@ -145,6 +154,7 @@ layout("/layouts/platform.html"){
|
|||||||
pageForm: {
|
pageForm: {
|
||||||
year: new Date().getFullYear() + "",
|
year: new Date().getFullYear() + "",
|
||||||
outlayManageSource: "",
|
outlayManageSource: "",
|
||||||
|
budgetReimburseType: "",
|
||||||
unionId: "",
|
unionId: "",
|
||||||
clubId: "",
|
clubId: "",
|
||||||
},
|
},
|
||||||
@@ -154,12 +164,13 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: 'loginName', label: '申报人工号', fixed: "left"},
|
{prop: 'loginName', label: '申报人工号', fixed: "left"},
|
||||||
{prop: 'mobile', label: '联系方式', width: '120'},
|
{prop: 'mobile', label: '联系方式', width: '120'},
|
||||||
{prop: 'outlayManageSource', label: '申报类型'},
|
{prop: 'outlayManageSource', label: '申报类型'},
|
||||||
|
{prop: 'budgetReimburseType', label: '预算条目'},
|
||||||
{prop: 'helpUnitName', label: '申报单位'},
|
{prop: 'helpUnitName', label: '申报单位'},
|
||||||
{prop: 'activityMatter', label: '活动项目', width: '300'},
|
{prop: 'activityMatter', label: '活动项目', width: '300'},
|
||||||
{prop: 'declareTotalBudgetMoney', label: '申报预算金额'},
|
{prop: 'declareTotalBudgetMoney', label: '申报预算金额'},
|
||||||
{prop: 'totalBudgetMoney', label: '审核预算金额'},
|
{prop: 'totalBudgetMoney', label: '审核预算金额'},
|
||||||
{prop: 'note', label: '备注'},
|
{prop: 'note', label: '备注'},
|
||||||
{prop: 'applyDate', label: '申报时间'},
|
{prop: 'applyDate', label: '申报时间', width: '120'},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ const ACTIVITY_BUDGET_INFO = {
|
|||||||
<dict-tag :options="budgetTypeOption"
|
<dict-tag :options="budgetTypeOption"
|
||||||
:value="viewData.outlayManageSource"></dict-tag>
|
:value="viewData.outlayManageSource"></dict-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="预算条目">
|
||||||
|
<dict-tag :options="budgetReimburseTypeOption"
|
||||||
|
:value="viewData.budgetReimburseType"></dict-tag>
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="申报(承办)单位">{{viewData.helpUnitName}}</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.activityMatter}}</el-descriptions-item>
|
||||||
<el-descriptions-item label="活动时间">{{viewData.activityDate}}</el-descriptions-item>
|
<el-descriptions-item label="活动时间">{{viewData.activityDate}}</el-descriptions-item>
|
||||||
@@ -23,7 +27,6 @@ const ACTIVITY_BUDGET_INFO = {
|
|||||||
<el-descriptions-item v-if="viewData.isSchoolBudget" label="校工会预算">{{viewData.activityMatterTwo}}
|
<el-descriptions-item v-if="viewData.isSchoolBudget" label="校工会预算">{{viewData.activityMatterTwo}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item v-if="!viewData.isSchoolBudget"></el-descriptions-item>
|
<el-descriptions-item v-if="!viewData.isSchoolBudget"></el-descriptions-item>
|
||||||
<el-descriptions-item></el-descriptions-item>
|
|
||||||
<el-descriptions-item label="活动内容(如训练、装备等)" :span="3">
|
<el-descriptions-item label="活动内容(如训练、装备等)" :span="3">
|
||||||
<div v-html="viewData.activityContent"></div>
|
<div v-html="viewData.activityContent"></div>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@@ -76,6 +79,7 @@ const ACTIVITY_BUDGET_INFO = {
|
|||||||
viewData: {},
|
viewData: {},
|
||||||
doneTasks: [],
|
doneTasks: [],
|
||||||
budgetTypeOption: [],
|
budgetTypeOption: [],
|
||||||
|
budgetReimburseTypeOption: [],
|
||||||
row: null
|
row: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -87,6 +91,9 @@ const ACTIVITY_BUDGET_INFO = {
|
|||||||
this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE").then(resp => {
|
this.$businessTool.getDictOptions("ACTIVITY_BUDGET_TYPE").then(resp => {
|
||||||
this.budgetTypeOption = resp
|
this.budgetTypeOption = resp
|
||||||
})
|
})
|
||||||
|
this.$businessTool.getDictOptions("ACTIVITY_BUDGET_REIMBURSE_TYPE").then(resp => {
|
||||||
|
this.budgetReimburseTypeOption = resp
|
||||||
|
})
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
this.getDoneTasks()
|
this.getDoneTasks()
|
||||||
},
|
},
|
||||||
|
|||||||
+7
-1
@@ -17,6 +17,10 @@ layout("/layouts/platform.html"){
|
|||||||
value-format="yyyy">
|
value-format="yyyy">
|
||||||
</el-date-picker>
|
</el-date-picker>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select v-model="pageForm.budgetReimburseType"
|
||||||
|
code="ACTIVITY_BUDGET_REIMBURSE_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="mt10" shadow="never">
|
<el-card class="mt10" shadow="never">
|
||||||
@@ -69,6 +73,7 @@ layout("/layouts/platform.html"){
|
|||||||
pageForm: {
|
pageForm: {
|
||||||
year: new Date().getFullYear() + "",
|
year: new Date().getFullYear() + "",
|
||||||
outlayManageSource: "ACTIVITY_BUDGET_TYPE_ONE",
|
outlayManageSource: "ACTIVITY_BUDGET_TYPE_ONE",
|
||||||
|
budgetReimburseType: '',
|
||||||
unionId: "",
|
unionId: "",
|
||||||
clubId: "",
|
clubId: "",
|
||||||
},
|
},
|
||||||
@@ -81,11 +86,12 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
doExport() {
|
doExport() {
|
||||||
const {year, outlayManageSource, unionId, clubId} = this.pageForm
|
const {year, outlayManageSource, unionId, clubId, budgetReimburseType} = this.pageForm
|
||||||
window.open("/platform/activity/budget/queryStatistics/doExport?year=" + year
|
window.open("/platform/activity/budget/queryStatistics/doExport?year=" + year
|
||||||
+ "&outlayManageSource=" + outlayManageSource
|
+ "&outlayManageSource=" + outlayManageSource
|
||||||
+ "&unionId=" + unionId
|
+ "&unionId=" + unionId
|
||||||
+ "&clubId=" + clubId
|
+ "&clubId=" + clubId
|
||||||
|
+ "&budgetReimburseType=" + budgetReimburseType
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
budgetTypeCodeChange(val) {
|
budgetTypeCodeChange(val) {
|
||||||
|
|||||||
+12
@@ -34,6 +34,10 @@ layout("/layouts/platform.html"){
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
<search-item label="预算条目">
|
||||||
|
<dict-select v-model="pageForm.budgetReimburseType"
|
||||||
|
code="ACTIVITY_BUDGET_REIMBURSE_TYPE"></dict-select>
|
||||||
|
</search-item>
|
||||||
</search>
|
</search>
|
||||||
</el-card>
|
</el-card>
|
||||||
<el-card class="mt10" shadow="never">
|
<el-card class="mt10" shadow="never">
|
||||||
@@ -63,6 +67,12 @@ layout("/layouts/platform.html"){
|
|||||||
:value="row.outlayManageSource"></dict-tag>
|
:value="row.outlayManageSource"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column prop="budgetReimburseType" label="预算条目">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<dict-tag :options="budgetReimburseTypeOption"
|
||||||
|
:value="row.budgetReimburseType"></dict-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="helpUnitName" label="申报单位"></el-table-column>
|
<el-table-column prop="helpUnitName" label="申报单位"></el-table-column>
|
||||||
<el-table-column prop="activityMatter" label="活动项目"></el-table-column>
|
<el-table-column prop="activityMatter" label="活动项目"></el-table-column>
|
||||||
<el-table-column prop="declareTotalBudgetMoney" label="申报预算金额"></el-table-column>
|
<el-table-column prop="declareTotalBudgetMoney" label="申报预算金额"></el-table-column>
|
||||||
@@ -129,6 +139,7 @@ layout("/layouts/platform.html"){
|
|||||||
return {
|
return {
|
||||||
pageDataUrl: "/platform/activity/budget/schoolAudit/pageData",
|
pageDataUrl: "/platform/activity/budget/schoolAudit/pageData",
|
||||||
budgetTypeOption: [],
|
budgetTypeOption: [],
|
||||||
|
budgetReimburseTypeOption: [],
|
||||||
clubOption: [],
|
clubOption: [],
|
||||||
unionList: [],
|
unionList: [],
|
||||||
pageForm: {
|
pageForm: {
|
||||||
@@ -211,6 +222,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.budgetReimburseTypeOption = await this.$businessTool.getDictOptions("ACTIVITY_BUDGET_REIMBURSE_TYPE")
|
||||||
this.budgetTypeOption.unshift({name: "全部类型", code: ""})
|
this.budgetTypeOption.unshift({name: "全部类型", code: ""})
|
||||||
this.unionList = await this.$businessTool.listUnion()
|
this.unionList = await this.$businessTool.listUnion()
|
||||||
this.pageData()
|
this.pageData()
|
||||||
|
|||||||
Reference in New Issue
Block a user