commit
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
|
||||
public void sendMsg() {
|
||||
smsService.send("20182040", "这是一条由智慧工会系统发出的测试消息。");
|
||||
// smsService.send("20182040", "这是一条由智慧工会系统发出的测试消息。");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user