人员更新

This commit is contained in:
Paidax
2025-06-05 15:06:31 +08:00
parent 07300ed9bc
commit ba4642dcce
26 changed files with 550 additions and 421 deletions
@@ -15,7 +15,6 @@
<el-descriptions-item label="电子邮箱">{{ viewData.email }}</el-descriptions-item>
<el-descriptions-item label="是否会员">{{ viewData.member ? "是" : "否" }}</el-descriptions-item>
<el-descriptions-item label="是否福利会员">{{ viewData.welfareMember ? "是" : "否" }}</el-descriptions-item>
<el-descriptions-item label="是否重疾互助会会员">{{ viewData.wantJoinLoveMutualAidAssociation ? "是" : "否" }}</el-descriptions-item>
<el-descriptions-item label="所属工会、工作部门(学院)及职务" span="3">
<template slot="label">工作部门学院及岗位</template>
<div class="text-left">
@@ -38,13 +38,13 @@ layout("/layouts/platform.html"){
</el-select>
</search-item>
<search-item label="用人方式">
<el-select v-model="pageForm.employmentType" clearable filterable>
<el-option v-for="item in employmentTypeOptions" :label="item" :value="item"></el-option>
<el-select v-model="pageForm.preparedBy" clearable filterable>
<el-option v-for="item in preparedByOptions" :label="item" :value="item"></el-option>
</el-select>
</search-item>
<search-item label="教职工类别">
<el-select v-model="pageForm.staffType" clearable filterable>
<el-option v-for="item in staffTypeOptions" :label="item" :value="item"></el-option>
<el-select v-model="pageForm.personType" clearable filterable>
<el-option v-for="item in personTypeOptions" :label="item" :value="item"></el-option>
</el-select>
</search-item>
</search>
@@ -64,8 +64,8 @@ layout("/layouts/platform.html"){
<el-table-column prop="mobile" label="手机号" width="120"></el-table-column>
<el-table-column prop="birthday" label="生日" sortable width="120"></el-table-column>
<el-table-column prop="userState" label="在职状态" sortable width="120"></el-table-column>
<el-table-column prop="employmentType" label="用人方式" sortable width="120"></el-table-column>
<el-table-column prop="staffType" label="教职工类别" sortable width="120"></el-table-column>
<el-table-column prop="preparedBy" label="用人方式" sortable width="120"></el-table-column>
<el-table-column prop="personType" label="教职工类别" sortable width="120"></el-table-column>
<el-table-column prop="comeSchoolDate" label="来校年月" sortable width="120"></el-table-column>
<el-table-column prop="technicalTitle" label="技术职称" sortable width="120"></el-table-column>
<el-table-column prop="position" label="干部职务" sortable width="120" show-overflow-tooltip></el-table-column>
@@ -103,8 +103,8 @@ layout("/layouts/platform.html"){
return {
unitNameOptions: [],
userStateOptions: [],
employmentTypeOptions:[],
staffTypeOptions: [],
preparedByOptions:[],
personTypeOptions: [],
pullTimeOptions: false,
sourceTime: null,
pullTimeDialogVisible: false
@@ -133,8 +133,8 @@ layout("/layouts/platform.html"){
if (resp.code === 0) {
this.unitNameOptions = resp.data.unitNames
this.userStateOptions = resp.data.userStates
this.staffTypeOptions = resp.data.staffTypes
this.employmentTypeOptions = resp.data.employmentTypes
this.personTypeOptions = resp.data.personTypes
this.preparedByOptions = resp.data.preparedBys
}
})
},
@@ -62,7 +62,7 @@ layout("/layouts/platform.html"){
<el-table-column prop="userState" label="在职状态" sortable width="120"></el-table-column>
<el-table-column prop="preparedBy" label="人事编制" sortable width="120"></el-table-column>
<el-table-column prop="personType" label="人员类型" sortable width="120"></el-table-column>
<el-table-column prop="comeSchoolDate" label="来校年月" sortable width="120"></el-table-column>
<el-table-column prop="arrivalAtSchoolDate" label="来校年月" sortable width="120"></el-table-column>
<el-table-column prop="technicalTitle" label="技术职称" sortable width="120"></el-table-column>
<el-table-column prop="governmentPosition" label="党政职务" sortable width="120" show-overflow-tooltip></el-table-column>
<el-table-column prop="education" label="学历" show-overflow-tooltip sortable width="120"></el-table-column>
@@ -28,9 +28,6 @@ const MEMBER_AUDIT_CHANGE_INFO = {
<el-descriptions-item label="是否会员">{{ viewData.member ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item label="是否福利会员">{{ viewData.welfareMember ? '是' : '否' }}
</el-descriptions-item>
<el-descriptions-item label="是否重疾互助会会员">{{ viewData.wantJoinLoveMutualAidAssociation ? '是' : '否'
}}
</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="所属工会、工作部门(学院)及职务" span="3">
<template slot="label">工作部门(学院)及岗位</template>
@@ -22,7 +22,6 @@ const MEMBER_CHANGE_INFO = {
<el-descriptions-item label="电子邮箱">{{ viewData.email }}</el-descriptions-item>
<el-descriptions-item label="是否会员">{{ viewData.member ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item label="是否福利会员">{{ viewData.welfareMember ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item label="是否重疾互助会会员">{{ viewData.wantJoinLoveMutualAidAssociation ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="所属工会、工作部门(学院)及职务" span="3">
<template slot="label">工作部门(学院)及岗位</template>
@@ -17,8 +17,8 @@
<el-descriptions-item label="入党时间">{{ viewData.joinPartyDate ? $moment(viewData.joinPartyDate).format('YYYY-MM-DD') : null }}</el-descriptions-item>
<el-descriptions-item label="来校时间">{{ viewData.arrivalAtSchoolDate ? $moment(viewData.arrivalAtSchoolDate).format('YYYY-MM-DD') : null}}</el-descriptions-item>
<el-descriptions-item label="身份类别">{{ viewData.identityType }}</el-descriptions-item>
<el-descriptions-item label="聘用方式">{{ viewData.employmentType }}</el-descriptions-item>
<el-descriptions-item label="教职工类别">{{ viewData.staffType }}</el-descriptions-item>
<el-descriptions-item label="聘用方式">{{ viewData.preparedBy }}</el-descriptions-item>
<el-descriptions-item label="教职工类别">{{ viewData.personType }}</el-descriptions-item>
<el-descriptions-item label="在职状态">{{ viewData.userState }}</el-descriptions-item>
<el-descriptions-item label="预计离退休时间">{{ viewData.retireDate ?
$moment(viewData.retireDate).format('YYYY-MM-DD') : null }}
@@ -28,9 +28,6 @@
<el-descriptions-item label="是否会员">{{ viewData.member ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item label="是否福利会员">{{ viewData.welfareMember ? '是' : '否' }}
</el-descriptions-item>
<el-descriptions-item label="是否重疾互助会会员">{{ viewData.wantJoinLoveMutualAidAssociation ? '是' :
'否' }}
</el-descriptions-item>
</el-descriptions>
<div class="process-title">学历信息</div>
@@ -19,7 +19,6 @@ const MEMBER_VERIFICATION_CHANGE = {
<el-descriptions-item label="电子邮箱">{{ viewData.email }}</el-descriptions-item>
<el-descriptions-item label="是否会员">{{ viewData.member ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item label="是否福利会员">{{ viewData.welfareMember ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item label="是否重疾互助会会员">{{ viewData.wantJoinLoveMutualAidAssociation ? '是' : '否' }}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="所属工会、工作部门(学院)及职务" span="3">
<template slot="label">工作部门(学院)及岗位</template>
@@ -10,34 +10,48 @@ layout("/layouts/platform.html"){
/*color: #ff0000;*/
margin-bottom: 10px;
}
.query-row {
height: 55px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
height: 60px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
.query-row:not(:last-child) {
border-bottom: 1px dashed rgb(230, 230, 230);
border-bottom: 1px dashed rgb(230, 230, 230);
}
.el-divider__text {
position: absolute;
background-color: var(--color-white);
padding: 0 !important;
font-weight: 500;
color: var(--color-text-primary);
font-size: 14px;
}
/*.query-row:not(:last-child,:first-child) {*/
/* height: 70px;*/
/*}*/
.query-row-title {
width: 120px;
width: 120px;
}
.query-row > .query-title {
width: 100px;
max-width: 100px;
min-width: 100px;
overflow: hidden;
}
.query-row > .query-content {
min-width: 200px;
overflow: hidden;
}
.query-row > .query-content > .el-tag {
margin-bottom: 5px;
margin-top: 5px;
}
@media screen and (max-width: 992px) {
.query-row:nth-child(4) .query-content .el-col:not(:last-child) {
margin-bottom: 5px;
}
.query-title {
display: none;
}
}
</style>
<div id="app" v-cloak>
@@ -64,79 +78,83 @@ layout("/layouts/platform.html"){
</search-item>
</search>
</el-card>
<el-card shadow="never" style="margin-top: 10px">
<el-row type="flex" align="middle" class="query-row">
<el-col class="query-row-title">人员类型</el-col>
<el-col class="query-row-content">
<el-tag
style="margin-right: 10px;cursor: pointer"
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-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">
<el-tag
style="margin-right: 10px;cursor: pointer"
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-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">
<el-tag
style="margin-right: 10px;cursor: pointer"
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-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-card>
<el-card shadow="never" class="mt10">
<el-row type="flex" align="middle" class="query-row" style="height: unset;padding: 10px 0">
<el-col class="query-row-title">在职状态</el-col>
<el-col class="query-row-content" style="display: flex;flex-wrap: wrap;gap: 5px">
<el-tag
style="margin:0;cursor: pointer"
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" style="height: unset;padding: 10px 0">
<el-col class="query-row-title">教职工类别:</el-col>
<el-col class="query-row-content" style="display: flex;flex-wrap: wrap;gap: 5px">
<el-tag
style="margin:0;cursor: pointer"
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" style="height: unset;padding: 10px 0">
<el-col class="query-row-title">聘用方式:</el-col>
<el-col class="query-row-content" style="display: flex;flex-wrap: wrap;gap: 5px">
<el-tag
style="margin:0;cursor: pointer"
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-card>
<el-card shadow="never" class="mt10">
<table-tool label="会员列表">
@@ -293,8 +311,8 @@ layout("/layouts/platform.html"){
this.unions = await this.$businessTool.listUnion(store?.state.user.union.id)
this.units = await this.$businessTool.listUnit(store?.state.user.union.id)
}
this.personTypeOptions = await this.$businessTool.getDictOptions('PERSON_TYPE')
this.preparedByOptions = await this.$businessTool.getDictOptions('PREPARED_BY')
this.personTypeOptions = await this.$businessTool.getDictOptions('USER_STAFF_TYPE')
this.preparedByOptions = await this.$businessTool.getDictOptions('USER_EMPLOYMENT_TYPE')
this.userStateOptions = await this.$businessTool.getDictOptions('USER_STATE')
},
async flushUnits() {
@@ -145,8 +145,8 @@ layout("/layouts/platform.html"){
{prop: 'idCardType', label: '证件类型'},
{prop: 'idCard', label: '证件号码', width: 180},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: 'staffType', label: '教职工类别', sortable: true},
{prop: 'employmentType', label: '聘用方式', sortable: true},
{prop: 'personType', label: '教职工类别', sortable: true},
{prop: 'preparedBy', label: '聘用方式', sortable: true},
{prop: 'identityType', label: '身份类型', sortable: true},
{prop: 'unionName', label: '所属工会', sortable: true},
{prop: 'unitName', label: '所属单位', sortable: true},
@@ -99,21 +99,21 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
<el-col class="query-row-content" style="display: flex;flex-wrap: wrap;gap: 5px">
<el-tag
style="margin:0;cursor: pointer"
v-for="item in staffTypeOptions"
v-for="item in personTypeOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.staffTypes.includes(item.name)?'dark':'plain'"
@click="tagClick('staffTypes',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="staffTypeOptions.length&&pageForm.staffTypes.length"
v-if="personTypeOptions.length&&pageForm.personTypes.length"
:underline="false"
@click="pageForm.staffTypes=[];doSearch()">清空
@click="pageForm.personTypes=[];doSearch()">清空
</el-link>
<el-link :underline="false"
@click="pageForm.staffTypes=staffTypeOptions.map(p=>p.code);doSearch()"
@click="pageForm.personTypes=personTypeOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
@@ -124,21 +124,21 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
<el-col class="query-row-content" style="display: flex;flex-wrap: wrap;gap: 5px">
<el-tag
style="margin:0;cursor: pointer"
v-for="item in employmentTypeOptions"
v-for="item in preparedByOptions"
:key="item.code"
:type="item.name"
:effect="pageForm.employmentTypes.includes(item.name)?'dark':'plain'"
@click="tagClick('employmentTypes',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="employmentTypeOptions.length&&pageForm.employmentTypes.length"
v-if="preparedByOptions.length&&pageForm.preparedBys.length"
:underline="false"
@click="pageForm.employmentTypes=[];doSearch()">清空
@click="pageForm.preparedBys=[];doSearch()">清空
</el-link>
<el-link :underline="false"
@click="pageForm.employmentTypes=employmentTypeOptions.map(p=>p.code);doSearch()"
@click="pageForm.preparedBys=preparedByOptions.map(p=>p.code);doSearch()"
type="success">全部
</el-link>
</el-col>
@@ -210,8 +210,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
unionGroupId: [],
threeUnitId: [],
searchName: "username",
staffTypes: [],
employmentTypes: [],
personTypes: [],
preparedBys: [],
userStates: [],
memberStatus: [],
year: moment().format("YYYY"),
@@ -226,8 +226,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
startDate: "",
endDate: ""
},
staffTypeOptions: [],
employmentTypeOptions: [],
personTypeOptions: [],
preparedByOptions: [],
userStateOptions: [],
memberStatusOptions: [],
unions: [],
@@ -275,11 +275,11 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
this.doSearch()
},
/*checkPersonType(type) {
let idx = this.pageForm.staffTypes.indexOf(type)
let idx = this.pageForm.personTypes.indexOf(type)
if (idx !== -1) {
this.pageForm.staffTypes.splice(idx, 1)
this.pageForm.personTypes.splice(idx, 1)
} else {
this.pageForm.staffTypes.push(type)
this.pageForm.personTypes.push(type)
}
this.doSearch()
},*/
@@ -313,8 +313,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
this.pageForm.userId = []
this.pageForm.memberTypes = []
this.pageForm.sexTypes = []
this.pageForm.staffTypes = []
this.pageForm.employmentTypes = []
this.pageForm.personTypes = []
this.pageForm.preparedBys = []
this.pageForm.memberStatus = []
this.pageForm.userStates = []
this.pageForm.unionId = []
@@ -352,10 +352,10 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
this.units = await this.$businessTool.listUnit(this.$store.state.user.union.id)
}
this.$businessTool.getDictOptions("USER_STAFF_TYPE").then((data) => {
this.staffTypeOptions = data
this.personTypeOptions = data
})
this.$businessTool.getDictOptions("USER_EMPLOYMENT_TYPE").then((data) => {
this.employmentTypeOptions = data
this.preparedByOptions = data
})
this.$businessTool.getDictOptions("USER_STATE").then((data) => {
this.userStateOptions = data
@@ -385,8 +385,8 @@ const MEMBER_STATISTICS_COMPREHENSIVE_QUERY_FORM = {
pageForm.unitId = JSON.stringify(this.pageForm.unitId)
pageForm.sexTypes = JSON.stringify(this.pageForm.sexTypes)
pageForm.memberTypes = JSON.stringify(this.pageForm.memberTypes)
pageForm.staffTypes = JSON.stringify(this.pageForm.staffTypes)
pageForm.employmentTypes = JSON.stringify(this.pageForm.employmentTypes)
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
pageForm.memberStatus = JSON.stringify(this.pageForm.memberStatus)
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
this.$axios.post("/platform/member/statistics/comprehensive/pageData", pageForm).then((data) => {