This commit is contained in:
@jyuhsin
2025-11-04 16:58:56 +08:00
parent 6dcf896f14
commit d2cdc72f3c
2 changed files with 359 additions and 264 deletions
@@ -247,7 +247,7 @@ public class ActivityBasicScopeController {
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'sys_user'
AND TABLE_SCHEMA = 'budwk_v5_mini'
AND TABLE_SCHEMA = 'zhgh_njnu'
""");
List<NutMap> sqlDataList = activityBasicScopeService.listMap(sql);
// sqlDataList.forEach(v -> v.put("DATA_TYPE", new String((byte[]) v.get("DATA_TYPE"))));
@@ -1,273 +1,371 @@
const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
template: /*language=HTML*/ `
<el-card shadow="never">
<div :style="{ height: rootExtend ? 'auto' : '60px', 'overflow-y': 'hidden' }">
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-title">年&emsp;&emsp;度:</el-col>
<el-col class="query-row-content" :span="12">
<el-row style="margin-left: 3px">
<el-date-picker @change="doSearch()"
style="width: 85%"
:picker-options="pickerOptions"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年" :clearable="false">
</el-date-picker>
<el-link type="primary" style="margin-left: 10px"
:underline="false"
@click="setNowYear();doSearch()">
本年
</el-link>
</el-row>
</el-col>
<el-col class="query-row-title">姓名/工号:</el-col>
<el-col class="query-row-content" :span="12">
<el-row style="width: 92%">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
</el-row>
</el-col>
</el-row>
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>所属工会:</span>
<el-select placeholder="所属工会" v-model="pageForm.unionId"
clearable multiple style="margin-left: 33px;width: 80%"
@change="flushUnits();doSearch()"
@clear="flushUnits();doSearch()"
filterable>
<el-option v-for="item in unions" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-col>
<el-col :span="12">
<span>所属单位:</span>
<el-select placeholder="所属单位" v-model="pageForm.unitId"
clearable multiple style="margin-left: 33px;width: 80%" filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row class="query-row">
<el-col class="query-row-title">性别:</el-col>
<el-col class="query-row-content query-row-content-tag">
<el-tag
:effect="pageForm.sexTypes.includes(item.name)?'dark':'plain'"
:key="item.code"
:type="item.name"
@click="tagClick('sexTypes',item.name)"
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in sexTypeOptions">
{{ item.name }}
</el-tag>
</el-col>
</el-row>
<el-row type="flex" align="middle" class="query-row query-row-tag">
<el-col class="query-row-title">人员类型:</el-col>
<el-col class="query-row-content query-row-content-tag"
:style="{ height: personTypeExtend ? 'auto' : '24px', 'overflow-y': 'hidden' }"
>
<el-tag
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in personTypeOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.personTypes.includes(item.name)?'dark':'plain'"
@click="tagClick('personTypes',item.name)">
{{ item.name }}
</el-tag>
<el-link type="danger"
v-if="personTypeOptions.length&&pageForm.personTypes.length"
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-title">年&emsp;&emsp;度:</el-col>
<el-col class="query-row-content" :span="12">
<el-row style="margin-left: 3px">
<el-date-picker @change="doSearch()"
style="width: 85%"
:picker-options="pickerOptions"
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年" :clearable="false">
</el-date-picker>
<el-link type="primary" style="margin-left: 10px"
:underline="false"
@click="pageForm.personTypes=[];doSearch()">清空
@click="setNowYear();doSearch()">
本年
</el-link>
<el-link :underline="false"
@click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
<el-col style="width: 50px">
<el-link type="primary"
:underline="false"
@click="personTypeExtend = !personTypeExtend">
<span v-if="!personTypeExtend">展开<i class="el-icon-caret-bottom"></i></span>
<span v-if="personTypeExtend">收起<i class="el-icon-caret-top"></i></span>
</el-link>
</el-col>
</el-row>
</el-row>
</el-col>
<el-col class="query-row-title">姓名/工号:</el-col>
<el-col class="query-row-content" :span="12">
<el-row style="width: 92%">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
</el-row>
</el-col>
</el-row>
<el-row type="flex" align="middle" class="query-row query-row-tag">
<el-col class="query-row-title">人事编制:</el-col>
<el-col class="query-row-content query-row-content-tag">
<el-tag
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in preparedByOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.preparedBys.includes(item.name)?'dark':'plain'"
@click="tagClick('preparedBys',item.name)">
{{ item.name }}
</el-tag>
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>所属工会:</span>
<el-select placeholder="所属工会" v-model="pageForm.unionId"
clearable multiple style="margin-left: 33px;width: 80%"
@change="flushUnits();doSearch()"
@clear="flushUnits();doSearch()"
filterable>
<el-option v-for="item in unions" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-col>
<el-col :span="12">
<span>所属单位:</span>
<el-select placeholder="所属单位" v-model="pageForm.unitId"
clearable multiple style="margin-left: 33px;width: 80%" filterable>
<el-option v-for="item in units" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-col>
</el-row>
</el-col>
</el-row>
<el-link type="danger"
v-if="preparedByOptions.length&&pageForm.preparedBys.length"
:underline="false"
@click="pageForm.preparedBys=[];doSearch()">清空
</el-link>
<el-link :underline="false"
@click="pageForm.preparedBys=preparedByOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
</el-row>
<!--<el-row class="query-row">
<el-col class="query-row-title">性别:</el-col>
<el-col class="query-row-content query-row-content-tag">
<el-tag
:effect="pageForm.sexTypes.includes(item.name)?'dark':'plain'"
:key="item.code"
:type="item.name"
@click="tagClick('sexTypes',item.name)"
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in sexTypeOptions">
{{ item.name }}
</el-tag>
</el-col>
</el-row>-->
<el-row type="flex" align="middle" class="query-row query-row-tag">
<el-col class="query-row-title">在职状态:</el-col>
<el-col class="query-row-content query-row-content-tag"
:style="{ height: userStateExtend ? 'auto' : '24px', 'overflow-y': 'hidden' }"
>
<el-tag
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in userStateOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.userStates.includes(item.name)?'dark':'plain'"
@click="tagClick('userStates',item.name)">
{{ item.name }}
</el-tag>
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>人员类型:</span>
<el-select placeholder="人员类型" v-model="pageForm.personTypes"
clearable multiple style="margin-left: 33px;width: 80%"
@change="doSearch()"
@clear="doSearch()"
filterable>
<el-option v-for="item in personTypeOptions" :label="item.name"
:value="item.code"></el-option>
</el-select>
</el-col>
<el-col :span="12">
<span>在职状态:</span>
<el-select placeholder="在职状态" v-model="pageForm.userStates"
clearable multiple style="margin-left: 33px;width: 80%" filterable>
<el-option v-for="item in userStateOptions" :label="item.name"
:value="item.code"></el-option>
</el-select>
</el-col>
</el-row>
</el-col>
</el-row>
<el-link type="danger"
v-if="userStateOptions.length&&pageForm.userStates.length"
:underline="false"
@click="pageForm.userStates=[];doSearch()">清空
</el-link>
<el-link :underline="false"
@click="pageForm.userStates=userStateOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
<el-col style="width: 50px">
<el-link type="primary"
:underline="false"
@click="userStateExtend = !userStateExtend">
<span v-if="!userStateExtend">展开<i class="el-icon-caret-bottom"></i></span>
<span v-if="userStateExtend">收起<i class="el-icon-caret-top"></i></span>
</el-link>
</el-col>
</el-row>
<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">出生日期:</el-col>
<el-col class="query-row-content">
<el-date-picker
v-model="pageForm.startDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
v-model="pageForm.endDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</el-col>
</el-row>
<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">入会日期:</el-col>
<el-col class="query-row-content">
<el-date-picker
v-model="pageForm.startJoinDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
v-model="pageForm.endJoinDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</el-col>
</el-row>
<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">离会日期:</el-col>
<el-col class="query-row-content">
<el-date-picker
v-model="pageForm.startLeaveDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
v-model="pageForm.endLeaveDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</el-col>
</el-row>
<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">年龄范围:</el-col>
<el-col class="query-row-content">
<el-row type="flex" style="align-items: center">
<el-col :span="15">
<el-slider
v-model="pageForm.age"
range
show-stops
:max="100">
</el-slider>
</el-col>
<el-col :span="9" class="pl20">
当前范围:{{ pageForm.age }}
</el-col>
</el-row>
</el-col>
</el-row>
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-title">模糊查询:</el-col>
<el-col class="query-row-content">
<member-cnd @cnd="(v)=>pageForm={...pageForm,...v}"></member-cnd>
</el-col>
</el-row>
<el-row class="query-row" style="justify-content: end">
<el-checkbox v-model="pageForm.reverseSelection" label="是否反选" border
@change="doSearch"
class="reverseCheckBox"></el-checkbox>
<el-button type="danger" icon="el-icon-circle-close" @click="doReset">重置
</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
</el-row>
</div>
<div class="mt10" style="text-align: center;">
<el-link type="primary"
:underline="false"
@click="rootExtend = !rootExtend">
<span v-if="!rootExtend" style="font-weight: bold">展开<i class="el-icon-caret-bottom"></i></span>
<span v-if="rootExtend" style="font-weight: bold">收起<i class="el-icon-caret-top"></i></span>
</el-link>
</div>
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>人事编制:</span>
<el-select placeholder="人事编制" v-model="pageForm.preparedBys"
clearable multiple style="margin-left: 33px;width: 80%"
@change="doSearch()"
@clear="doSearch()"
filterable>
<el-option v-for="item in preparedByOptions" :label="item.name"
:value="item.code"></el-option>
</el-select>
</el-col>
<el-col :span="12">
<span>姓&emsp;&emsp;别:</span>
<el-select placeholder="姓别" v-model="pageForm.sexTypes"
clearable multiple style="margin-left: 33px;width: 80%"
@change="doSearch()"
@clear="doSearch()"
filterable>
<el-option v-for="item in sexTypeOptions" :label="item.name"
:value="item.name"></el-option>
</el-select>
</el-col>
</el-row>
</el-col>
</el-row>
<!--<el-row type="flex" align="middle" class="query-row query-row-tag">
<el-col class="query-row-title">人员类型:</el-col>
<el-col class="query-row-content query-row-content-tag">
<el-tag
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in personTypeOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.personTypes.includes(item.name)?'dark':'plain'"
@click="tagClick('personTypes',item.name)">
{{ item.name }}
</el-tag>
<el-link type="danger"
v-if="personTypeOptions.length&&pageForm.personTypes.length"
:underline="false"
@click="pageForm.personTypes=[];doSearch()">清空
</el-link>
<el-link :underline="false"
@click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
</el-row>-->
<!--<el-row type="flex" align="middle" class="query-row query-row-tag">
<el-col class="query-row-title">人事编制:</el-col>
<el-col class="query-row-content query-row-content-tag">
<el-tag
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in preparedByOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.preparedBys.includes(item.name)?'dark':'plain'"
@click="tagClick('preparedBys',item.name)">
{{ item.name }}
</el-tag>
<el-link type="danger"
v-if="preparedByOptions.length&&pageForm.preparedBys.length"
:underline="false"
@click="pageForm.preparedBys=[];doSearch()">清空
</el-link>
<el-link :underline="false"
@click="pageForm.preparedBys=preparedByOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
</el-row>-->
<!--<el-row type="flex" align="middle" class="query-row query-row-tag">
<el-col class="query-row-title">在职状态:</el-col>
<el-col class="query-row-content query-row-content-tag">
<el-tag
size="small"
style="cursor: pointer;margin: 0;"
v-for="item in userStateOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.userStates.includes(item.name)?'dark':'plain'"
@click="tagClick('userStates',item.name)">
{{ item.name }}
</el-tag>
<el-link type="danger"
v-if="userStateOptions.length&&pageForm.userStates.length"
:underline="false"
@click="pageForm.userStates=[];doSearch()">清空
</el-link>
<el-link :underline="false"
@click="pageForm.userStates=userStateOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
</el-row>-->
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>入会日期:</span>
<div style="margin-left: 33px;width: 80%; display: inline-block">
<el-date-picker
style="width: 50%"
v-model="pageForm.startJoinDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
style="width: 49%"
v-model="pageForm.endJoinDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</div>
</el-col>
<el-col :span="12">
<span>离会日期:</span>
<div style="margin-left: 33px;width: 80%; display: inline-block">
<el-date-picker
style="width: 50%"
v-model="pageForm.startLeaveDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
style="width: 49%"
v-model="pageForm.endLeaveDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</div>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>出生日期:</span>
<div style="margin-left: 33px;width: 80%; display: inline-block">
<el-date-picker
style="width: 50%"
v-model="pageForm.startDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
style="width: 49%"
v-model="pageForm.endDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</div>
</el-col>
<el-col :span="12">
<span>模糊查询:</span>
<member-cnd @cnd="(v)=>pageForm={...pageForm,...v}" style="margin-left: 33px;width: 80%; display: inline-block"></member-cnd>
</el-col>
</el-row>
</el-col>
</el-row>
<!--<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">出生日期:</el-col>
<el-col class="query-row-content">
<el-date-picker
v-model="pageForm.startDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
v-model="pageForm.endDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</el-col>
</el-row>-->
<!--<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">入会日期:</el-col>
<el-col class="query-row-content">
<el-date-picker
v-model="pageForm.startJoinDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
v-model="pageForm.endJoinDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</el-col>
</el-row>-->
<!--<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">离会日期:</el-col>
<el-col class="query-row-content">
<el-date-picker
v-model="pageForm.startLeaveDate"
type="date"
@change="determineStartDate"
placeholder="选择开始日期">
</el-date-picker>
<el-date-picker
v-model="pageForm.endLeaveDate"
type="date"
@change="determineEndDate"
placeholder="选择结束日期">
</el-date-picker>
</el-col>
</el-row>-->
<el-row class="query-row" type="flex" align="middle">
<el-col class="query-row-title">年龄范围:</el-col>
<el-col class="query-row-content">
<el-row type="flex" style="align-items: center">
<el-col :span="15">
<el-slider
v-model="pageForm.age"
range
show-stops
:max="100">
</el-slider>
</el-col>
<el-col :span="9" class="pl20">
当前范围:{{ pageForm.age }}
</el-col>
</el-row>
</el-col>
</el-row>
<!--<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-title">模糊查询:</el-col>
<el-col class="query-row-content">
<member-cnd @cnd="(v)=>pageForm={...pageForm,...v}"></member-cnd>
</el-col>
</el-row>-->
<el-row class="query-row" style="justify-content: end">
<el-checkbox v-model="pageForm.reverseSelection" label="是否反选" border
@change="doSearch"
class="reverseCheckBox"></el-checkbox>
<el-button type="danger" icon="el-icon-circle-close" @click="doReset">重置
</el-button>
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
</el-row>
<!--<search @search="doSearch">
<search-item label="年度">
@@ -425,9 +523,6 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
store,
data() {
return {
personTypeExtend: false,
userStateExtend: false,
rootExtend: false,
pageForm: {
isUnit: "",
isUnion: "",