Merge branch 'main' of https://dd3skj.picp.vip/JyuHsin/zhgh_jshvc
This commit is contained in:
+50
@@ -0,0 +1,50 @@
|
|||||||
|
package com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.zhgh.activity.declarereimbursement.reimbursement.service.ActivityReimbursementService;
|
||||||
|
import com.budwk.app.zhgh.activity.declarereimbursement.vo.ActivityReimbursementRecordVO;
|
||||||
|
import com.budwk.app.zhgh.activity.declarereimbursement.vo.CommonPageParam;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 费用报销记录查询。
|
||||||
|
*/
|
||||||
|
@IocBean
|
||||||
|
@Ok("json")
|
||||||
|
@ApiOperation("费用报销记录查询")
|
||||||
|
@At("/platform/activityReimbursement/query")
|
||||||
|
public class ActivityReimbursementQueryController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ActivityReimbursementService activityReimbursementService;
|
||||||
|
|
||||||
|
@At("")
|
||||||
|
@SaCheckPermission("activityReimbursement.query")
|
||||||
|
@Ok("beetl:/platform/zhgh/activity/declarereimbursement/reimbursement/query/index.html")
|
||||||
|
public void index() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("分页查询所有已完成费用报销记录")
|
||||||
|
@SaCheckPermission("activityReimbursement.query")
|
||||||
|
public Result pageData(CommonPageParam pageParam) {
|
||||||
|
Pagination<ActivityReimbursementRecordVO> pagination = activityReimbursementService.queryReimbursementRecordPage(pageParam);
|
||||||
|
return Result.success().addData(pagination);
|
||||||
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ApiOperation("按当前查询条件统计费用报销汇总金额")
|
||||||
|
@SaCheckPermission("activityReimbursement.query")
|
||||||
|
public Result summaryMoney(CommonPageParam pageParam) {
|
||||||
|
BigDecimal summaryMoney = activityReimbursementService.queryReimbursementRecordSummaryMoney(pageParam);
|
||||||
|
return Result.success(summaryMoney);
|
||||||
|
}
|
||||||
|
}
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
package com.budwk.app.zhgh.activity.declarereimbursement.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 预算/报销汇总表行数据。
|
||||||
|
* 用于展示指定年度下分工会或协会的预算金额与已完成报销金额。
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel("预算/报销汇总表")
|
||||||
|
public class ActivityReimbursementBudgetSummaryVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("年度")
|
||||||
|
private Integer year;
|
||||||
|
|
||||||
|
@ApiModelProperty("分工会或协会名称")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ApiModelProperty("预算金额")
|
||||||
|
private BigDecimal budgetMoney;
|
||||||
|
|
||||||
|
@ApiModelProperty("费用报销汇总")
|
||||||
|
private BigDecimal reimbursementMoney;
|
||||||
|
}
|
||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
package com.budwk.app.zhgh.activity.declarereimbursement.vo;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 费用报销记录列表 VO。
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel("费用报销记录列表")
|
||||||
|
public class ActivityReimbursementRecordVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("报销记录ID")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@ApiModelProperty("申报人姓名")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@ApiModelProperty("申报人工号")
|
||||||
|
private String loginName;
|
||||||
|
|
||||||
|
@ApiModelProperty("项目名称")
|
||||||
|
private String activityName;
|
||||||
|
|
||||||
|
@ApiModelProperty("报销模式,activity 表示活动报销,daily 表示日常报销")
|
||||||
|
private String activityReimbursementMode;
|
||||||
|
|
||||||
|
@ApiModelProperty("经费类型字典值,对应 ACTIVITY_BUDGET_TYPE")
|
||||||
|
private String outlayManageSource;
|
||||||
|
|
||||||
|
@ApiModelProperty("预算条目字典值,对应 ACTIVITY_BUDGET_REIMBURSE_TYPE")
|
||||||
|
private String budgetReimburseType;
|
||||||
|
|
||||||
|
@ApiModelProperty("报销金额")
|
||||||
|
private BigDecimal actualMoney;
|
||||||
|
|
||||||
|
@ApiModelProperty("申报单位或协会名称")
|
||||||
|
private String declareUnitName;
|
||||||
|
|
||||||
|
@ApiModelProperty("申报时间")
|
||||||
|
private Date applyTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("流程实例ID,查看详情和流程信息时使用")
|
||||||
|
private Long instanceId;
|
||||||
|
|
||||||
|
@ApiModelProperty("流程实例状态")
|
||||||
|
private Integer instanceState;
|
||||||
|
|
||||||
|
@ApiModelProperty("流程定义ID")
|
||||||
|
private Long instanceProcessDefineId;
|
||||||
|
}
|
||||||
+189
@@ -0,0 +1,189 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
<div id="app">
|
||||||
|
<guava ref="guava">
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="年度">
|
||||||
|
<el-date-picker
|
||||||
|
placeholder="请选择年度"
|
||||||
|
type="year"
|
||||||
|
style="width: 100%"
|
||||||
|
v-model="pageForm.year"
|
||||||
|
value-format="yyyy">
|
||||||
|
</el-date-picker>
|
||||||
|
</search-item>
|
||||||
|
|
||||||
|
<search-item label="申请人">
|
||||||
|
<el-input placeholder="请输入申请人工号或姓名" clearable
|
||||||
|
v-model="pageForm.searchKeyword"></el-input>
|
||||||
|
</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="所属工会">
|
||||||
|
<el-select clearable
|
||||||
|
filterable
|
||||||
|
placeholder="请选择所属工会"
|
||||||
|
style="width: 100%;"
|
||||||
|
v-model="pageForm.unionId">
|
||||||
|
<el-option :label="item.name" :value="item.id"
|
||||||
|
v-for="item in unions"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
|
||||||
|
<search-item label="所属协会">
|
||||||
|
<el-select clearable filterable placeholder="所属协会"
|
||||||
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
|
v-for="item in clubs"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card shadow="never" class="mt10">
|
||||||
|
<table-tool :app="this" label="报销记录">
|
||||||
|
<span class="ml10">汇总金额:{{summaryMoney}} 元</span>
|
||||||
|
</table-tool>
|
||||||
|
|
||||||
|
<el-table :data="tableData" :default-sort="{prop: 'applyTime', order: 'descending'}" :size="tableSize" @sort-change="pageOrder"
|
||||||
|
ref="table" row-key="id" style="width: 100%">
|
||||||
|
<el-table-column :index="indexMethod" header-align="center" label="序号"
|
||||||
|
type="index" width="60px"></el-table-column>
|
||||||
|
|
||||||
|
<el-table-column
|
||||||
|
:label="column.label"
|
||||||
|
:prop="column.prop"
|
||||||
|
:sortable="column.sortable"
|
||||||
|
:width="column.width"
|
||||||
|
header-align="center"
|
||||||
|
min-width="120px"
|
||||||
|
show-overflow-tooltip
|
||||||
|
v-for="column in tableColumns"
|
||||||
|
>
|
||||||
|
<template scope="{row}" v-if="column.prop=='loginName'">
|
||||||
|
<span>{{row.userName + '(' + row.loginName + ')' }}</span>
|
||||||
|
</template>
|
||||||
|
<template scope="{row}" v-else-if="column.prop=='outlayManageSource'">
|
||||||
|
<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>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" fixed="right" width="100px">
|
||||||
|
<template slot-scope="{row}">
|
||||||
|
<el-button @click="openView(row)" size="mini" type="primary">查看</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<template #view>
|
||||||
|
<info ref="infoRef"></info>
|
||||||
|
</template>
|
||||||
|
</guava>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script nonce="${cspNonce!}">
|
||||||
|
<!--#include("../common/info.js"){}#-->
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
el: "#app",
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
store,
|
||||||
|
dicts: ["ACTIVITY_BUDGET_TYPE", "ACTIVITY_BUDGET_REIMBURSE_TYPE"],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageDataUrl: "/platform/activityReimbursement/query/pageData",
|
||||||
|
pageForm: {
|
||||||
|
year: this.$moment().format("YYYY"),
|
||||||
|
pageOrderName: "applyTime",
|
||||||
|
pageOrderBy: "descending"
|
||||||
|
},
|
||||||
|
tableColumns: [
|
||||||
|
{prop: "loginName", label: "申报人", sortable: true, width: "180"},
|
||||||
|
{prop: "activityName", label: "项目名称", width: "240"},
|
||||||
|
{prop: "activityReimbursementMode", label: "报销模式"},
|
||||||
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
|
{prop: "actualMoney", label: "报销金额(元)", sortable: true, width: "150"},
|
||||||
|
{prop: "declareUnitName", label: "申报单位/协会", sortable: true, width: "170"},
|
||||||
|
{prop: "applyTime", label: "申报时间", sortable: true, width: "170"}
|
||||||
|
],
|
||||||
|
unions: [],
|
||||||
|
clubs: [],
|
||||||
|
summaryMoney: "0.00",
|
||||||
|
summaryLoading: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
"info": INFO
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
pageData(data = null) {
|
||||||
|
const address = this.pageDataUrl ? this.pageDataUrl : loc() + "/pageData"
|
||||||
|
const params = data ? data : this.pageForm
|
||||||
|
this.tableLoading = true
|
||||||
|
this.$axios.post(address, params).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.tableData = res.data.list
|
||||||
|
this.pageForm.totalCount = res.data.totalCount
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.tableLoading = false
|
||||||
|
})
|
||||||
|
this.getSummaryMoney(params)
|
||||||
|
},
|
||||||
|
getSummaryMoney(params) {
|
||||||
|
this.summaryLoading = true
|
||||||
|
this.$axios.post("/platform/activityReimbursement/query/summaryMoney", params).then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.summaryMoney = res.data || "0.00"
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
this.summaryLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
openView(row) {
|
||||||
|
this.$refs.guava.view(() => {
|
||||||
|
this.$refs.infoRef.onOpen(row)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.pageData()
|
||||||
|
Promise.all([
|
||||||
|
this.$businessTool.listUnion(),
|
||||||
|
this.$businessTool.listClub()
|
||||||
|
]).then((res) => {
|
||||||
|
this.unions = res[0]
|
||||||
|
this.clubs = res[1]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
@@ -78,7 +78,7 @@ public class JugTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void sendMsg() {
|
public void sendMsg() {
|
||||||
smsService.send("20182040", "这是一条由智慧工会系统发出的测试消息。");
|
// smsService.send("20182040", "这是一条由智慧工会系统发出的测试消息。");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user