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