Merge branch 'main' of https://dd3skj.picp.vip/JyuHsin/zhgh_jshvc
This commit is contained in:
+53
-2
@@ -1,24 +1,33 @@
|
|||||||
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.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.exception.BaseException;
|
||||||
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.web.commons.auth.utils.SecurityUtil;
|
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.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 com.budwk.app.zhgh.dayofficework.outlay.activityBudget.models.ActivityBudget;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
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.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.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -36,6 +45,9 @@ public class ActivityReimbursementDeputySchoolUnionController {
|
|||||||
@Inject
|
@Inject
|
||||||
private ActivityReimbursementService activityReimbursementService;
|
private ActivityReimbursementService activityReimbursementService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private FlowCommonService flowCommonService;
|
||||||
|
|
||||||
@At("")
|
@At("")
|
||||||
@SaCheckPermission("activityReimbursement.deputySchoolUnion")
|
@SaCheckPermission("activityReimbursement.deputySchoolUnion")
|
||||||
@Ok("beetl:/platform/zhgh/activity/declarereimbursement/reimbursement/deputySchoolUnion/index.html")
|
@Ok("beetl:/platform/zhgh/activity/declarereimbursement/reimbursement/deputySchoolUnion/index.html")
|
||||||
@@ -96,8 +108,8 @@ public class ActivityReimbursementDeputySchoolUnionController {
|
|||||||
pageParam.buildSearch(cnd, "info.");
|
pageParam.buildSearch(cnd, "info.");
|
||||||
|
|
||||||
cnd.and("t.taskName", "=", "f9b8379f-f348-4985-ba58-b6ba28deb9af");
|
cnd.and("t.taskName", "=", "f9b8379f-f348-4985-ba58-b6ba28deb9af");
|
||||||
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("outlay.budgetReimburseType", "=", pageParam.getBudgetReimburseType());
|
||||||
cnd.andEX("info.outlayManageSource", "=", pageParam.getOutlayManageSource());
|
cnd.andEX("info.outlayManageSource", "=", pageParam.getOutlayManageSource());
|
||||||
cnd.andEX("info.activityReimbursementMode", "=", pageParam.getActivityReimbursementMode());
|
cnd.andEX("info.activityReimbursementMode", "=", pageParam.getActivityReimbursementMode());
|
||||||
|
|
||||||
@@ -119,5 +131,44 @@ public class ActivityReimbursementDeputySchoolUnionController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@SLog(tag = "报销", msg = "校工会副主席审核了一条记录")
|
||||||
|
@SaCheckPermission("activityReimbursement.deputySchoolUnion")
|
||||||
|
public Result doReview(@Param("data") String param, String id) {
|
||||||
|
Dict args = Json.fromJson(Dict.class, param);
|
||||||
|
if (args.getInt("submitType") == 1) {
|
||||||
|
|
||||||
|
ActivityReimbursementInfo info = activityReimbursementService.dao().fetch(ActivityReimbursementInfo.class, id);
|
||||||
|
if (info.getActualMoney().compareTo(BigDecimal.valueOf(10000)) < 0) {
|
||||||
|
ActivityBudget budget = activityReimbursementService.dao().fetch(ActivityBudget.class, info.getDeductionBudgetId());
|
||||||
|
|
||||||
|
Sql sql1 = 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", info.getDeductionBudgetId());
|
||||||
|
List<NutMap> infoList = activityReimbursementService.listMap(sql1);
|
||||||
|
|
||||||
|
double usedBudgetMoney = infoList.stream().mapToDouble(v -> v.getDouble("actualMoney")).sum();
|
||||||
|
|
||||||
|
//全部已使用
|
||||||
|
BigDecimal allUsedMoney = info.getActualMoney().add(BigDecimal.valueOf(usedBudgetMoney));
|
||||||
|
if (allUsedMoney.compareTo(budget.getTotalBudgetMoney()) > 0) {
|
||||||
|
return Result.error("剩余配额不足!当前活动预算:" + budget.getTotalBudgetMoney()
|
||||||
|
+ ",已使用:" + usedBudgetMoney + "元,剩余:"
|
||||||
|
+ budget.getTotalBudgetMoney().subtract(BigDecimal.valueOf(usedBudgetMoney)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
flowCommonService.executeTask(args);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+32
-2
@@ -18,11 +18,16 @@ import com.budwk.app.zhgh.dayofficework.outlay.outlayManage.union.model.OutlayMa
|
|||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
import org.nutz.ioc.aop.Aop;
|
import org.nutz.ioc.aop.Aop;
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.json.Json;
|
import org.nutz.json.Json;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,7 +50,32 @@ public class ActivityReimbursementSchoolUnionServiceImpl extends BaseServiceImpl
|
|||||||
Dict args = Json.fromJson(Dict.class, param);
|
Dict args = Json.fromJson(Dict.class, param);
|
||||||
if (args.getInt("submitType") == 1) {
|
if (args.getInt("submitType") == 1) {
|
||||||
ActivityReimbursementInfo info = dao().fetch(ActivityReimbursementInfo.class, id);
|
ActivityReimbursementInfo info = dao().fetch(ActivityReimbursementInfo.class, id);
|
||||||
OutlayUseDetail detail = new OutlayUseDetail();
|
|
||||||
|
ActivityBudget budget = dao().fetch(ActivityBudget.class, info.getDeductionBudgetId());
|
||||||
|
Sql sql1 = 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", id);
|
||||||
|
List<NutMap> infoList = listMap(sql1);
|
||||||
|
|
||||||
|
double usedBudgetMoney = infoList.stream().mapToDouble(v -> v.getDouble("actualMoney")).sum();
|
||||||
|
|
||||||
|
//全部已使用
|
||||||
|
BigDecimal allUsedMoney = info.getActualMoney().add(BigDecimal.valueOf(usedBudgetMoney));
|
||||||
|
if (allUsedMoney.compareTo(budget.getTotalBudgetMoney()) > 0) {
|
||||||
|
throw new BaseException("剩余配额不足!当前活动预算:" + budget.getTotalBudgetMoney()
|
||||||
|
+ ",已使用:" + usedBudgetMoney + "元,剩余:"
|
||||||
|
+ budget.getTotalBudgetMoney().subtract(BigDecimal.valueOf(usedBudgetMoney)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* OutlayUseDetail detail = new OutlayUseDetail();
|
||||||
|
|
||||||
detail.setProjectName(info.getActivityName());
|
detail.setProjectName(info.getActivityName());
|
||||||
detail.setAdjustMoney(info.getActualMoney());
|
detail.setAdjustMoney(info.getActualMoney());
|
||||||
@@ -135,7 +165,7 @@ public class ActivityReimbursementSchoolUnionServiceImpl extends BaseServiceImpl
|
|||||||
//添加使用记录到经费管理表
|
//添加使用记录到经费管理表
|
||||||
detail.setOutlayManageId(manageClub.getId());
|
detail.setOutlayManageId(manageClub.getId());
|
||||||
dao().insert(detail);
|
dao().insert(detail);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
}
|
}
|
||||||
flowCommonService.executeTask(args);
|
flowCommonService.executeTask(args);
|
||||||
|
|||||||
+1
-1
@@ -89,7 +89,7 @@ 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);
|
cnd.andEX("info.budgetReimburseType", "=", budgetReimburseType);
|
||||||
|
|||||||
+33
-2
@@ -122,7 +122,8 @@ layout("/layouts/platform.html"){
|
|||||||
|
|
||||||
<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: 95%" show-summary>
|
<el-table :data="formData.budgets" border max-height="500" size="mini" style="width: 95%"
|
||||||
|
show-summary>
|
||||||
<el-table-column label="序号" sortable type="index" width="100"></el-table-column>
|
<el-table-column label="序号" sortable type="index" width="100"></el-table-column>
|
||||||
<el-table-column label="费用项目名称" prop="name">
|
<el-table-column label="费用项目名称" prop="name">
|
||||||
<template scope="{row,$index}">
|
<template scope="{row,$index}">
|
||||||
@@ -342,8 +343,38 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async init() {
|
async initActivityTypeList() {
|
||||||
this.activityDeclareReimbursementList = await this.$businessTool.getEnumOptions("ActivityDeclareReimbursement")
|
this.activityDeclareReimbursementList = await this.$businessTool.getEnumOptions("ActivityDeclareReimbursement")
|
||||||
|
const activityDeclareReimbursementList = []
|
||||||
|
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (this.$auth.hasRoleOr(["SCHOOL_UNION_ACTIVITY_ADMIN"])) {
|
||||||
|
this.activityDeclareReimbursementList.map(v => {
|
||||||
|
if (["SCHOOL_UNION"].includes(v.name)) {
|
||||||
|
activityDeclareReimbursementList.push(v)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.$auth.hasRoleOr(["BRANCH_UNION_WENTI_SPORTS", "UNION_REIMBURSEMENT_MANAGER"])) {
|
||||||
|
this.activityDeclareReimbursementList.map(v => {
|
||||||
|
if (["BRANCH_UNION"].includes(v.name)) {
|
||||||
|
activityDeclareReimbursementList.push(v)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.$auth.hasRoleOr(["CLUB_PRESIDENT"])) {
|
||||||
|
this.activityDeclareReimbursementList.map(v => {
|
||||||
|
if (["CLUB"].includes(v.name)) {
|
||||||
|
activityDeclareReimbursementList.push(v)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.activityDeclareReimbursementList = activityDeclareReimbursementList
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async init() {
|
||||||
|
await this.initActivityTypeList()
|
||||||
if (this.bizId) {
|
if (this.bizId) {
|
||||||
this.findOne(this.bizId)
|
this.findOne(this.bizId)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+3
-2
@@ -322,7 +322,8 @@ layout("/layouts/platform.html"){
|
|||||||
planDate: [],
|
planDate: [],
|
||||||
},
|
},
|
||||||
formRules: {
|
formRules: {
|
||||||
id: [{required: true, message: "必填", trigger: ['change', 'blur']}]
|
id: [{required: true, message: "必填", trigger: ['change', 'blur']}],
|
||||||
|
sign: [{required: true, message: "必填", trigger: ['change', 'blur']}]
|
||||||
},
|
},
|
||||||
|
|
||||||
activityOptions: [],
|
activityOptions: [],
|
||||||
@@ -514,7 +515,7 @@ layout("/layouts/platform.html"){
|
|||||||
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
|
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (this.$auth.hasRoleOr(["SCHOOL_REIMBURSEMENT_MANAGER","SCHOOL_REIMBURSEMENT_MANAGER"])) {
|
if (this.$auth.hasRoleOr(["SCHOOL_REIMBURSEMENT_MANAGER"])) {
|
||||||
this.budgetTypeOption.map(v => {
|
this.budgetTypeOption.map(v => {
|
||||||
if (["ACTIVITY_BUDGET_TYPE_ONE"].includes(v.code)) {
|
if (["ACTIVITY_BUDGET_TYPE_ONE"].includes(v.code)) {
|
||||||
budgetTypeCloseOption.push(v)
|
budgetTypeCloseOption.push(v)
|
||||||
|
|||||||
+4
@@ -120,6 +120,10 @@ layout("/layouts/platform.html"){
|
|||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="电子签名" prop="tf_userSign"
|
||||||
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-row type="flex" justify="end">
|
<el-row type="flex" justify="end">
|
||||||
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
<el-button @click="$refs.guava.index()" size="small">取消</el-button>
|
||||||
|
|||||||
+1
-2
@@ -111,9 +111,8 @@ layout("/layouts/platform.html"){
|
|||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- :rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
|
||||||
<el-form-item label="电子签名" prop="tf_userSign"
|
<el-form-item label="电子签名" prop="tf_userSign"
|
||||||
>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|||||||
+6
-5
@@ -125,9 +125,8 @@ layout("/layouts/platform.html"){
|
|||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- :rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
|
||||||
<el-form-item label="电子签名" prop="tf_userSign"
|
<el-form-item label="电子签名" prop="tf_userSign"
|
||||||
>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -166,7 +165,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "taskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
@@ -193,6 +192,8 @@ 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,
|
||||||
|
actualMoney: row.actualMoney,
|
||||||
processTaskId: row.taskId,
|
processTaskId: row.taskId,
|
||||||
taskName: row.curTaskName
|
taskName: row.curTaskName
|
||||||
}
|
}
|
||||||
@@ -208,11 +209,11 @@ layout("/layouts/platform.html"){
|
|||||||
cancelButtonText: "取消",
|
cancelButtonText: "取消",
|
||||||
type: "warning"
|
type: "warning"
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
this.$axios.post("/flow/common/executeTask", {
|
this.$axios.post("/platform/activityReimbursement/deputySchoolUnion/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()
|
||||||
|
|||||||
+2
-3
@@ -125,9 +125,8 @@ layout("/layouts/platform.html"){
|
|||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- :rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
|
||||||
<el-form-item label="电子签名" prop="tf_userSign"
|
<el-form-item label="电子签名" prop="tf_userSign"
|
||||||
>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -166,7 +165,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "taskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
|
|||||||
+2
-3
@@ -125,9 +125,8 @@ layout("/layouts/platform.html"){
|
|||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- :rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
|
||||||
<el-form-item label="电子签名" prop="tf_userSign"
|
<el-form-item label="电子签名" prop="tf_userSign"
|
||||||
>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -166,7 +165,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "taskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
|
|||||||
+2
-3
@@ -124,9 +124,8 @@ layout("/layouts/platform.html"){
|
|||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
<user-opinion-textarea v-model="formData.tf_opinion"></user-opinion-textarea>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- :rules="[{required:true,message:'必填',trigger:['change','blur']}]"-->
|
|
||||||
<el-form-item label="电子签名" prop="tf_userSign"
|
<el-form-item label="电子签名" prop="tf_userSign"
|
||||||
>
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
<pc-signature v-model="formData.tf_userSign"></pc-signature>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -165,7 +164,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "taskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
],
|
],
|
||||||
activityDeclareReimbursementList: [],
|
activityDeclareReimbursementList: [],
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
<!--#
|
|
||||||
layout("/layouts/platform.html"){
|
|
||||||
#-->
|
|
||||||
|
|
||||||
<div id="app" v-cloak>
|
|
||||||
<guava ref="guava">
|
|
||||||
<template>
|
|
||||||
<el-card shadow="never">
|
|
||||||
<search @search="getChartData">
|
|
||||||
<search-item label="年度">
|
|
||||||
<el-date-picker
|
|
||||||
placeholder="请选择年度"
|
|
||||||
style="width: 100%"
|
|
||||||
type="year"
|
|
||||||
v-model="pageForm.year"
|
|
||||||
value-format="yyyy"
|
|
||||||
></el-date-picker>
|
|
||||||
</search-item>
|
|
||||||
|
|
||||||
<search-item label="主办单位">
|
|
||||||
<el-select v-model="pageForm.hostUnitId" clearable filterable
|
|
||||||
placeholder="请选择主办单位"
|
|
||||||
style="width: 100%">
|
|
||||||
<el-option
|
|
||||||
v-for="item in unitOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</search-item>
|
|
||||||
|
|
||||||
<search-item label="承办单位">
|
|
||||||
<el-select v-model="pageForm.undertakeUnitId" clearable filterable
|
|
||||||
placeholder="请选择承办单位"
|
|
||||||
style="width: 100%">
|
|
||||||
<el-option
|
|
||||||
v-for="item in unitOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</search-item>
|
|
||||||
|
|
||||||
|
|
||||||
</search>
|
|
||||||
</el-card>
|
|
||||||
|
|
||||||
<el-card shadow="never">
|
|
||||||
<table-tool label="活动统计">
|
|
||||||
<el-button @click="doExport" icon="el-icon-download" size="small" type="primary">
|
|
||||||
导出活动
|
|
||||||
</el-button>
|
|
||||||
</table-tool>
|
|
||||||
<div id="activityChart" style="width: 100%; height: 400px;"></div>
|
|
||||||
</el-card>
|
|
||||||
</template>
|
|
||||||
</guava>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
new Vue({
|
|
||||||
el: "#app",
|
|
||||||
store,
|
|
||||||
mixins: [initTableMixins],
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
pageForm: {
|
|
||||||
undertakeUnitId: '',
|
|
||||||
hostUnitId: '',
|
|
||||||
year: new Date().getFullYear() + "",
|
|
||||||
},
|
|
||||||
activityChart: null,
|
|
||||||
activityCount: [
|
|
||||||
{
|
|
||||||
activityType: '家具家电',
|
|
||||||
count: 38,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
activityType: '粮油副食',
|
|
||||||
count: 52,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
activityType: '生鲜水果',
|
|
||||||
count: 61,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
|
|
||||||
unitOptions: [],
|
|
||||||
clubOptions: [],
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
doExport() {
|
|
||||||
window.open("/platform/activity/statistics/doExport?year=" + this.pageForm.year +
|
|
||||||
"&undertakeUnitId=" + this.pageForm.undertakeUnitId +
|
|
||||||
"&hostUnitId=" + this.pageForm.hostUnitId)
|
|
||||||
|
|
||||||
},
|
|
||||||
getChartData() {
|
|
||||||
this.$axios.post("/platform/activity/statistics/getChartData", {
|
|
||||||
year: this.pageForm.year,
|
|
||||||
undertakeUnitId: this.pageForm.undertakeUnitId,
|
|
||||||
hostUnitId: this.pageForm.hostUnitId
|
|
||||||
}).then(resp => {
|
|
||||||
if (resp.code === 0) {
|
|
||||||
this.activityCount = resp.data;
|
|
||||||
this.initChart()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
initChart() {
|
|
||||||
if (this.activityChart) {
|
|
||||||
this.activityChart.destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.activityChart = new G2Plot.Column('activityChart', {
|
|
||||||
data: this.activityCount,
|
|
||||||
xField: 'activityTypeName',
|
|
||||||
yField: 'count',
|
|
||||||
label: {
|
|
||||||
position: 'middle',
|
|
||||||
style: {
|
|
||||||
fill: '#FFFFFF',
|
|
||||||
opacity: 0.6,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
label: {
|
|
||||||
autoHide: true,
|
|
||||||
autoRotate: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
meta: {
|
|
||||||
activityTypeName: {alias: '活动类型'},
|
|
||||||
count: {alias: '数量'},
|
|
||||||
},
|
|
||||||
color: '#5B8FF9',
|
|
||||||
});
|
|
||||||
this.activityChart.render();
|
|
||||||
},
|
|
||||||
async getClubsByRole() {
|
|
||||||
const resp = await this.$axios.post("/platform/club/examine/apply/getClubsByRole")
|
|
||||||
return resp.data
|
|
||||||
},
|
|
||||||
},
|
|
||||||
async created() {
|
|
||||||
this.clubOptions = await this.getClubsByRole()
|
|
||||||
this.clubOptions.map((v) => {
|
|
||||||
v.name = v.clubName
|
|
||||||
})
|
|
||||||
const units = await this.$businessTool.listUnit()
|
|
||||||
this.unitOptions = this.clubOptions.concat(units)
|
|
||||||
this.getChartData()
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
|
|
||||||
},
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<!--#
|
|
||||||
}
|
|
||||||
#-->
|
|
||||||
@@ -56,10 +56,10 @@ const ACTIVITY_BUDGET_INFO = {
|
|||||||
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
<dict-tag :options="dict.type.PROCESS_TASK_SUBMIT_TYPE"
|
||||||
:value="task.ext.submitType"></dict-tag>
|
:value="task.ext.submitType"></dict-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="审核金额">
|
<el-descriptions-item label="审核金额" v-if="task.ext.tf_totalBudgetMoney">
|
||||||
{{task.ext.tf_totalBudgetMoney}}
|
{{task.ext.tf_totalBudgetMoney}}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :span="2"></el-descriptions-item>
|
<el-descriptions-item :span="2" v-if="task.ext.tf_totalBudgetMoney"></el-descriptions-item>
|
||||||
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{
|
<el-descriptions-item label="办理意见" v-if="!task.ext.isFirstTaskNode">{{
|
||||||
task.taskFormData.opinion
|
task.taskFormData.opinion
|
||||||
}}
|
}}
|
||||||
|
|||||||
+1
-1
@@ -212,7 +212,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.$refs.guava.edit(() => {
|
this.$refs.guava.edit(() => {
|
||||||
this.showApprovalForm = true
|
this.showApprovalForm = true
|
||||||
this.formData = {
|
this.formData = {
|
||||||
tf_totalBudgetMoney: 0,
|
tf_totalBudgetMoney: row.declareTotalBudgetMoney,
|
||||||
processTaskId: row.taskId,
|
processTaskId: row.taskId,
|
||||||
taskName: row.curTaskName
|
taskName: row.curTaskName
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user