This commit is contained in:
那些花儿
2025-06-11 11:46:29 +08:00
parent 6dbdac1140
commit e6764f8333
25 changed files with 785 additions and 715 deletions
@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;
import com.budwk.app.base.constant.RedisConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
@@ -36,6 +37,8 @@ import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.plugins.wkcache.annotation.CacheDefaults;
import org.nutz.plugins.wkcache.annotation.CacheResult;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@@ -296,9 +299,11 @@ public class SysHomeController {
@SaCheckLogin
@ApiOperation("获取新闻")
@Ok("json")
@CacheDefaults(cacheName = RedisConstant.PLATFORM_REDIS_WKCACHE_PREFIX + "web_news", isHash = true)
@CacheResult(cacheKey = "news", ignoreNull = true, cacheLiveTime = 60 * 60 * 24)
public Result getNews() {
// 定义要爬取的URL
String domain = "https://nsdgh.njnu.edu.cn";
String domain = "http://nsdgh.njnu.edu.cn";
try {
// 使用Jsoup连接到URL并获取页面内容
Document document = Jsoup.connect(domain).get();
@@ -316,7 +321,6 @@ public class SysHomeController {
}).toList();
results.add(NutMap.NEW().addv("label", "最新新闻").addv("value", list));
// 通知公告
Elements newsSections = document.select("div.news1");
for (Element section : newsSections) {
@@ -62,6 +62,7 @@ public class MemberBranchUnionManageController {
@At
@SaCheckPermission("member.branchUnion.manage.list")
@Ok("json:{dateFormat:'yyyy-MM-dd'}")
public Result pageData(MemberManagePageForm pageForm) {
Sql sql = memberManageService.getSql(pageForm, "branchUnion");
Pagination pagination = memberManageService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
@@ -21,6 +21,7 @@ import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import org.nutz.mvc.upload.TempFile;
import org.nutz.mvc.upload.UploadAdaptor;
@@ -54,7 +55,8 @@ public class MemberInfoGroupController {
@At
@SaCheckPermission("member.info.group")
public Result pageData(MemberInfoPageForm pageForm) {
@Ok("json:{dateFormat:'yyyy-MM-dd'}")
public Result pageData(@Valid @Param("pageForm") MemberInfoPageForm pageForm) {
Sql sql = memberInfoService.getSql(pageForm);
Pagination pagination = memberInfoService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
@@ -41,6 +41,8 @@ public class MemberInfoPageForm extends PageForm {
private String sex;
private List<String> sexTypes;
private Integer memberStatus;
private String position;
@@ -9,14 +9,11 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.base.utils.CommonDownloadUtil;
import com.budwk.app.base.utils.EasyExcelUtil;
import com.budwk.app.base.utils.PwdUtil;
import com.budwk.app.base.utils.*;
import com.budwk.app.sys.models.Sys_role;
import com.budwk.app.sys.models.Sys_unit;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.base.utils.ManyAddOrRenewUtil;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.staffmanage.member.models.MemberHistory;
@@ -112,12 +109,19 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
cnd.andEX("userState", "in", pageForm.getUserStates());
}
cnd.andEX("sex", "=", pageForm.getSex());
cnd.andEX("sex", "in", pageForm.getSexTypes());
cnd.and("member", "=", true);
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("unionId", "=", SecurityUtil.getUnionId());
}
if(StrUtil.isAllBlank(pageForm.getPageOrderName(),pageForm.getPageOrderBy())){
cnd.asc("unionCode").asc("unitCode");
}else{
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
}
sql.setCondition(cnd);
return sql;
}
@@ -234,11 +238,11 @@ public class MemberInfoServiceImpl extends BaseServiceImpl<Sys_user> implements
exportEntities.add(new ExcelExportEntity("联系电话", "mobile", 20));
exportEntities.add(new ExcelExportEntity("身份证号", "idCard", 30));
exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20));
exportEntities.add(new ExcelExportEntity("人事编制", "preparedBy", 20));
exportEntities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20));
exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20));
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20));
exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 30));
exportEntities.add(new ExcelExportEntity("来校年月", "comeSchoolDate", 30));
// exportEntities.add(new ExcelExportEntity("来校年月", "comeSchoolDate", 30));
// exportEntities.add(new ExcelExportEntity("所在科室", "threeUnitName", 20));
// exportEntities.add(new ExcelExportEntity("工会小组", "unionGroupName", 30));
@@ -24,9 +24,6 @@
<el-dialog :visible.sync="memberInfoDialogVisible" title="我的信息" width="70%" append-to-body>
<user-info ref="userInfoRef"></user-info>
<span slot="footer" class="dialog-footer">
<el-button @click="memberInfoDialogVisible = false"> </el-button>
</span>
</el-dialog>
<el-dialog :visible.sync="signatureDialogVisible" title="我的电子签名" width="35%" append-to-body>
@@ -1,52 +1,70 @@
<template>
<div>
<div class="process-title">基本信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="姓名">{{ viewData.username + "(" + viewData.loginname + ")" }}</el-descriptions-item>
<el-descriptions-item label="工号">{{ viewData.loginname }}</el-descriptions-item>
<el-descriptions-item label="姓名">{{ viewData.username }}</el-descriptions-item>
<el-descriptions-item label="姓名">{{ viewData.username }}</el-descriptions-item>
<el-descriptions-item label="性别">{{ viewData.sex }}</el-descriptions-item>
<el-descriptions-item label="出生日期">
{{ viewData.birthday ? $moment(viewData.birthday).format("YYYY-MM-DD") : null }}
</el-descriptions-item>
<el-descriptions-item label="民族">{{ viewData.nation }}</el-descriptions-item>
<el-descriptions-item label="在职状态">{{ viewData.userState }}</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.education }}</el-descriptions-item>
<el-descriptions-item label="政治面貌">{{ viewData.political }}</el-descriptions-item>
<el-descriptions-item label="婚姻状况">{{ viewData.marriage || "" }}</el-descriptions-item>
<el-descriptions-item label="籍贯">{{ viewData.nativePlace }}</el-descriptions-item>
<el-descriptions-item label="国籍">{{ viewData.nationality }}</el-descriptions-item>
<el-descriptions-item label="证件类别">{{ viewData.idCardType }}</el-descriptions-item>
<el-descriptions-item label="证件号码">{{ viewData.idCard }}</el-descriptions-item>
<el-descriptions-item label="政治面貌">{{ viewData.political }}</el-descriptions-item>
<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.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 }}
</el-descriptions-item>
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
<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="所属工会、工作部门(学院)及职务" span="3">
<template slot="label">工作部门学院及岗位</template>
<div class="text-left">
{{ viewData.unionName + "-" + viewData.unitName + (viewData.governmentPosition ? "(" + viewData.governmentPosition + ")" : "") }}
</div>
</el-descriptions-item>
<el-descriptions-item label="家庭主要成员及其工作单位" span="3">
<el-table
v-if="viewData.families && viewData.families.length"
:data="viewData.family"
size="mini"
border
:header-cell-style="{ background: '#eff3f6' }"
style="width: 100%"
>
<el-table-column prop="relation" label="与本人关系" align="center" header-align="center"></el-table-column>
<el-table-column prop="name" label="姓名" align="center" header-align="center"></el-table-column>
<el-table-column prop="unit" label="单位" align="center" header-align="center"></el-table-column>
<el-table-column prop="remark" label="备注" align="center" header-align="center"></el-table-column>
</el-table>
<el-empty v-else :image-size="50" description="暂无家庭成员信息"></el-empty>
</el-descriptions-item>
<el-descriptions-item label="个人简况" span="3">
<template slot="label">个人简况</template>
<div v-if="viewData.personalData" class="text-left" v-html="viewData.personalData"></div>
<span v-else>无数据</span>
</el-descriptions>
<div class="process-title">会员信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="是否会员">
<el-tag v-if="viewData.member === 1" size="mini" type="success"></el-tag>
<el-tag v-else type="info" size="mini"></el-tag>
</el-descriptions-item>
<el-descriptions-item label="所属单位">{{ viewData.unitName }}</el-descriptions-item>
<el-descriptions-item label="所属分工会">{{ viewData.unionName }}</el-descriptions-item>
</el-descriptions>
<div class="process-title">学历信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="最高学历">{{ viewData.education }}</el-descriptions-item>
<el-descriptions-item label="最高学位">{{ viewData.academicDegree }}</el-descriptions-item>
<el-descriptions-item label=""></el-descriptions-item>
</el-descriptions>
<div class="process-title">职称信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="职称">{{ viewData.technicalTitle }}</el-descriptions-item>
<el-descriptions-item label="职称级别">{{ viewData.technicalTitleLevel }}</el-descriptions-item>
<el-descriptions-item label=""></el-descriptions-item>
</el-descriptions>
<div class="process-title">职务信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="现聘职务">{{ viewData.position }}</el-descriptions-item>
<el-descriptions-item label="现聘职级">{{ viewData.positionLevel }}</el-descriptions-item>
<el-descriptions-item label="职员等级">{{ viewData.employeeLevel }}</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script>
let signature = null
module.exports = {
name: "userInfo",
data() {
@@ -1,14 +1,14 @@
const news = {
template: /*language=HTML*/ `
<div class="home-news">
<!-- <el-tabs v-model="activeName">-->
<!-- <el-tab-pane v-for="(item,index) in newsData" :key="index" :label="item.label" :name="item.label" v-if="item.value.length > 0">-->
<!-- <div v-for="(n,i) in item.value" :key="i" @click="openUrl(n.href)">-->
<!-- <span v-if="n.time" class="news_time">{{ n.time }}</span>-->
<!-- <span class="news_text">{{ n.text }}</span>-->
<!-- </div>-->
<!-- </el-tab-pane>-->
<!-- </el-tabs>-->
<el-tabs v-model="activeName">
<el-tab-pane v-for="(item,index) in newsData" :key="index" :label="item.label" :name="item.label" v-if="item.value.length > 0">
<div v-for="(n,i) in item.value" :key="i" @click="openUrl(n.href)">
<span v-if="n.time" class="news_time">{{ n.time }}</span>
<span class="news_text">{{ n.text }}</span>
</div>
</el-tab-pane>
</el-tabs>
</div>
`,
data() {
@@ -10,30 +10,31 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会">
<el-select @change="flushUnits" @clear="flushUnits" clearable filterable
placeholder="所属工会" style="width: 100%;" v-model="pageForm.unionId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in unions"></el-option>
<el-select
@change="flushUnits"
@clear="flushUnits"
clearable
filterable
placeholder="所属工会"
style="width: 100%"
v-model="pageForm.unionId"
>
<el-option :key="item.id" :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.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in units"></el-option>
<el-select clearable filterable placeholder="请选择" style="width: 100%" v-model="pageForm.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in units"></el-option>
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
code="PREPARED_BY"></dict-select>
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch" code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch"
code="PERSON_TYPE"></dict-select>
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch" code="PERSON_TYPE"></dict-select>
</search-item>
</search>
</el-card>
@@ -45,16 +46,24 @@ layout("/layouts/platform.html"){
</el-radio-group>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index" width="80px"></el-table-column>
<el-table-column :label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns">
<el-table-column
:index="indexMethod"
align="center"
header-align="center"
label="序号"
type="index"
width="80px"
></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='loginname'">
<el-link @click="openView(row)" type="primary">{{row.loginname}}</el-link>
</template>
@@ -66,10 +75,10 @@ layout("/layouts/platform.html"){
审核
</el-button>
<el-button
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
@click="openRevoke(row.processInstanceTaskId)"
size="mini"
type="danger"
v-if="row.processInstanceTaskStatus==='COMPLETE' && !row.nextTaskIsComplete"
@click="openRevoke(row.processInstanceTaskId)"
size="mini"
type="danger"
>
撤回
</el-button>
@@ -112,7 +121,7 @@ layout("/layouts/platform.html"){
store,
mixins: [initTableMixins],
data() {
return{
return {
pageForm: {
audit: false
},
@@ -120,7 +129,7 @@ layout("/layouts/platform.html"){
{ prop: "loginname", label: "工号", sortable: true },
{ prop: "username", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "人事编制", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
@@ -132,8 +141,8 @@ layout("/layouts/platform.html"){
}
},
components: {
'member-info': MEMBER_INFO,
'member-audit-change-info': MEMBER_AUDIT_CHANGE_INFO,
"member-info": MEMBER_INFO,
"member-audit-change-info": MEMBER_AUDIT_CHANGE_INFO
},
methods: {
openView(row) {
@@ -144,14 +153,14 @@ layout("/layouts/platform.html"){
openChangeView(row) {
this.$refs.guava.public(() => {
this.showApprovalForm = false
this.$refs.memberAuditChangeInfoRef.onOpen({recordId: row.id, userId: row.userId})
this.$refs.memberAuditChangeInfoRef.onOpen({ recordId: row.id, userId: row.userId })
})
},
openApproval(row) {
this.$refs.guava.public(() => {
this.showApprovalForm = true
this.formData = row.approvalParam
this.$refs.memberAuditChangeInfoRef.onOpen({recordId: row.id, userId: row.userId})
this.$refs.memberAuditChangeInfoRef.onOpen({ recordId: row.id, userId: row.userId })
})
},
doApproval(approvalType) {
@@ -204,7 +213,7 @@ layout("/layouts/platform.html"){
}
this.doSearch()
},
flushUnits(){
flushUnits() {
this.$set(this.pageForm, "unitId", null)
this.units = []
if (this.pageForm.unionId) {
@@ -212,12 +221,12 @@ layout("/layouts/platform.html"){
this.units = data
})
}
},
}
},
created() {
this.initData()
},
});
}
})
</script>
<!--#
}
@@ -11,30 +11,31 @@ layout("/layouts/platform.html"){
</search-item>
<template v-if="$auth.hasRoleOr(['SYSADMIN', 'SCHOOL_UNION_ADMIN', 'BRANCH_UNION_CHAIRMAN'])">
<search-item label="所属工会">
<el-select @change="flushUnits" @clear="flushUnits" clearable filterable
placeholder="所属工会" style="width: 100%;" v-model="pageForm.unionId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in unions"></el-option>
<el-select
@change="flushUnits"
@clear="flushUnits"
clearable
filterable
placeholder="所属工会"
style="width: 100%"
v-model="pageForm.unionId"
>
<el-option :key="item.id" :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.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in units"></el-option>
<el-select clearable filterable placeholder="请选择" style="width: 100%" v-model="pageForm.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in units"></el-option>
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
code="PREPARED_BY"></dict-select>
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch" code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch"
code="PERSON_TYPE"></dict-select>
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch" code="PERSON_TYPE"></dict-select>
</search-item>
</template>
</search>
@@ -42,20 +43,27 @@ layout("/layouts/platform.html"){
<el-card shadow="never" class="mt10">
<table-tool label="申请列表">
<el-button size="small" type="primary"
@click="$store.dispatch('pjaxRoute', '/platform/member/apply/submit')">申请入会</el-button>
<el-button size="small" type="primary" @click="$store.dispatch('pjaxRoute', '/platform/member/apply/submit')">申请入会</el-button>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index" width="80px"></el-table-column>
<el-table-column :label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns">
<el-table-column
:index="indexMethod"
align="center"
header-align="center"
label="序号"
type="index"
width="80px"
></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='loginname'">
<el-link @click="openView(row)" type="primary">{{row.loginname}}</el-link>
</template>
@@ -64,18 +72,18 @@ layout("/layouts/platform.html"){
<template slot-scope="{row}">
<el-button @click="openChangeView(row)" size="mini" type="primary">查看</el-button>
<el-button
v-if="[10,40,70].includes(row.processInstanceNodeCode)"
size="mini"
type="primary"
@click="$store.dispatch('pjaxRoute', '/platform/member/apply/submit?id='+row.id)"
v-if="[10,40,70].includes(row.processInstanceNodeCode)"
size="mini"
type="primary"
@click="$store.dispatch('pjaxRoute', '/platform/member/apply/submit?id='+row.id)"
>
编辑
</el-button>
<el-button
v-if="[20].includes(row.processInstanceNodeCode) && !row.nextTaskIsComplete"
size="mini"
type="danger"
@click="openRevoke(row)"
v-if="[20].includes(row.processInstanceNodeCode) && !row.nextTaskIsComplete"
size="mini"
type="danger"
@click="openRevoke(row)"
>
撤销
</el-button>
@@ -92,10 +100,10 @@ layout("/layouts/platform.html"){
<template #view>
<member-info ref="memberInfoRef"></member-info>
</template>
<template #public>
<member-audit-change-info ref="memberAuditChangeInfoRef"></member-audit-change-info>
</template>
<template #public>
<member-audit-change-info ref="memberAuditChangeInfoRef"></member-audit-change-info>
</template>
</guava>
</div>
@@ -113,7 +121,7 @@ layout("/layouts/platform.html"){
{ prop: "loginname", label: "工号", sortable: true },
{ prop: "username", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "人事编制", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
@@ -125,7 +133,7 @@ layout("/layouts/platform.html"){
},
components: {
"member-info": MEMBER_INFO,
'member-audit-change-info': MEMBER_AUDIT_CHANGE_INFO,
"member-audit-change-info": MEMBER_AUDIT_CHANGE_INFO
},
methods: {
doDelete(row) {
@@ -157,11 +165,11 @@ layout("/layouts/platform.html"){
this.$refs.memberInfoRef.onOpen(row.userId)
})
},
openChangeView(row) {
this.$refs.guava.public(() => {
this.$refs.memberAuditChangeInfoRef.onOpen({recordId: row.id, userId: row.userId})
})
},
openChangeView(row) {
this.$refs.guava.public(() => {
this.$refs.memberAuditChangeInfoRef.onOpen({ recordId: row.id, userId: row.userId })
})
},
initData() {
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
this.$businessTool.listUnion(this.pageForm.unionId).then((data) => {
@@ -170,7 +178,7 @@ layout("/layouts/platform.html"){
this.$businessTool.listUnit().then((data) => {
this.units = data
})
} else if (this.$auth.hasRole("BRANCH_UNION_CHAIRMAN")){
} else if (this.$auth.hasRole("BRANCH_UNION_CHAIRMAN")) {
this.$businessTool.listUnion(this.$store.state.user.union.id).then((data) => {
this.unions = data
})
@@ -180,7 +188,7 @@ layout("/layouts/platform.html"){
}
this.doSearch()
},
flushUnits(){
flushUnits() {
this.$set(this.pageForm, "unitId", null)
this.units = []
if (this.pageForm.unionId) {
@@ -188,7 +196,7 @@ layout("/layouts/platform.html"){
this.units = data
})
}
},
}
},
created() {
debugger
@@ -30,8 +30,8 @@ layout("/layouts/platform.html"){
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch" code="PREPARED_BY"></dict-select>
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch" code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch" code="PERSON_TYPE"></dict-select>
@@ -132,7 +132,7 @@ layout("/layouts/platform.html"){
{ prop: "loginname", label: "工号", sortable: true },
{ prop: "username", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "人事编制", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
@@ -26,30 +26,37 @@ layout("/layouts/platform.html"){
</el-descriptions-item>
<el-descriptions-item label="民族">
<el-form-item prop="nation">
<dict-select style="width: 100%" placeholder="请选择民族" v-model="formData.nation"
code="USER_NATION"></dict-select>
<dict-select style="width: 100%" placeholder="请选择民族" v-model="formData.nation" code="USER_NATION"></dict-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="政治面貌">
<el-form-item prop="political">
<dict-select style="width: 100%" placeholder="请选择政治面貌" v-model="formData.political"
code="POLITICAL_STATUS"></dict-select>
<dict-select
style="width: 100%"
placeholder="请选择政治面貌"
v-model="formData.political"
code="POLITICAL_STATUS"
></dict-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="学历">
<el-form-item prop="education">
<dict-select style="width: 100%" placeholder="请选择学历" v-model="formData.education"
code="USER_EDUCATION"></dict-select>
<dict-select style="width: 100%" placeholder="请选择学历" v-model="formData.education" code="USER_EDUCATION"></dict-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="工作单位">
<el-form-item prop="unitId">
<el-select clearable filterable placeholder="请选择工作单位" style="width: 100%"
disabled @change="getUnionName(formData.unitId)"
v-model="formData.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in units"></el-option>
<el-select
clearable
filterable
placeholder="请选择工作单位"
style="width: 100%"
disabled
@change="getUnionName(formData.unitId)"
v-model="formData.unitId"
>
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in units"></el-option>
</el-select>
</el-form-item>
</el-descriptions-item>
@@ -60,27 +67,23 @@ layout("/layouts/platform.html"){
</el-descriptions-item>
<el-descriptions-item label="职务">
<el-form-item prop="governmentPosition">
<el-input v-model="formData.governmentPosition" placeholder="请输入职务"
maxlength="50"></el-input>
<el-input v-model="formData.governmentPosition" placeholder="请输入职务" maxlength="50"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="在职状态">
<el-form-item prop="userState">
<dict-select v-model="formData.userState" code="USER_STATE"
style="width: 100%"></dict-select>
<dict-select v-model="formData.userState" code="USER_STATE" style="width: 100%"></dict-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="人事编制">
<el-descriptions-item label="聘用方式">
<el-form-item prop="preparedBy">
<dict-select v-model="formData.preparedBy" code="PREPARED_BY"
style="width: 100%"></dict-select>
<dict-select v-model="formData.preparedBy" code="PREPARED_BY" style="width: 100%"></dict-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="人员类型">
<el-form-item prop="personType">
<dict-select v-model="formData.personType" code="PERSON_TYPE"
style="width: 100%"></dict-select>
<dict-select v-model="formData.personType" code="PERSON_TYPE" style="width: 100%"></dict-select>
</el-form-item>
</el-descriptions-item>
@@ -101,8 +104,7 @@ layout("/layouts/platform.html"){
<el-table :data="formData.families" border size="small">
<el-table-column label="关系" prop="relation">
<template slot-scope="{row}">
<el-input v-model="row.relation" maxlength="50"
placeholder="请输入与本人关系"></el-input>
<el-input v-model="row.relation" maxlength="50" placeholder="请输入与本人关系"></el-input>
</template>
</el-table-column>
<el-table-column label="姓名" prop="name">
@@ -112,8 +114,7 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column label="工作单位" prop="unit">
<template slot-scope="{row}">
<el-input v-model="row.unit" maxlength="100"
placeholder="请输入工作单位"></el-input>
<el-input v-model="row.unit" maxlength="100" placeholder="请输入工作单位"></el-input>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark">
@@ -123,17 +124,15 @@ layout("/layouts/platform.html"){
</el-table-column>
<el-table-column width="100px">
<template slot="header" slot-scope="scope">
<el-button type="primary" size="mini"
@click="formData.families.push({})">添加
</el-button>
<el-button type="primary" size="mini" @click="formData.families.push({})">添加</el-button>
</template>
<template slot-scope="scope">
<el-button
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="formData.families.length===0"
@click="formData.families.splice(scope.$index,1)"
type="danger"
icon="el-icon-delete"
size="mini"
:disabled="formData.families.length===0"
@click="formData.families.splice(scope.$index,1)"
></el-button>
</template>
</el-table-column>
@@ -149,7 +148,7 @@ layout("/layouts/platform.html"){
</el-descriptions>
</el-form>
<el-row v-if="!this.$store.state.user.member" justify="end" type="flex" class="mt10">
<!-- <el-row justify="end" type="flex" class="mt10">-->
<!-- <el-row justify="end" type="flex" class="mt10">-->
<el-button v-if="formData.id" @click="$store.dispatch('pjaxRoute', '/platform/member/apply/mine')">返回</el-button>
<el-button @click="doSave" type="primary">保存申请</el-button>
<el-button @click="doSubmit" type="primary">提交申请</el-button>
@@ -171,17 +170,17 @@ layout("/layouts/platform.html"){
families: []
},
formRules: {
username: [{required: false, message: "必填", trigger: "change"}],
sex: [{required: false, message: "必填", trigger: "change"}],
username: [{ required: false, message: "必填", trigger: "change" }],
sex: [{ required: false, message: "必填", trigger: "change" }],
idCard: [
{required: false, message: "身份证号不能为空", trigger: "blur"},
{ required: false, message: "身份证号不能为空", trigger: "blur" },
{
pattern: /(^\d{6}(18|19|20)\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}([0-9xX])$)/,
message: "身份证号格式不正确",
trigger: "blur"
}
],
},
]
}
}
},
methods: {
@@ -236,28 +235,28 @@ layout("/layouts/platform.html"){
doSave() {
this.$confirm("保存后可在我的申请里面再次编辑,您确定要保存吗?", "提示", { type: "warning" })
.then(() => {
this.$axios
.post(loc() + "/doSave", this.formData)
.then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.$store.dispatch("pjaxRoute", "/platform/member/apply/mine")
}
})
this.$axios.post(loc() + "/doSave", this.formData).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.$store.dispatch("pjaxRoute", "/platform/member/apply/mine")
}
})
})
.catch()
},
doSubmit() {
this.$confirm("您确定要提交申请吗?", "提示", { type: "warning" })
.then(() => {
this.$axios.post(loc() + "/doSubmit", {
...this.formData,
}).then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.$store.dispatch("pjaxRoute", "/platform/member/apply/mine")
}
})
this.$axios
.post(loc() + "/doSubmit", {
...this.formData
})
.then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.$store.dispatch("pjaxRoute", "/platform/member/apply/mine")
}
})
})
.catch()
}
@@ -10,57 +10,80 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="名单事项">
<el-select clearable filterable placeholder="请选择" style="width: 100%"
@change="changeProject"
v-model="pageForm.verificationProjectId">
<el-option :key="item.id" :label="item.projectName" :value="item.id"
v-for="item in verificationList"></el-option>
<el-select
clearable
filterable
placeholder="请选择"
style="width: 100%"
@change="changeProject"
v-model="pageForm.verificationProjectId"
>
<el-option :key="item.id" :label="item.projectName" :value="item.id" v-for="item in verificationList"></el-option>
</el-select>
</search-item>
<search-item label="所属工会">
<el-select @change="flushUnits" @clear="flushUnits" clearable filterable
placeholder="所属工会" style="width: 100%;" v-model="pageForm.unionId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in unions"></el-option>
<el-select
@change="flushUnits"
@clear="flushUnits"
clearable
filterable
placeholder="所属工会"
style="width: 100%"
v-model="pageForm.unionId"
>
<el-option :key="item.id" :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.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in units"></el-option>
<el-select clearable filterable placeholder="请选择" style="width: 100%" v-model="pageForm.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in units"></el-option>
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
code="PREPARED_BY"></dict-select>
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch" code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch"
code="PERSON_TYPE"></dict-select>
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch" code="PERSON_TYPE"></dict-select>
</search-item>
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool :label="'人员核对列表' + '【' + ( buttonData.disableSubmit ? buttonData.buttonContent : buttonData.submitCountContent ) + '】'">
<table-tool
:label="'人员核对列表' + '【' + ( buttonData.disableSubmit ? buttonData.buttonContent : buttonData.submitCountContent ) + '】'"
>
<el-button type="primary" size="small" @click="exportExcel">导出名单事项核对记录</el-button>
<el-button v-if="buttonData.isFeedback" type="primary" size="small" @click="viewFeedback()">查看反馈结果</el-button>
<el-button v-if="buttonData.disableSubmit" style="margin-left: 10px" type="primary" size="small" @click="incorrectSubmission">有误提交</el-button>
<el-button v-if="buttonData.disableSubmit" style="margin-left: 10px" type="primary" size="small" @click="openCorrectSubmission">无误提交</el-button>
<el-button v-if="buttonData.disableSubmit" style="margin-left: 10px" type="primary" size="small" @click="incorrectSubmission">
有误提交
</el-button>
<el-button v-if="buttonData.disableSubmit" style="margin-left: 10px" type="primary" size="small" @click="openCorrectSubmission">
无误提交
</el-button>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" ref="table" row-key="id" style="width: 100%">
<el-table-column :index="indexMethod" align="center" header-align="center"
label="序号" type="index" width="80px"></el-table-column>
<el-table-column :label="column.label" :prop="column.prop"
:sortable="column.sortable" :width="column.width"
align="center" header-align="center" min-width="100px"
show-overflow-tooltip v-for="column in tableColumns">
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" class="vi-table" ref="table" row-key="id" style="width: 100%">
<el-table-column
:index="indexMethod"
align="center"
header-align="center"
label="序号"
type="index"
width="80px"
></el-table-column>
<el-table-column
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
align="center"
header-align="center"
min-width="100px"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='loginname'">
<el-link @click="openView(row)" type="primary">{{row.loginname}}</el-link>
</template>
@@ -73,11 +96,17 @@ layout("/layouts/platform.html"){
<el-tag size="mini" v-else type="danger">未核对</el-tag>
</template>
<template scope="{row}" v-else-if="column.prop=='currentState'">
<el-tooltip class="item" effect="dark"
:content="'校工会审核意见:' + (row.verificationOption ? row.verificationOption : '暂无' )" placement="top">
<el-tooltip
class="item"
effect="dark"
:content="'校工会审核意见:' + (row.verificationOption ? row.verificationOption : '暂无' )"
placement="top"
>
<el-link v-if="row.currentState == 1" :underline="false" type="danger">拒绝</el-link>
<!-- <el-link v-else-if="!row.branchUnionChecked" :underline="false" type="info" disabled>待分工会提交</el-link>-->
<el-link v-else-if="(row.currentState == 0 || !row.currentState)" :underline="false" type="info" disabled>待审核</el-link>
<!-- <el-link v-else-if="!row.branchUnionChecked" :underline="false" type="info" disabled>待分工会提交</el-link>-->
<el-link v-else-if="(row.currentState == 0 || !row.currentState)" :underline="false" type="info" disabled>
待审核
</el-link>
<el-link v-else :underline="false" type="primary" disabled>通过</el-link>
</el-tooltip>
</template>
@@ -85,8 +114,12 @@ layout("/layouts/platform.html"){
<el-table-column v-if="buttonData.disableSubmit" label="操作" fixed="right" width="300px">
<template scope="{row}">
<el-button v-if="row.isChanged" size="mini" type="primary" @click="openChangeInfo(row)">查看变更</el-button>
<el-button v-if="row.currentState !== 2" size="mini" type="primary" @click="openChange(row)">{{ row.isChanged ? '重新变更' : '变更' }}</el-button>
<el-button v-if="row.isChanged && row.currentState != 2" size="mini" type="danger" @click="revokeChange(row)">撤销变更</el-button>
<el-button v-if="row.currentState !== 2" size="mini" type="primary" @click="openChange(row)">
{{ row.isChanged ? '重新变更' : '变更' }}
</el-button>
<el-button v-if="row.isChanged && row.currentState != 2" size="mini" type="danger" @click="revokeChange(row)">
撤销变更
</el-button>
</template>
</el-table-column>
</el-table>
@@ -107,7 +140,6 @@ layout("/layouts/platform.html"){
</template>
</guava>
<el-dialog title="无误提交" :visible.sync="correctSubmissionDialog" width="50%" append-to-body>
<el-form :model="formData" ref="formRef" label-width="120px" :rules="formRules" size="small">
<el-form-item prop="feedbackContent" label="当前需核对人数">
@@ -116,37 +148,41 @@ layout("/layouts/platform.html"){
<el-form-item prop="feedbackNum" label="反馈人数">
<el-input-number v-model="formData.feedbackNum" style="width: 100%" placeholder="请填写反馈人数" size="small"></el-input-number>
</el-form-item>
<template v-if="verificationData.welfareJson && verificationData.welfareJson.length > 0">
<el-form-item prop="welfareJson" label="福利选择人数">
<el-table :data="formData.welfareJson" border size="small">
<el-table-column label="福利名称" prop="welfareName">
<template slot-scope="{row}">
<el-input v-model="row.welfareName" readonly maxlength="50" placeholder="请输入福利名称"></el-input>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark">
<template slot-scope="{row}">
<el-input v-model="row.remark" readonly maxlength="100" placeholder="请输入备注"></el-input>
</template>
</el-table-column>
<el-table-column label="选择人数" prop="chooseNumber">
<template slot-scope="{row}">
<el-input-number style="width: 100%" v-model="row.chooseNumber" :min="0"
placeholder="请输入选择此福利的人数"></el-input-number>
</template>
</el-table-column>
</el-table>
</el-form-item>
</template>
<template v-if="verificationData.welfareJson && verificationData.welfareJson.length > 0">
<el-form-item prop="welfareJson" label="福利选择人数">
<el-table :data="formData.welfareJson" border size="small">
<el-table-column label="福利名称" prop="welfareName">
<template slot-scope="{row}">
<el-input v-model="row.welfareName" readonly maxlength="50" placeholder="请输入福利名称"></el-input>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark">
<template slot-scope="{row}">
<el-input v-model="row.remark" readonly maxlength="100" placeholder="请输入备注"></el-input>
</template>
</el-table-column>
<el-table-column label="选择人数" prop="chooseNumber">
<template slot-scope="{row}">
<el-input-number
style="width: 100%"
v-model="row.chooseNumber"
:min="0"
placeholder="请输入选择此福利的人数"
></el-input-number>
</template>
</el-table-column>
</el-table>
</el-form-item>
</template>
<template v-if="verificationData.isNeedFeedbackFile">
<el-form-item required label="附件上传" prop="feedbackFiles">
<file-upload
:value.sync="formData.feedbackFiles"
:upload_number="2"
upload_result_category="array"
complete_result
upload_mode="drag"
accept=".doc,.docx,.xls,.xlsx,.pdf"
:value.sync="formData.feedbackFiles"
:upload_number="2"
upload_result_category="array"
complete_result
upload_mode="drag"
accept=".doc,.docx,.xls,.xlsx,.pdf"
></file-upload>
</el-form-item>
</template>
@@ -164,13 +200,13 @@ layout("/layouts/platform.html"){
<el-descriptions-item label="反馈日期">{{ viewData.feedbackDate }}</el-descriptions-item>
<el-descriptions-item label="反馈人数">{{ viewData.feedbackNum }}</el-descriptions-item>
<template v-if="viewData.welfareJson">
<el-descriptions-item span="2" label="福利选择人数">
<el-table :data="viewData.welfareJson" border size="small">
<el-table-column label="福利名称" prop="welfareName"></el-table-column>
<el-table-column label="备注" prop="remark"></el-table-column>
<el-table-column label="选择人数" prop="chooseNumber"></el-table-column>
</el-table>
</el-descriptions-item>
<el-descriptions-item span="2" label="福利选择人数">
<el-table :data="viewData.welfareJson" border size="small">
<el-table-column label="福利名称" prop="welfareName"></el-table-column>
<el-table-column label="备注" prop="remark"></el-table-column>
<el-table-column label="选择人数" prop="chooseNumber"></el-table-column>
</el-table>
</el-descriptions-item>
</template>
<el-descriptions-item span="2" label="核对时间">{{ viewData.startDate + '至' + viewData.endDate }}</el-descriptions-item>
<el-descriptions-item span="2" label="内容及要求" span="2">{{ viewData.content }}</el-descriptions-item>
@@ -182,7 +218,6 @@ layout("/layouts/platform.html"){
</div>
<script>
<!--#include("../../../common/info/memberInfo.js"){}#-->
<!--#include("../../../common/change/memberChange.js"){}#-->
<!--#include("../../../common/verification/memberVerificationChange.js"){}#-->
@@ -198,49 +233,45 @@ layout("/layouts/platform.html"){
},
data() {
return {
userId: '',
verificationChangeInfoUserId: '',
url: '/platform/member/branchUnion/verification/check/doCheckMember',
userId: "",
verificationChangeInfoUserId: "",
url: "/platform/member/branchUnion/verification/check/doCheckMember",
verificationList: [],
verificationData: {},
unions: [],
units: [],
tableColumns: [
{prop: 'loginname', label: '工号', sortable: true},
{prop: 'username', label: '姓名', sortable: true},
{prop: 'sex', label: '性别', sortable: true, width: '100px'},
{prop: 'userState', label: '在职状态', sortable: true},
// {prop: "preparedBy", label: "人事编制", sortable: true},
{ prop: "loginname", label: "工号", sortable: true },
{ prop: "username", label: "姓名", sortable: true },
{ prop: "sex", label: "性别", sortable: true, width: "100px" },
{ prop: "userState", label: "在职状态", sortable: true },
// {prop: "preparedBy", label: "聘用方式", sortable: true},
// {prop: 'personType', label: '人员类型', sortable: true},
{prop: 'unionName', label: '所属工会', sortable: true},
{prop: 'unitName', label: '所属单位', sortable: true},
{prop: 'isChanged', label: '变更状态', sortable: true},
{prop: 'branchUnionChecked', label: '核对状态', sortable: true},
{prop: 'currentState', label: '校工会状态', sortable: true},
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
{ prop: "isChanged", label: "变更状态", sortable: true },
{ prop: "branchUnionChecked", label: "核对状态", sortable: true },
{ prop: "currentState", label: "校工会状态", sortable: true }
],
formRules: {
feedbackNum: [
{required: true, message: '请填写反馈人数', trigger: ["blur", "change"]},
{type: 'number', message: '反馈人数必须为数字'}
{ required: true, message: "请填写反馈人数", trigger: ["blur", "change"] },
{ type: "number", message: "反馈人数必须为数字" }
],
feedbackFiles: [
{required: true, message: '请上传反馈附件', trigger: ["blur", "change"]}
],
welfareJson: [
{required: true, message: '请填写福利选择人数', trigger: ["blur", "change"]}
]
},
pageForm: {
verificationProjectId: '',
unionId: '',
unitId: '',
userState: '',
personType: '',
feedbackFiles: [{ required: true, message: "请上传反馈附件", trigger: ["blur", "change"] }],
welfareJson: [{ required: true, message: "请填写福利选择人数", trigger: ["blur", "change"] }]
},
buttonData:{
pageForm: {
verificationProjectId: "",
unionId: "",
unitId: "",
userState: "",
personType: ""
},
buttonData: {
disableSubmit: false,
buttonContent: '',
submitCountContent: '',
buttonContent: "",
submitCountContent: "",
isFeedback: false
},
correctSubmissionDialog: false,
@@ -251,138 +282,148 @@ layout("/layouts/platform.html"){
},
methods: {
exportExcel() {
this.$downLoad('/platform/member/branchUnion/verification/check/exportExcel', this.pageForm)
this.$downLoad("/platform/member/branchUnion/verification/check/exportExcel", this.pageForm)
},
viewFeedback(){
this.$axios.post('/platform/member/branchUnion/verification/check/getVerificationFeedback',{
verificationProjectId: this.pageForm.verificationProjectId,
unionId: this.$store.state.user.union.id,
}).then(res => {
if (res.code === 0) {
this.viewData = res.data
this.feedbackDialog = true
} else {
this.$message.error(res.msg)
}
})
viewFeedback() {
this.$axios
.post("/platform/member/branchUnion/verification/check/getVerificationFeedback", {
verificationProjectId: this.pageForm.verificationProjectId,
unionId: this.$store.state.user.union.id
})
.then((res) => {
if (res.code === 0) {
this.viewData = res.data
this.feedbackDialog = true
} else {
this.$message.error(res.msg)
}
})
},
/**
* 有误提交
*/
incorrectSubmission(){
incorrectSubmission() {
//确定要提交吗,请确保数据已核对完毕
this.$confirm('确定要提交吗?,请确保数据已核对完毕', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$axios.post('/platform/member/branchUnion/verification/check/incorrectSubmission',{
verificationProjectId: this.pageForm.verificationProjectId
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.buttonData.disableSubmit = false
this.pageData()
this.validateSubmitButton()
} else {
this.$message.warning(res.msg)
}
this.$confirm("确定要提交吗?,请确保数据已核对完毕", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.$axios
.post("/platform/member/branchUnion/verification/check/incorrectSubmission", {
verificationProjectId: this.pageForm.verificationProjectId
})
.then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.buttonData.disableSubmit = false
this.pageData()
this.validateSubmitButton()
} else {
this.$message.warning(res.msg)
}
})
})
}).catch(() => {
});
.catch(() => {})
},
openCorrectSubmission(){
this.$confirm('您确认要无误提交吗?提交后所有数据将无法撤销,点击确认后将填写反馈人数,是否确认?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
openCorrectSubmission() {
this.$confirm("您确认要无误提交吗?提交后所有数据将无法撤销,点击确认后将填写反馈人数,是否确认?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.verificationData = this.verificationList.find(v=>v.id === this.pageForm.verificationProjectId)
if (this.verificationData.welfareJson && this.verificationData.welfareJson.length > 0) {
this.formData.welfareJson = this.verificationData.welfareJson
}else{
this.verificationData = this.verificationList.find((v) => v.id === this.pageForm.verificationProjectId)
if (this.verificationData.welfareJson && this.verificationData.welfareJson.length > 0) {
this.formData.welfareJson = this.verificationData.welfareJson
} else {
this.formData.welfareJson = []
}
console.log(this.verificationData)
console.log(this.verificationData)
this.correctSubmissionDialog = true
})
},
/**
* 无误提交
*/
correctSubmission(){
correctSubmission() {
if (this.formData.feedbackNum !== this.totalCount) {
this.$message.warning('反馈人数与实际反馈人数不一致,无法提交;如有疑问,请联系校工会')
this.$message.warning("反馈人数与实际反馈人数不一致,无法提交;如有疑问,请联系校工会")
return
}
let data = clone(this.formData)
if (this.formData.welfareJson && this.formData.welfareJson.length > 0) {
data.welfareJson = this.formData.welfareJson.map(v => ({
...v,
chooseNumber: v.chooseNumber || 0
}));
const totalChooseNumber = data.welfareJson.reduce((sum, item) => sum + item.chooseNumber, 0);
if (totalChooseNumber !== this.totalCount) {
this.$message.warning('上报的福利选择人数与当前需核对人数不一致,无法提交;如有疑问,请联系校工会')
return
}
data.welfareJson = JSON.stringify(data.welfareJson)
}
let data = clone(this.formData)
if (this.formData.welfareJson && this.formData.welfareJson.length > 0) {
data.welfareJson = this.formData.welfareJson.map((v) => ({
...v,
chooseNumber: v.chooseNumber || 0
}))
const totalChooseNumber = data.welfareJson.reduce((sum, item) => sum + item.chooseNumber, 0)
if (totalChooseNumber !== this.totalCount) {
this.$message.warning("上报的福利选择人数与当前需核对人数不一致,无法提交;如有疑问,请联系校工会")
return
}
data.welfareJson = JSON.stringify(data.welfareJson)
}
if (data.feedbackFiles) {
data.feedbackFiles = JSON.stringify(data.feedbackFiles)
}
data.verificationProjectId = this.pageForm.verificationProjectId
this.$axios.post('/platform/member/branchUnion/verification/check/correctSubmission',{
data: JSON.stringify(data)
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.correctSubmissionDialog = false
this.pageData()
this.validateSubmitButton()
this.formData = {}
} else {
this.$message.warning(res.msg)
}
})
this.$axios
.post("/platform/member/branchUnion/verification/check/correctSubmission", {
data: JSON.stringify(data)
})
.then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.correctSubmissionDialog = false
this.pageData()
this.validateSubmitButton()
this.formData = {}
} else {
this.$message.warning(res.msg)
}
})
},
/**
* 变更数据查看
* @param row
*/
openChangeInfo(row){
this.$refs.guava.public( () => {
this.$refs.memberVerificationChangeRef.onOpen({id:row.userId,projectId:this.pageForm.verificationProjectId})
openChangeInfo(row) {
this.$refs.guava.public(() => {
this.$refs.memberVerificationChangeRef.onOpen({ id: row.userId, projectId: this.pageForm.verificationProjectId })
})
},
/**
* 撤销变更
*/
revokeChange(row){
this.$confirm('确定要撤销变更吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const formData = new FormData()
formData.userId = row.userId
formData.verificationProjectId = this.pageForm.verificationProjectId
this.$axios.post('/platform/member/branchUnion/verification/check/branchUnionRevokeChange',{
data: JSON.stringify(formData)
}).then(res => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
} else {
this.$message.warning(res.msg)
}
revokeChange(row) {
this.$confirm("确定要撤销变更吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
const formData = new FormData()
formData.userId = row.userId
formData.verificationProjectId = this.pageForm.verificationProjectId
this.$axios
.post("/platform/member/branchUnion/verification/check/branchUnionRevokeChange", {
data: JSON.stringify(formData)
})
.then((res) => {
if (res.code === 0) {
this.$message.success(res.msg)
this.doSearch()
} else {
this.$message.warning(res.msg)
}
})
})
}).catch(() => {
});
.catch(() => {})
},
// 基本信息查看
openView(row) {
@@ -391,24 +432,26 @@ layout("/layouts/platform.html"){
})
},
openChange(row) {
if (row.currentState == 2){
if (row.currentState == 2) {
// 该条记录校工会核对时已通过,您确定要继续变更吗?
this.$confirm('该条记录校工会核对时已通过,您确定要继续变更吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.openChangeNext(row)
}).catch(e => {
console.log('取消'+e)
});
this.$confirm("该条记录校工会核对时已通过,您确定要继续变更吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.openChangeNext(row)
})
.catch((e) => {
console.log("取消" + e)
})
} else {
this.openChangeNext(row)
}
},
openChangeNext(row){
openChangeNext(row) {
this.userId = row.userId
const data = this.verificationList.find(v => v.id === row.verificationProjectId)
const data = this.verificationList.find((v) => v.id === row.verificationProjectId)
this.$refs.guava.edit(() => {
this.$refs.memberChangeRef.verificationInit({
renewFields: data.renewFields,
@@ -425,7 +468,7 @@ layout("/layouts/platform.html"){
// })
},
getVerificationList() {
this.$axios.post("/platform/member/branchUnion/verification/check/getVerificationList").then(res => {
this.$axios.post("/platform/member/branchUnion/verification/check/getVerificationList").then((res) => {
if (res.code === 0) {
this.verificationList = res.data
if (this.verificationList.length > 0) {
@@ -437,7 +480,7 @@ layout("/layouts/platform.html"){
}
})
},
changeSuccess(){
changeSuccess() {
this.$refs.guava.index()
this.doSearch()
},
@@ -453,8 +496,8 @@ layout("/layouts/platform.html"){
})
}
},
changeProject(){
this.doSearch();
changeProject() {
this.doSearch()
this.validateSubmitButton()
},
flushUnits() {
@@ -468,31 +511,32 @@ layout("/layouts/platform.html"){
},
//校验提交按钮是否能使用
validateSubmitButton() {
this.$axios.post('/platform/member/branchUnion/verification/check/validateSubmitButton',{
verificationProjectId: this.pageForm.verificationProjectId
}).then(res=>{
if (res.code === 0) {
const data = res.data
this.buttonData.disableSubmit = data.buttonStatus
this.buttonData.buttonContent = data.buttonContent
this.buttonData.submitCountContent = data.submitCountContent
this.buttonData.isFeedback = data.isFeedback
} else {
this.buttonData.disableSubmit = false
}
})
},
pageData() {
this.$axios.post("/platform/member/branchUnion/verification/check/pageData", this.pageForm)
this.$axios
.post("/platform/member/branchUnion/verification/check/validateSubmitButton", {
verificationProjectId: this.pageForm.verificationProjectId
})
.then((res) => {
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
// if (!this.totalCount) {
// this.totalCount = res.data.totalCount
// }
this.totalCount = res.data.totalCount
const data = res.data
this.buttonData.disableSubmit = data.buttonStatus
this.buttonData.buttonContent = data.buttonContent
this.buttonData.submitCountContent = data.submitCountContent
this.buttonData.isFeedback = data.isFeedback
} else {
this.buttonData.disableSubmit = false
}
})
},
pageData() {
this.$axios.post("/platform/member/branchUnion/verification/check/pageData", this.pageForm).then((res) => {
if (res.code === 0) {
this.tableData = res.data.list
this.pageForm.totalCount = res.data.totalCount
// if (!this.totalCount) {
// this.totalCount = res.data.totalCount
// }
this.totalCount = res.data.totalCount
}
})
}
},
@@ -24,8 +24,8 @@ const MEMBER_AUDIT_TABLE = {
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch"
code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
@@ -109,7 +109,7 @@ const MEMBER_AUDIT_TABLE = {
{ prop: "loginname", label: "工号", sortable: true },
{ prop: "username", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "人事编制", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
@@ -66,7 +66,7 @@ const MEMBER_CHANGE = {
:disabled="allowFields('userState')"></dict-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="人事编制">
<el-descriptions-item label="聘用方式">
<el-form-item prop="preparedBy">
<dict-select v-model="formData.preparedBy" code="PREPARED_BY" style="width: 100%"
:disabled="allowFields('preparedBy')"></dict-select>
@@ -25,21 +25,30 @@
</el-descriptions-item>
<el-descriptions-item label="联系电话">{{ viewData.mobile }}</el-descriptions-item>
<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>
<div class="process-title">会员信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="是否会员">
<el-tag v-if="viewData.member===1" size="mini" type="success">是</el-tag>
<el-tag v-else type="info" size="mini">否</el-tag>
</el-descriptions-item>
<el-descriptions-item label="所属单位">{{ viewData.unitName }}</el-descriptions-item>
<el-descriptions-item label="所属分工会">{{ viewData.unionName }}</el-descriptions-item>
</el-descriptions>
<div class="process-title">学历信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="最高学历">{{ viewData.education }}</el-descriptions-item>
<el-descriptions-item label="最高学位">{{ viewData.academicDegree }}</el-descriptions-item>
<el-descriptions-item label=""></el-descriptions-item>
</el-descriptions>
<div class="process-title">职称信息</div>
<el-descriptions :column="3" border class="descriptions-form">
<el-descriptions-item label="职称">{{ viewData.technicalTitle }}</el-descriptions-item>
<el-descriptions-item label="职称级别">{{ viewData.technicalTitleLevel }}</el-descriptions-item>
<el-descriptions-item label=""></el-descriptions-item>
</el-descriptions>
<div class="process-title">职务信息</div>
@@ -27,13 +27,13 @@ const MEMBER_MANAGE_QUERY = {
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
code="PREPARED_BY"></dict-select>
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch"
code="USER_PREPARED_BY_TYPE"></dict-select>
</search-item>
<search-item label="人员类型">
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch"
code="PERSON_TYPE"></dict-select>
code="USER_PERSON_TYPE"></dict-select>
</search-item>
<search-item label="更新日期">
<el-date-picker :picker-options="pickerOptions" @change="changeDateRangeChange"
@@ -152,7 +152,7 @@ const MEMBER_MANAGE_TABLE = {
{ prop: "sex", label: "性别", sortable: true, width: "100px" },
{ prop: "birthday", label: "出生年月", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "人事编制", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true }
@@ -28,8 +28,8 @@ const MEMBER_RECORD = {
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch"
code="PERSON_TYPE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch"
code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="变更类型">
@@ -10,48 +10,48 @@ layout("/layouts/platform.html"){
/*color: #ff0000;*/
margin-bottom: 10px;
}
.query-row {
height: 60px;
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);
}
.query-row-title {
width: 120px;
width: 120px;
}
.query-row > .query-title {
width: 100px;
max-width: 100px;
min-width: 100px;
overflow: hidden;
width: 100px;
max-width: 100px;
min-width: 100px;
overflow: hidden;
}
.query-row > .query-content {
min-width: 200px;
overflow: hidden;
min-width: 200px;
overflow: hidden;
}
.query-row > .query-content > .el-tag {
margin-bottom: 5px;
margin-top: 5px;
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;
}
.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>
@@ -63,132 +63,101 @@ layout("/layouts/platform.html"){
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
</search-item>
<search-item label="所属工会">
<el-select @change="flushUnits" @clear="flushUnits" clearable filterable
placeholder="所属工会" style="width: 100%;" v-model="pageForm.unionId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in unions"></el-option>
<el-select
@change="flushUnits"
@clear="flushUnits"
clearable
filterable
placeholder="所属工会"
style="width: 100%"
v-model="pageForm.unionId"
>
<el-option :key="item.id" :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.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in units"></el-option>
<el-select clearable filterable placeholder="请选择" style="width: 100%" v-model="pageForm.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in units"></el-option>
</el-select>
</search-item>
<search-item label="性别">
<el-select v-model="pageForm.sexTypes" clearable multiple placeholder="性别">
<el-option label="男" value="男"></el-option>
<el-option label="女" value="女"></el-option>
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select
clearable
code="USER_STATE"
multiple
collapse-tags
placeholder="请选择人员状态"
v-model="pageForm.userStates"
></dict-select>
</search-item>
<search-item label="人员类型">
<dict-select
clearable
code="USER_PERSON_TYPE"
multiple
collapse-tags
placeholder="请选择人员类型"
v-model="pageForm.personTypes"
></dict-select>
</search-item>
<search-item label="聘用方式">
<dict-select
clearable
code="USER_PREPARED_BY_TYPE"
multiple
collapse-tags
placeholder="请选择聘用方式"
v-model="pageForm.preparedBys"
></dict-select>
</search-item>
</search>
</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="会员列表">
<el-button type="primary" size="small" icon="el-icon-upload2" @click="openImport">导入会员</el-button>
<el-button type="primary" v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN'])" size="small"
icon="el-icon-time"
@click="openArchive">备份历史会员
</el-button>
<el-button type="primary" size="small" icon="el-icon-download"
@click="exportMember">会员档案导出
<el-button
type="primary"
v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN'])"
size="small"
icon="el-icon-time"
@click="openArchive"
>
备份历史会员
</el-button>
<el-button type="primary" size="small" icon="el-icon-download" @click="exportMember">会员档案导出</el-button>
</table-tool>
<el-table :data="tableData" style="width: 100%" row-key="id"
@sort-change="pageOrder" :size="tableSize" class="vi-table">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder" :size="tableSize" class="vi-table">
<el-table-column
show-overflow-tooltip
align="center"
header-align="center"
v-for="column in tableColumns"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
min-width="50">
</el-table-column>
align="center"
header-align="center"
type="index"
:index="indexMethod"
label="序号"
width="80px"
></el-table-column>
<el-table-column
show-overflow-tooltip
align="center"
header-align="center"
v-for="column in tableColumns"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
min-width="50"
></el-table-column>
<el-table-column prop="userOnline" align="center" header-align="center"
label="操作" fixed="right">
<el-table-column prop="userOnline" align="center" header-align="center" label="操作" fixed="right" width="100px">
<template scope="scope">
<el-button size="mini" @click="openView(scope.row.id)">查看</el-button>
<el-button size="mini" type="primary" @click="openView(scope.row.id)">查看</el-button>
</template>
</el-table-column>
</el-table>
@@ -199,16 +168,16 @@ layout("/layouts/platform.html"){
<template #view>
<member-info ref="applyInfoRef"></member-info>
</template>
</guava>
<archive-member ref="archiveMemberRef"></archive-member>
<el-dialog title="会员导入" :visible.sync="importDialog" width="50%"
:close-on-click-modal="false" :close-on-press-escape="false">
<file-import ref="viewImport" temp_url="/platform/member/info/group/downloadMemberTemplate"
post_url="/platform/member/info/group/importMember"
@flush="successImport"
<el-dialog title="会员导入" :visible.sync="importDialog" width="50%" :close-on-click-modal="false" :close-on-press-escape="false">
<file-import
ref="viewImport"
temp_url="/platform/member/info/group/downloadMemberTemplate"
post_url="/platform/member/info/group/importMember"
@flush="successImport"
></file-import>
</el-dialog>
</div>
@@ -217,46 +186,46 @@ layout("/layouts/platform.html"){
<!--#include("archiveMember.js"){}#-->
new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
data() {
return {
pageForm: {
searchKeyword: '',
unionId: '',
unitId: '',
searchKeyword: "",
unionId: "",
unitId: "",
personTypes: [],
preparedBys: [],
userStates: [],
cnd: ''
cnd: ""
},
userId: "",
unions: [],
units: [],
tableColumns: [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'sex', label: '性别'},
{prop: 'birthday', label: '出生年月', sortable: true},
{prop: 'mobile', label: '联系电话'},
{prop: 'idCard', label: '身份证号', width: 170},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: "preparedBy", label: "人事编制", sortable: true},
{prop: 'personType', label: '人员类型', sortable: true},
{prop: 'unionName', label: '所属工会', sortable: true},
{prop: 'unitName', label: '所属单位', sortable: true},
{ prop: "loginname", label: "工号" },
{ prop: "username", label: "姓名" },
{ prop: "sex", label: "性别" },
{ prop: "birthday", label: "出生年月", sortable: true },
{ prop: "mobile", label: "联系电话" },
{ prop: "idCard", label: "身份证号", width: 170 },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true }
],
personTypeOptions: [],
preparedByOptions: [],
userStateOptions: [],
importDialog: false,
importDialog: false
}
},
components: {
'member-cnd': httpVueLoader('/components/module/member/MemberCnd.vue?v=' + new Date().getTime()),
'file-import': httpVueLoader('/components/plugins/sysImport/index.vue?v=' + new Date().getTime()),
'archive-member': ARCHIVE_MEMBER,
'member-info': MEMBER_INFO,
"member-cnd": httpVueLoader("/components/module/member/MemberCnd.vue?v=" + new Date().getTime()),
"file-import": httpVueLoader("/components/plugins/sysImport/index.vue?v=" + new Date().getTime()),
"archive-member": ARCHIVE_MEMBER,
"member-info": MEMBER_INFO
},
methods: {
openImport() {
@@ -265,43 +234,38 @@ layout("/layouts/platform.html"){
successImport() {
this.importDialog = false
},
tagClick(key, val) {
let idx = this.pageForm[key].indexOf(val)
if (idx !== -1) {
this.pageForm[key].splice(idx, 1)
} else {
this.pageForm[key].push(val)
}
this.doSearch()
},
exportMember() {
const pageForm = clone(this.pageForm)
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
this.$downLoad(loc() + '/exportMember', pageForm)
this.$downLoad(loc() + "/exportMember", pageForm)
},
openArchive() {
this.$refs.archiveMemberRef.archiveDialogVisible = true
},
openView(userId) {
this.$refs.guava.view(()=>{
this.$refs.guava.view(() => {
this.$refs.applyInfoRef.onOpen(userId)
})
},
pageData() {
const pageForm = clone(this.pageForm)
pageForm.personTypes = JSON.stringify(this.pageForm.personTypes)
pageForm.preparedBys = JSON.stringify(this.pageForm.preparedBys)
pageForm.userStates = JSON.stringify(this.pageForm.userStates)
this.$axios.post(loc() + "/pageData", pageForm).then(data => {
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
})
this.tableLoading = true
this.$axios
.post(loc() + "/pageData", {
pageForm: JSON.stringify(this.pageForm)
})
.then((data) => {
if (data.code === 0) {
this.tableData = data.data.list
this.pageForm.totalCount = data.data.totalCount
} else {
this.$message.error(data.msg)
}
})
.finally(() => {
this.tableLoading = false
})
},
async initData() {
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
@@ -311,9 +275,9 @@ 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('USER_STAFF_TYPE')
this.preparedByOptions = await this.$businessTool.getDictOptions('USER_EMPLOYMENT_TYPE')
this.userStateOptions = await this.$businessTool.getDictOptions('USER_STATE')
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() {
this.$set(this.pageForm, "unitId", null)
@@ -8,9 +8,13 @@ layout("/layouts/platform.html"){
<el-card shadow="never">
<search @search="doSearch">
<search-item label="年度">
<el-date-picker style="width: 100%" v-model="pageForm.year" value-format="yyyy"
type="year" placeholder="选择年">
</el-date-picker>
<el-date-picker
style="width: 100%"
v-model="pageForm.year"
value-format="yyyy"
type="year"
placeholder="选择年"
></el-date-picker>
</search-item>
<search-item label="姓名/工号">
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"></el-input>
@@ -19,57 +23,63 @@ layout("/layouts/platform.html"){
<member-cnd @cnd="(v)=>pageForm={...pageForm,...v}"></member-cnd>
</search-item>
<search-item label="所属工会">
<el-select @change="flushUnits" @clear="flushUnits" clearable filterable
placeholder="所属工会" style="width: 100%;" v-model="pageForm.unionId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in unions"></el-option>
<el-select
@change="flushUnits"
@clear="flushUnits"
clearable
filterable
placeholder="所属工会"
style="width: 100%"
v-model="pageForm.unionId"
>
<el-option :key="item.id" :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.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id"
v-for="item in units"></el-option>
<el-select clearable filterable placeholder="请选择" style="width: 100%" v-model="pageForm.unitId">
<el-option :key="item.id" :label="item.name" :value="item.id" v-for="item in units"></el-option>
</el-select>
</search-item>
<search-item label="在职状态">
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch" code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
code="PREPARED_BY"></dict-select>
<search-item label="聘用方式">
<dict-select
v-model="pageForm.preparedBy"
placeholder="聘用方式"
@change="doSearch"
code="USER_PREPARED_BY_TYPE"
></dict-select>
</search-item>
<search-item label="人员类型">
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch"
code="PERSON_TYPE"></dict-select>
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch" code="USER_PERSON_TYPE"></dict-select>
</search-item>
</search>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="用户列表">
<el-button icon="el-icon-printer" class="m10" type="primary"
size="small" @click="doExportByUnion">按分工会导出
</el-button>
<el-button icon="el-icon-printer" class="m10" type="primary"
size="small" @click="doExport">导出
</el-button>
<el-button icon="el-icon-printer" class="m10" type="primary" size="small" @click="doExportByUnion">按分工会导出</el-button>
<el-button icon="el-icon-printer" class="m10" type="primary" size="small" @click="doExport">导出</el-button>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
class="vi-table" ref="table" row-key="id" style="width: 100%">
<el-table-column align="center" header-align="center" type="index"
:index="indexMethod" label="序号"
width="80px"></el-table-column>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder" class="vi-table" ref="table" row-key="id" style="width: 100%">
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
align="center"
header-align="center"
type="index"
:index="indexMethod"
label="序号"
width="80px"
></el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
></el-table-column>
<el-table-column label="操作" width="100px">
<template slot-scope="{row}">
@@ -88,51 +98,50 @@ layout("/layouts/platform.html"){
</div>
<script>
<!--#include("../../common/info/memberInfo.js"){}#-->
new Vue({
el: '#app',
el: "#app",
mixins: [initTableMixins],
dicts: ['USER_STATE', 'PERSON_TYPE', 'MEMBER_CHANGE_TYPE'],
dicts: ["USER_STATE", "PERSON_TYPE", "MEMBER_CHANGE_TYPE"],
data() {
return {
pageForm: {
year: new Date().getFullYear() - 1 + "",
memberSearchName: '',
memberSearchKeyWord: ''
memberSearchName: "",
memberSearchKeyWord: ""
},
userId: "",
unions: [],
units: [],
tableColumns: [
{prop: 'loginname', label: '工号'},
{prop: 'username', label: '姓名'},
{prop: 'sex', label: '性别'},
{prop: 'mobile', label: '联系电话'},
{prop: 'userState', label: '在职状态', sortable: true},
{prop: "preparedBy", label: "人事编制", sortable: true},
{prop: 'personType', label: '人员类型', sortable: true},
{prop: 'unionName', label: '所属工会', sortable: true},
{prop: 'unitName', label: '所属单位', sortable: true},
],
{ prop: "loginname", label: "工号" },
{ prop: "username", label: "姓名" },
{ prop: "sex", label: "性别" },
{ prop: "mobile", label: "联系电话" },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true }
]
}
},
components: {
'member-cnd': httpVueLoader('/components/module/member/MemberCnd.vue?v=' + new Date().getTime()),
"member-info": MEMBER_INFO,
"member-cnd": httpVueLoader("/components/module/member/MemberCnd.vue?v=" + new Date().getTime()),
"member-info": MEMBER_INFO
},
methods: {
openView(row){
openView(row) {
this.$refs.guava.view(() => {
this.$refs.memberInfoRef.onOpen(row.id)
})
},
doExportByUnion(){
this.$downLoad('/platform/member/info/history/doExportByUnion', { year: this.pageForm.year})
doExportByUnion() {
this.$downLoad("/platform/member/info/history/doExportByUnion", { year: this.pageForm.year })
},
doExport(){
this.$downLoad('/platform/member/info/history/doExport', this.pageForm)
doExport() {
this.$downLoad("/platform/member/info/history/doExport", this.pageForm)
},
async initData() {
if (this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN"])) {
@@ -151,7 +160,7 @@ layout("/layouts/platform.html"){
}
}
},
created(){
created() {
this.pageData()
this.initData()
}
@@ -19,8 +19,8 @@ const SCHOOL_VIEW_AND_HANDLE = {
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch"
code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
@@ -140,7 +140,7 @@ const SCHOOL_VIEW_AND_HANDLE = {
{ label: "工号", prop: "loginname" },
{ label: "性别", prop: "sex" },
{ label: "在职状态", prop: "userState" },
{ label: "人事编制", prop: "preparedBy" },
{ label: "聘用方式", prop: "preparedBy" },
{ label: "人员类型", prop: "personType" },
{ label: "所属单位", prop: "unitName" },
{ label: "是否变更", prop: "isChanged" },
@@ -17,8 +17,8 @@ const VIEW_CHANGE_TYPE_USER = {
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch"
code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
@@ -76,7 +76,7 @@ const VIEW_CHANGE_TYPE_USER = {
{ prop: "loginname", label: "工号", sortable: true },
{ prop: "username", label: "姓名", sortable: true },
{ prop: "userState", label: "在职状态", sortable: true },
{ prop: "preparedBy", label: "人事编制", sortable: true },
{ prop: "preparedBy", label: "聘用方式", sortable: true },
{ prop: "personType", label: "人员类型", sortable: true },
{ prop: "unionName", label: "所属工会", sortable: true },
{ prop: "unitName", label: "所属单位", sortable: true },
@@ -32,8 +32,8 @@ const VERIFICATION_SET_USER_LIST = {
<dict-select v-model="pageForm.personType" placeholder="人员类型" @change="doSearch"
code="PERSON_TYPE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch"
code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="变更类型">
@@ -26,8 +26,8 @@ const VERIFICATION_SHOW_SELECTION_USERS = {
<dict-select v-model="pageForm.userState" placeholder="在职状态" @change="doSearch"
code="USER_STATE"></dict-select>
</search-item>
<search-item label="人事编制">
<dict-select v-model="pageForm.preparedBy" placeholder="人事编制" @change="doSearch"
<search-item label="聘用方式">
<dict-select v-model="pageForm.preparedBy" placeholder="聘用方式" @change="doSearch"
code="PREPARED_BY"></dict-select>
</search-item>
<search-item label="人员类型">
@@ -43,7 +43,7 @@ const VERIFICATION_SHOW_SELECTION_USERS = {
<el-table-column label="姓名" prop="username"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="在职状态" prop="userState"></el-table-column>
<el-table-column label="人事编制" prop="preparedBy"></el-table-column>
<el-table-column label="聘用方式" prop="preparedBy"></el-table-column>
<el-table-column label="人员类型" prop="personType"></el-table-column>
<el-table-column label="所属工会" prop="unionName"></el-table-column>
<el-table-column label="所属单位" prop="unitName"></el-table-column>