bug修改

This commit is contained in:
=
2025-09-02 14:12:57 +08:00
parent 1c805dcd51
commit 773c113fcf
7 changed files with 101 additions and 20 deletions
@@ -14,13 +14,25 @@ public class SingleTeacherPageForm extends PageForm {
@ApiModelProperty("分工会ID") @ApiModelProperty("分工会ID")
private String unionId; private String unionId;
@ApiModelProperty("部门ID") @ApiModelProperty("单位ID")
private String unitId; private String unitId;
@ApiModelProperty("性别")
private String sex;
@ApiModelProperty("婚姻状况") @ApiModelProperty("婚姻状况")
private String maritalStatus; private String maritalStatus;
@ApiModelProperty("学历")
private String education;
@ApiModelProperty("年龄范围") @ApiModelProperty("年龄范围")
private Integer[] age; private Integer[] age;
@ApiModelProperty("人员类型")
private String personType;
@ApiModelProperty("在职状态")
private String userState;
} }
@@ -78,7 +78,9 @@ public class SingleTeacherServiceImpl extends BaseServiceImpl<SingleTeacher> imp
u.loginname, u.loginname,
u.sex, u.sex,
u.unionName, u.unionName,
u.unitName u.unitName,
u.personType,
u.userState
FROM FROM
`single_teacher` st `single_teacher` st
LEFT JOIN vw_user u ON u.id = st.userId LEFT JOIN vw_user u ON u.id = st.userId
@@ -93,6 +95,11 @@ public class SingleTeacherServiceImpl extends BaseServiceImpl<SingleTeacher> imp
} }
cnd.where().andBetween("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", pageForm.getAge()[0], pageForm.getAge()[1]); cnd.where().andBetween("TIMESTAMPDIFF(YEAR, u.birthday, CURDATE())", pageForm.getAge()[0], pageForm.getAge()[1]);
cnd.andEX("u.unionId", "=", pageForm.getUnionId()); cnd.andEX("u.unionId", "=", pageForm.getUnionId());
cnd.andEX("u.sex", "=", pageForm.getSex());
cnd.andEX("u.unitId", "=", pageForm.getUnitId());
cnd.andEX("u.personType", "=", pageForm.getPersonType());
cnd.andEX("u.userState", "=", pageForm.getUserState());
cnd.andEX("st.education", "=", pageForm.getEducation());
cnd.andEX("u.maritalStatus", "=", pageForm.getMaritalStatus()); cnd.andEX("u.maritalStatus", "=", pageForm.getMaritalStatus());
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) { if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
@@ -96,11 +96,11 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
for (NutMap union : mapUnions) { for (NutMap union : mapUnions) {
// 福利人数 // 福利人数
long teacherSum = welfareSelectionList.stream().filter(v -> v.getString("welfareUnionId").equals(union.getString("id"))).count(); long teacherSum = welfareSelectionList.stream().filter(v -> (union.getString("id")).equals(v.getString("welfareUnionId"))).count();
union.put("teacherSum", teacherSum); union.put("teacherSum", teacherSum);
// 已选人数 // 已选人数
long selectedNum = welfareSelectionList.stream().filter(v -> v.getString("welfareUnionId").equals(union.getString("id")) && v.getBoolean("has_selected")).count(); long selectedNum = welfareSelectionList.stream().filter(v -> (union.getString("id")).equals(v.getString("welfareUnionId")) && v.getBoolean("has_selected")).count();
union.put("selectedNum", selectedNum); union.put("selectedNum", selectedNum);
// 未选人数 // 未选人数
@@ -108,7 +108,7 @@ public class WelfareStatisticsServiceImpl extends BaseServiceImpl<WelfareProject
// 各选项的选择人数 // 各选项的选择人数
for (WelfareProjectSubjectOption option : welfareOptions) { for (WelfareProjectSubjectOption option : welfareOptions) {
long count = userSelections.stream().filter(v -> v.getString("welfareUnionId").equals(union.getString("id")) && StrUtil.isNotBlank(v.getString("selectOptionId")) && v.getString("selectOptionId").equals(option.getId())).map(v -> v.getString("selectUserId")).distinct().count(); long count = userSelections.stream().filter(v -> (union.getString("id")).equals(v.getString("welfareUnionId")) && StrUtil.isNotBlank(v.getString("selectOptionId")) && v.getString("selectOptionId").equals(option.getId())).map(v -> v.getString("selectUserId")).distinct().count();
union.put(option.getId(), count); union.put(option.getId(), count);
} }
} }
@@ -43,7 +43,7 @@ layout("/layouts/platform.html"){
<el-descriptions-item label="报销经费来源" span="2"> <el-descriptions-item label="报销经费来源" span="2">
<el-form-item label="报销经费来源" prop="reimburseFundSource"> <el-form-item label="报销经费来源" prop="reimburseFundSource">
<el-radio-group v-model="formData.reimburseFundSource" size="medium" @change="reimburseFundSourceChange"> <el-radio-group v-model="formData.reimburseFundSource" size="medium" @change="reimburseFundSourceChange">
<el-radio :label="item.code" border v-for="item in dict.type.UNION_REIMBURSE_FUND_SOURCE"> <el-radio :label="item.code" border v-for="item in budgetTypeOption">
{{item.name}} {{item.name}}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
@@ -266,7 +266,8 @@ layout("/layouts/platform.html"){
typeOptions: [], typeOptions: [],
reimburseProjectList: [], reimburseProjectList: [],
reimburseProjects: [], reimburseProjects: [],
clubOptions: [] clubOptions: [],
budgetTypeOption: []
} }
}, },
// 监听报销类别发生变化,报销项目联动改变 // 监听报销类别发生变化,报销项目联动改变
@@ -480,6 +481,35 @@ layout("/layouts/platform.html"){
}, },
// 初始化 // 初始化
async init() { async init() {
//报销经费来源区分
this.budgetTypeOption = await this.$businessTool.getDictOptions("UNION_REIMBURSE_FUND_SOURCE")
const budgetTypeOption = []
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
} else {
if (this.$auth.hasRoleOr(["SCHOOL_OUTLAY_ADMIN", "SCHOOL_UNION_ADMIN"])) {
this.budgetTypeOption.map(v => {
if (["UNION_REIMBURSE_FUND_SOURCE_1"].includes(v.code)) {
budgetTypeOption.push(v)
}
})
}
if (this.$auth.hasRoleOr(["BRANCH_UNION_CHAIRMAN", "BRANCH_UNION_ADMIN"])) {
this.budgetTypeOption.map(v => {
if (["UNION_REIMBURSE_FUND_SOURCE_2"].includes(v.code)) {
budgetTypeOption.push(v)
}
})
}
if (this.$auth.hasRoleOr(["CLUB_MANAGER", "CLUB_PRESIDENT"])) {
this.budgetTypeOption.map(v => {
if (["UNION_REIMBURSE_FUND_SOURCE_3"].includes(v.code)) {
budgetTypeOption.push(v)
}
})
}
this.budgetTypeOption = budgetTypeOption
}
this.reimburseProjectList = await this.$businessTool.getDictOptions("UNION_REIMBURSE_PROJECT") this.reimburseProjectList = await this.$businessTool.getDictOptions("UNION_REIMBURSE_PROJECT")
if (this.bizId) { if (this.bizId) {
this.$axios.post("/platform/unionReimburse/apply/info", {id: this.bizId}).then(async (res) => { this.$axios.post("/platform/unionReimburse/apply/info", {id: this.bizId}).then(async (res) => {
@@ -85,7 +85,7 @@ layout("/layouts/platform.html"){
</el-table-column> </el-table-column>
<el-table-column prop="money" label="金额"></el-table-column> <el-table-column prop="money" label="金额"></el-table-column>
<el-table-column prop="createTime" label="申请时间"></el-table-column> <el-table-column prop="createTime" label="申请时间"></el-table-column>
<el-table-column prop="taskName" label="当前节点"></el-table-column> <el-table-column prop="taskName" label="当前节点"></el-table-column>·
<el-table-column prop="instanceState" label="流程状态"> <el-table-column prop="instanceState" label="流程状态">
<template slot-scope="{row}"> <template slot-scope="{row}">
<enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message" <enum-tag :value="row.instanceState" name="ProcessInstanceStateEnum" label_key="message"
@@ -13,11 +13,24 @@ layout("/layouts/platform.html"){
<el-option v-for="item in unionOptions" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in unionOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</search-item> </search-item>
<!-- <search-item label="所属单位">--> <search-item label="所属单位">
<!-- <el-select v-model="pageForm.unitId" placeholder="请选择单位" clearable style="width: 100%">--> <el-select placeholder="所属单位" style="width: 100%" v-model="pageForm.unitId" clearable
<!-- <el-option v-for="item in unitOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>--> filterable>
<!-- </el-select>--> <el-option v-for="item in unitOptions" :label="item.name" :value="item.id"></el-option>
<!-- </search-item>--> </el-select>
</search-item>
<search-item label="性别">
<el-select v-model="pageForm.sex" placeholder="请选择性别" clearable style="width: 100%">
<el-option label="男性" value="男性"></el-option>
<el-option label="女性" value="女性"></el-option>
</el-select>
</search-item>
<search-item label="年龄区间">
<div style="display: flex; align-items: center">
<el-slider v-model="pageForm.age" range show-stops :max="100" style="flex: 1; padding: 0 12px"></el-slider>
<div style="width: 70px; flex-shrink: 0; text-align: right">{{ pageForm.age ? pageForm.age.join('-') : '' }}</div>
</div>
</search-item>
<search-item label="婚姻状况"> <search-item label="婚姻状况">
<el-select v-model="pageForm.maritalStatus" placeholder="请选择婚姻状况" clearable style="width: 100%"> <el-select v-model="pageForm.maritalStatus" placeholder="请选择婚姻状况" clearable style="width: 100%">
<el-option label="未婚" value="未婚"></el-option> <el-option label="未婚" value="未婚"></el-option>
@@ -26,11 +39,29 @@ layout("/layouts/platform.html"){
<el-option label="丧偶" value="丧偶"></el-option> <el-option label="丧偶" value="丧偶"></el-option>
</el-select> </el-select>
</search-item> </search-item>
<search-item label="年龄区间"> <search-item label="学历">
<div style="display: flex; align-items: center"> <el-select clearable placeholder="请选择学历"
<el-slider v-model="pageForm.age" range show-stops :max="100" style="flex: 1; padding: 0 12px"></el-slider> style="width: 100%;"
<div style="width: 70px; flex-shrink: 0; text-align: right">{{ pageForm.age ? pageForm.age.join('-') : '' }}</div> v-model="pageForm.education">
</div> <el-option :label="item.name" :value="item.code"
v-for="item in dict.type.USER_EDUCATION"></el-option>
</el-select>
</search-item>
<search-item label="人员类型">
<el-select clearable placeholder="请选择人员类型"
style="width: 100%;"
v-model="pageForm.personType">
<el-option :label="item.name" :value="item.code"
v-for="item in dict.type.PERSON_TYPE"></el-option>
</el-select>
</search-item>
<search-item label="在职状态">
<el-select clearable placeholder="请选择在职状态"
style="width: 100%;"
v-model="pageForm.userState">
<el-option :label="item.name" :value="item.code"
v-for="item in dict.type.USER_STATE"></el-option>
</el-select>
</search-item> </search-item>
</search> </search>
</el-card> </el-card>
@@ -71,6 +102,7 @@ layout("/layouts/platform.html"){
el: "#app", el: "#app",
store, store,
mixins: [initTableMixins], mixins: [initTableMixins],
dicts: ["USER_STATE", "PERSON_TYPE", "USER_EDUCATION"],
components: { components: {
"form-edit": formEdit "form-edit": formEdit
}, },
@@ -18,8 +18,8 @@ layout("/layouts/platform.html"){
></el-date-picker> ></el-date-picker>
</search-item> </search-item>
<search-item label="活动时间"> <search-item label="项目名称">
<el-input clearable placeholder="请输入活动名称" v-model="pageForm.name"></el-input> <el-input clearable placeholder="请输入项目名称" v-model="pageForm.name"></el-input>
</search-item> </search-item>
</search> </search>
</el-card> </el-card>