first commit
This commit is contained in:
@@ -0,0 +1,436 @@
|
||||
<style>
|
||||
.el-tabs__content {
|
||||
padding-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava v-model="guavaIndex" ref="guava">
|
||||
<template>
|
||||
<el-card shadow="never">
|
||||
<div class="search">
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">职工信息:</div>
|
||||
<div class="search-item-option">
|
||||
<el-input placeholder="请输入内容" clearable v-model="pageForm.searchKeyword"
|
||||
@keyup.enter.native="doSearch" style="width: 100%">
|
||||
<el-select v-model="pageForm.searchName" slot="prepend" placeholder="查询类型"
|
||||
style="width: 80px;">
|
||||
<el-option label="姓名" value="u.username"></el-option>
|
||||
<el-option label="工号" value="u.loginname"></el-option>
|
||||
</el-select>
|
||||
</el-input>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">申请时间:</div>
|
||||
<div class="search-item-option">
|
||||
<el-date-picker style="width: 100%"
|
||||
v-model="pageForm.dateRange"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--<div class="search-item">
|
||||
<div class="search-item-label">会员状态:</div>
|
||||
<div class="search-item-option">
|
||||
<dict-select v-model="pageForm.memberStatus" style="width: 100%" clearable
|
||||
placeholder="会员状态" code="memberStatusText"></dict-select>
|
||||
</div>
|
||||
</div>-->
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">所属工会:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select placeholder="所属工会" v-model="pageForm.unionId" style="width: 100%;"
|
||||
clearable
|
||||
filterable
|
||||
@change="flushUnits" @clear="flushUnits">
|
||||
<el-option v-for="item in unions" :label="item.unionname"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="search-item">
|
||||
<div class="search-item-label">所属单位:</div>
|
||||
<div class="search-item-option">
|
||||
<el-select placeholder="所属单位" v-model="pageForm.unitId" style="width: 100%;"
|
||||
@change="getThreeUnits"
|
||||
clearable
|
||||
filterable>
|
||||
<el-option v-for="item in units" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="search-item">-->
|
||||
<!-- <div class="search-item-label">工会小组:</div>-->
|
||||
<!-- <div class="search-item-option">-->
|
||||
<!-- <el-select v-model="pageForm.unionGroupId" style="width: 100%"-->
|
||||
<!-- filterable-->
|
||||
<!-- clearable-->
|
||||
<!-- @change="getThreeUnits"-->
|
||||
<!-- placeholder="请选择">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in unionGroups"-->
|
||||
<!-- :key="item.id"-->
|
||||
<!-- :label="item.groupName"-->
|
||||
<!-- :value="item.id">-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<!-- <div class="search-item">-->
|
||||
<!-- <div class="search-item-label">组成科室:</div>-->
|
||||
<!-- <div class="search-item-option">-->
|
||||
<!-- <el-select v-model="pageForm.threeUnitId" style="width: 100%" filterable-->
|
||||
<!-- clearable-->
|
||||
<!-- placeholder="请选择">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in threeUnits"-->
|
||||
<!-- :key="item.id"-->
|
||||
<!-- :label="item.name"-->
|
||||
<!-- :value="item.id">-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
|
||||
<div class="search-query">
|
||||
<el-button type="primary" icon="el-icon-search" @click="doSearch">搜索</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</el-card>
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="申请列表" :app="this">
|
||||
<template #func>
|
||||
<el-radio-group v-model="pageForm.audit" @change="doSearch" size="small"
|
||||
style="margin-bottom: -7.5px">
|
||||
<el-radio-button :label="0">全部</el-radio-button>
|
||||
<el-radio-button :label="1">已审核</el-radio-button>
|
||||
<el-radio-button :label="2">未审核</el-radio-button>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tableLoading" :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
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
show-overflow-tooltip
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
>
|
||||
<template v-if="column.prop=='stateId'" scope="{row}">
|
||||
<vi-table-state :state="row"></vi-table-state>
|
||||
</template>
|
||||
<template v-else-if="column.prop==='unitname'" scope="{row}">
|
||||
{{isDisPlayCode?'('+row.unitcode+')':null}}{{row.unitname}}
|
||||
</template>
|
||||
<template v-else-if="column.prop==='unionname'" scope="{row}">
|
||||
{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
|
||||
min-width="100px">
|
||||
<template scope="{row}">
|
||||
<el-button size="small" :loading="row.loading" v-if="row.audit" type="primary"
|
||||
@click="openAudit(row,true)">审核
|
||||
</el-button>
|
||||
<el-button size="small" :loading="row.loading" v-else @click="openAudit(row,false)">查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
</template>
|
||||
<template #edit>
|
||||
<el-tabs v-model="active" v-if="guavaIndex==='edit'">
|
||||
<el-tab-pane label="个人信息" name="info">
|
||||
<member ref="memberInfo" :id="info.userId" view></member>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="院级工会审核" name="union">
|
||||
|
||||
<el-form :model="formData" ref="form" :rules="formRules"
|
||||
label-width="120px" label-suffix=":">
|
||||
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
|
||||
<template v-if="!info.unionAudit&&source==1">
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="username" label="审核人员">
|
||||
<el-input v-model="formData.username"
|
||||
disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="auditTime" label="审核时间">
|
||||
<el-input v-model="formData.auditTime" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item prop="opinion" label="审核意见">
|
||||
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
|
||||
placeholder="请填写您的审核意见"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<div style="float: right;margin: 20px 0">
|
||||
<el-button @click="doAudit(false)" :loading="submitLoading">拒
|
||||
绝
|
||||
</el-button>
|
||||
<el-button type="primary" @click="doAudit(true)"
|
||||
:loading="submitLoading">通
|
||||
过
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-row :gutter="20" v-if="info&&info.unionAudit">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
<span>{{ info.unionAudit.username }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
<span>{{ info.unionAudit.auditTime }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
<span>{{ info.unionAudit.auditOpinion }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-else type="flex" justify="center">
|
||||
<el-form-item label="暂无审核信息">
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="校工会审核" name="school"
|
||||
v-if="info.unionAudit">
|
||||
<el-form class="demo-table-expand" :model="formData" ref="form" :rules="formRules"
|
||||
label-width="120px" label-suffix=":">
|
||||
|
||||
<vi-title title="审核信息"></vi-title>
|
||||
|
||||
<template v-if="!info.schoolAudit&&source==2">
|
||||
|
||||
<el-row gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="username" label="审核人员">
|
||||
<el-input v-model="formData.username"
|
||||
disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="auditTime" label="审核时间">
|
||||
<el-input v-model="formData.auditTime" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form-item prop="opinion" label="审核意见">
|
||||
<el-input type="textarea" v-model="formData.auditOpinion" rows="4" maxlength="500"
|
||||
placeholder="请填写您的审核意见"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
<div style="float: right;margin: 20px 0">
|
||||
<el-button @click="doAudit(false)" :loading="submitLoading">拒
|
||||
绝
|
||||
</el-button>
|
||||
<el-button type="primary" @click="doAudit(true)"
|
||||
:loading="submitLoading">通
|
||||
过
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-row :gutter="20" v-if="info&&info.schoolAudit">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核人员">
|
||||
<span>{{ info.schoolAudit.username }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核时间">
|
||||
<span>{{ info.schoolAudit.auditTime }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="审核意见">
|
||||
<span>{{ info.schoolAudit.auditOpinion }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row v-else type="flex" justify="center">
|
||||
<el-form-item label="暂无审核信息">
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
active: 'info',
|
||||
submitLoading: false,
|
||||
formRules: {},
|
||||
info: {},
|
||||
formData: {},
|
||||
pageForm: {
|
||||
unionId: null,
|
||||
unitId: null,
|
||||
threeUnitId: null,
|
||||
unionGroupId: null,
|
||||
source: source,
|
||||
searchName: "u.username",
|
||||
audit: 2
|
||||
},
|
||||
unions: [],
|
||||
tableColumns: [
|
||||
{prop: 'loginname', label: '工号'},
|
||||
{prop: 'username', label: '姓名'},
|
||||
{prop: 'sex', label: '性别'},
|
||||
{prop: 'mobile', label: '联系电话'},
|
||||
{prop: 'unionname', label: '所属工会', sortable: true},
|
||||
{prop: 'unitname', label: '所属单位', sortable: true},
|
||||
// {prop: 'threeUnitName', label: '所在科室', sortable: true},
|
||||
// {prop: 'unionGroupName', label: '工会小组', sortable: true},
|
||||
{prop: 'applyDate', label: '申请时间', sortable: true},
|
||||
{prop: 'stateId', label: '状态', sortable: true},
|
||||
],
|
||||
units: []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'guava': httpVueLoader('/components/plugins/Guava.vue'),
|
||||
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
|
||||
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
|
||||
},
|
||||
methods: {
|
||||
async doAudit(pass) {
|
||||
this.formData.auditPass = pass
|
||||
this.submitLoading = true
|
||||
const resp = await $.post("/platform/member/apply/audit/doAudit", this.formData)
|
||||
this.submitLoading = false
|
||||
if(resp.code===0){
|
||||
this.pageData()
|
||||
this.$refs.guava.index()
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
}
|
||||
},
|
||||
async openAudit(row, audit) {
|
||||
this.$set(row, "loading", true)
|
||||
const resp = await $.get("/platform/member/common/findApplyInfo", {id: row.id})
|
||||
this.$set(row, "loading", false)
|
||||
if(resp.code===0){
|
||||
const data = resp.data
|
||||
data.audit = audit
|
||||
this.info = data
|
||||
|
||||
if (audit) {
|
||||
if (this.pageForm.source == 1) {
|
||||
this.active = 'union'
|
||||
} else if (this.pageForm.source == 2) {
|
||||
this.active = 'school'
|
||||
}
|
||||
} else {
|
||||
this.active = 'info'
|
||||
}
|
||||
|
||||
this.$refs.guava.edit()
|
||||
|
||||
if (this.$refs['form']) {
|
||||
this.$refs['form'].resetFields()
|
||||
}
|
||||
this.formData = {
|
||||
recordId: row.id,
|
||||
username: "${@shiro.getPrincipalProperty('username')}",
|
||||
auditTime: moment().format('YYYY-MM-DD'),
|
||||
}
|
||||
}else{
|
||||
this.notifyWarning(resp.msg)
|
||||
this.info = {}
|
||||
}
|
||||
},
|
||||
|
||||
pageData() {
|
||||
sublime.showLoadingbar();
|
||||
this.tableLoading = true
|
||||
this.pageForm.date = JSON.stringify(this.pageForm.dateRange)
|
||||
$.post("/platform/member/apply/audit/pageData", this.pageForm, (data) => {
|
||||
sublime.closeLoadingbar();
|
||||
this.tableLoading = false
|
||||
if (data.code == 0) {
|
||||
this.tableData = data.data.list;
|
||||
this.pageForm.totalCount = data.data.totalCount;
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
}, "json");
|
||||
},
|
||||
async flushUnits() {
|
||||
this.$set(this.pageForm, "unitId", null)
|
||||
this.$set(this.pageForm, "unionGroupId", null)
|
||||
this.$set(this.pageForm, "threeUnitId", null)
|
||||
this.units = []
|
||||
this.unionGroups = []
|
||||
this.threeUnits = []
|
||||
if (this.pageForm.unionId) {
|
||||
this.units = await getUnits(this.pageForm.unionId)
|
||||
this.unionGroups = await unionGroupsByUnionId(this.pageForm.unionId)
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.pageData();
|
||||
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
|
||||
this.unions = await getUnions(null, false)
|
||||
} else {
|
||||
this.unions = await getUnions(null, true)
|
||||
this.$set(this.pageForm, 'unionId', this.unions ? this.unions[0].id : null)
|
||||
this.flushUnits()
|
||||
}
|
||||
this.flushUnits()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
@@ -0,0 +1,12 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<script>
|
||||
window.source = 2
|
||||
</script>
|
||||
<!--#include("/platform/member/apply/audit/Layout.html"){}#-->
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,12 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<script>
|
||||
window.source = 1
|
||||
</script>
|
||||
<!--#include("/platform/member/apply/audit/Layout.html"){}#-->
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,560 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.v-body {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #f0f2f5;
|
||||
}
|
||||
|
||||
.v-card {
|
||||
width: calc(100% - 0px);
|
||||
height: calc(100% - 0px);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.transition-row {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.transition-item {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
|
||||
.demo-table-expand {
|
||||
font-size: 0;
|
||||
}
|
||||
|
||||
.demo-table-expand label {
|
||||
color: #99a9bf;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava" style="width: 100%;height: 100%">
|
||||
<el-card class="box-card" shadow="never">
|
||||
<template #header>
|
||||
<h3 style="color: #1867b0">入会申请</h3>
|
||||
</template>
|
||||
<el-form :model="formData" ref="form" label-width="0" :disabled="formDisabled">
|
||||
<border-table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>姓名</th>
|
||||
<td>
|
||||
<el-form-item prop="username">
|
||||
{{formData.username}}
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>工号</th>
|
||||
<td>
|
||||
<el-form-item prop="loginname">
|
||||
{{formData.loginname}}
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>电子照</th>
|
||||
<td>
|
||||
<el-form-item prop="avatar">
|
||||
<image-upload :height="100"
|
||||
:width="100"
|
||||
:limit="1"
|
||||
:file-type="['png','jpg']"
|
||||
:file-size="10"
|
||||
:is-show-tip="false"
|
||||
v-model="formData.avatar"
|
||||
></image-upload>
|
||||
</el-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>性别</th>
|
||||
<td>
|
||||
<el-form-item prop="sex"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-radio-group v-model="formData.sex">
|
||||
<el-radio label="男" border size="small">男
|
||||
</el-radio>
|
||||
<el-radio label="女" border size="small">女
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>出生日期</th>
|
||||
<td>
|
||||
<el-form-item prop="birthday"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-date-picker style="width: 100%" v-model="formData.birthday" format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd" type="date"
|
||||
placeholder="出生日期"></el-date-picker>
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>出生地点</th>
|
||||
<td>
|
||||
<el-form-item prop="birthPlace"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="出生地点"
|
||||
v-model="formData.birthPlace"></el-input>
|
||||
</el-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>民族</th>
|
||||
<td>
|
||||
<el-form-item prop="nation"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-select placeholder="民族" style="width: 100%" filterable
|
||||
v-model="formData.nation">
|
||||
<el-option v-for="nation in nationOptions" :key="nation" :value="nation"
|
||||
:label="nation"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>政治面貌</th>
|
||||
<td>
|
||||
<el-form-item prop="political"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input maxlength="100" placeholder="政治面貌"
|
||||
v-model="formData.political"></el-input>
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>学历</th>
|
||||
<td>
|
||||
<el-form-item prop="education"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<dict-select v-model="formData.education" style="width: 100%"
|
||||
placeholder="请选择学历"
|
||||
code="Education"></dict-select>
|
||||
</el-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>所属单位</th>
|
||||
<td>
|
||||
<el-form-item prop="unitid">
|
||||
<el-select placeholder="所属单位"
|
||||
style="width: 100%"
|
||||
filterable
|
||||
@change="unitChange"
|
||||
v-model="formData.unitid">
|
||||
<el-option v-for="unit in unitOptions" :key="unit.id" :value="unit.id"
|
||||
:label="unit.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>职务</th>
|
||||
<td>
|
||||
<el-form-item prop="position"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input v-model="formData.position" placeholder="职务"></el-input>
|
||||
</el-form-item>
|
||||
</td>
|
||||
<th>籍贯</th>
|
||||
<td>
|
||||
<el-form-item prop="hometown"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input v-model="formData.hometown" placeholder="籍贯"></el-input>
|
||||
</el-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>个人工作简历</th>
|
||||
<td colspan="5">
|
||||
<el-form-item prop="vita"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input maxlength="200"
|
||||
placeholder="请填写个人工作简历"
|
||||
v-model="formData.vita"
|
||||
type="textarea"
|
||||
rows="3"></el-input>
|
||||
</el-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>家庭成员</th>
|
||||
<td colspan="5">
|
||||
<el-table :data="formData.family" border size="mini" style="width: 100%">
|
||||
<el-table-column prop="relation" label="与本人关系" align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'family.'+$index+'.relation'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="请输入与本人关系" maxlength="30"
|
||||
v-model="row.relation"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'family.'+$index+'.name'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="请输入姓名" maxlength="100"
|
||||
v-model="row.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="unit" label="单位" align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'family.'+$index+'.unit'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="请输入单位" maxlength="100"
|
||||
v-model="row.unit" clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'family.'+$index+'.remark'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="请输入备注" maxlength="100"
|
||||
v-model="row.remark" clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="100px" align="center"
|
||||
header-align="center">
|
||||
<template slot="header" slot-scope="scope">
|
||||
<el-button type="primary"
|
||||
size="mini"
|
||||
@click="formData.family.push({})">
|
||||
添加
|
||||
</el-button>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="formData.family.length===0"
|
||||
@click="formData.family.splice(scope.$index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>婚姻状况</th>
|
||||
<td :colspan="2">
|
||||
<el-form-item prop="maritalStatus.unmarried">
|
||||
<div style="display:flex;justify-content: space-between">
|
||||
<span style="width: 100px">未婚</span>
|
||||
<el-checkbox v-model="formData.maritalStatus.unmarried"></el-checkbox>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="maritalStatus">
|
||||
<div style="display:flex;justify-content: space-between">
|
||||
<span style="width: 100px">初婚</span>
|
||||
<el-date-picker type="date"
|
||||
v-model="formData.maritalStatus.firstMarriageDate"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy年MM月dd日"></el-date-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="maritalStatus">
|
||||
<div style="display:flex;justify-content: space-between">
|
||||
<span style="width: 100px">再婚</span>
|
||||
<el-date-picker type="date"
|
||||
v-model="formData.maritalStatus.remarryDate"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy年MM月dd日"></el-date-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="maritalStatus">
|
||||
<div style="display:flex;justify-content: space-between">
|
||||
<span style="width: 100px">离婚</span>
|
||||
<el-date-picker type="date"
|
||||
v-model="formData.maritalStatus.divorceDate"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy年MM月dd日"></el-date-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item prop="maritalStatus">
|
||||
<div style="display:flex;justify-content: space-between">
|
||||
<span style="width: 100px">丧偶</span>
|
||||
<el-date-picker type="date"
|
||||
v-model="formData.maritalStatus.bereaveDate"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy年MM月dd日"></el-date-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>生育情况</th>
|
||||
<td colspan="5">
|
||||
<el-table :data="formData.fertilityCircumstances" border size="mini"
|
||||
style="width: 100%">
|
||||
<el-table-column prop="parity"
|
||||
label="胎次"
|
||||
align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'fertilityCircumstances.'+$index+'.parity'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="胎次"
|
||||
maxlength="30"
|
||||
v-model="row.parity"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="childName"
|
||||
label="子女姓名"
|
||||
align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'fertilityCircumstances.'+$index+'.childName'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="子女姓名"
|
||||
maxlength="30"
|
||||
v-model="row.childName"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sex"
|
||||
label="性别"
|
||||
align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'fertilityCircumstances.'+$index+'.sex'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-radio v-model="row.sex" label="男" border size="small">男
|
||||
</el-radio>
|
||||
<el-radio v-model="row.sex" label="女" border size="small">女
|
||||
</el-radio>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="birthday"
|
||||
label="出生年月"
|
||||
align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'fertilityCircumstances.'+$index+'.birthday'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="出生年月"
|
||||
v-model="row.birthday"
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100px" align="center"
|
||||
header-align="center">
|
||||
<template slot="header" slot-scope="scope">
|
||||
<el-button type="primary"
|
||||
size="mini"
|
||||
@click="formData.fertilityCircumstances.push({})">
|
||||
添加
|
||||
</el-button>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="formData.fertilityCircumstances.length===0"
|
||||
@click="formData.fertilityCircumstances.splice(scope.$index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>独生子女情况</th>
|
||||
<td colspan="5">
|
||||
<el-table :data="formData.singleChildList" border size="mini"
|
||||
style="width: 100%">
|
||||
<el-table-column prop="certificateProcessingDate" label="办证年月日">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'singleChildList.'+$index+'.certificateProcessingDate'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="办证年月日"
|
||||
v-model="row.certificateProcessingDate"
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="certificateNumber"
|
||||
label="办证编号"
|
||||
align="center"
|
||||
header-align="center">
|
||||
<template scope="{row,$index}">
|
||||
<el-form-item label-width="0"
|
||||
:prop="'singleChildList.'+$index+'.certificateNumber'"
|
||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||
<el-input placeholder="办证编号"
|
||||
maxlength="30"
|
||||
v-model="row.certificateNumber"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100px" align="center"
|
||||
header-align="center">
|
||||
<template slot="header" slot-scope="scope">
|
||||
<el-button type="primary"
|
||||
size="mini"
|
||||
@click="formData.singleChildList.push({certificateProcessingDate:null,certificateNumber:null})">
|
||||
添加
|
||||
</el-button>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-button type="danger" icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="formData.singleChildList.length===0"
|
||||
@click="formData.singleChildList.splice(scope.$index,1)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</border-table>
|
||||
|
||||
<el-row type="flex" justify="space-between" align="center" style="padding: 20px">
|
||||
<el-checkbox v-model="agree">
|
||||
阅读须知:我自愿加入中华全国总工会,遵守工会章程,执行工会决议,积极参加工会活动,为把我国建设成为富强、民主、文明的社会主义国家而努力奋斗。
|
||||
</el-checkbox>
|
||||
<el-button @click="dialogSubmit" type="primary">提交</el-button>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
family: [],
|
||||
maritalStatus: {
|
||||
unmarried: true,
|
||||
firstMarriageDate: null,
|
||||
remarryDate: null,
|
||||
bereaveDate: null,
|
||||
divorceDate: null
|
||||
}
|
||||
},
|
||||
nationOptions: nation,
|
||||
unitOptions: [],
|
||||
agree: false,
|
||||
formDisabled: false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
|
||||
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
|
||||
},
|
||||
methods: {
|
||||
dialogSubmit() {
|
||||
this.$refs['form'].validate(async (valid) => {
|
||||
if (valid) {
|
||||
if (!this.agree) {
|
||||
this.$message.warning('请先勾选须知')
|
||||
return
|
||||
}
|
||||
|
||||
const {
|
||||
data,
|
||||
code,
|
||||
msg
|
||||
} = await $.post(loc() + '/dialogSubmit', {user: JSON.stringify(this.formData)})
|
||||
if (code === 0) {
|
||||
this.notifySuccess(msg)
|
||||
sublime.jumpPagePjax('/platform/member/apply/mine')
|
||||
} else {
|
||||
this.notifyWarning(msg)
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
async unitChange(v) {
|
||||
const unit = this.unitOptions.find(x => x.id == v)
|
||||
if (unit) {
|
||||
this.formData.unionid = unit.unionid
|
||||
this.formData.unionname = unit.unionname
|
||||
} else {
|
||||
this.formData.unionid = ''
|
||||
this.formData.unionname = ''
|
||||
}
|
||||
},
|
||||
|
||||
exportMember() {
|
||||
window.open('/platform/member/apply/submit/exportMember')
|
||||
},
|
||||
|
||||
async getUserInfo() {
|
||||
const {data} = await $.post(loc() + '/userInfo')
|
||||
if (data.maritalStatus == null) {
|
||||
data.maritalStatus = {}
|
||||
}
|
||||
data.maritalStatus.unmarried = false
|
||||
this.formData = data
|
||||
},
|
||||
async getCurrentState() {
|
||||
const {data} = await $.post(loc() + '/currentState')
|
||||
const member = ${@shiro.getPrincipalProperty('member')}
|
||||
if (member === 1) {
|
||||
this.formDisabled = true
|
||||
this.$alert('您已是正式会员,无需再次申请!', '提示', {
|
||||
confirmButtonText: '确定'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
if (data != null) {
|
||||
const stateName = data.auditState.stateName
|
||||
if ([10, 20].includes(data.stateId)) {
|
||||
this.formDisabled = true
|
||||
this.$alert('您的申请正处于' + stateName + ',请耐心等候!', '提示', {
|
||||
confirmButtonText: '确定'
|
||||
})
|
||||
} else if ([15, 25].includes(data.stateId)) {
|
||||
this.$alert('您的申请' + stateName + ',请到我的申请查看原因后重新填写申请!', '提示', {
|
||||
confirmButtonText: '确定'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
this.unitOptions = await getUnionUnits()
|
||||
this.getCurrentState()
|
||||
this.getUserInfo()
|
||||
|
||||
}
|
||||
})
|
||||
</script>
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,97 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<guava ref="guava">
|
||||
<el-card shadow="never" class="mt10">
|
||||
<table-tool label="申请列表" :app="this">
|
||||
<template #func>
|
||||
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" style="width: 100%" row-key="id" @sort-change="pageOrder"
|
||||
v-loading="tableLoading" :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
|
||||
align="center"
|
||||
header-align="center"
|
||||
v-for="column in tableColumns"
|
||||
show-overflow-tooltip
|
||||
:label="column.label"
|
||||
:prop="column.prop"
|
||||
:sortable="column.sortable"
|
||||
>
|
||||
<template v-if="column.prop=='stateId'" scope="{row}">
|
||||
<vi-table-state :state="row"></vi-table-state>
|
||||
</template>
|
||||
<template v-else-if="column.prop==='unitname'" scope="{row}">
|
||||
{{isDisPlayCode?'('+row.unitcode+')':null}}{{row.unitname}}
|
||||
</template>
|
||||
<template v-else-if="column.prop==='unionname'" scope="{row}">
|
||||
{{isDisPlayCode?'('+row.unioncode+')':null}}{{row.unionname}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column prop="userOnline" align="center" header-align="center" label="操作"
|
||||
min-width="100px">
|
||||
<template scope="{row}">
|
||||
<el-button size="mini" @click="openView(row.userId)" type="primary">
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<template #view>
|
||||
<member ref="memberView" view :id="userId" v-if="userId"></member>
|
||||
</template>
|
||||
</guava>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var vue = new Vue({
|
||||
el: '#app',
|
||||
mixins: [initTableMixins],
|
||||
components: {
|
||||
'member': httpVueLoader('/components/member/MemberInfo.vue?v=1.0.3'),
|
||||
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
tableColumns: [
|
||||
{prop: 'loginname', label: '工号'},
|
||||
{prop: 'username', label: '姓名'},
|
||||
{prop: 'sex', label: '性别'},
|
||||
{prop: 'mobile', label: '联系电话'},
|
||||
{prop: 'unionname', label: '所属工会', sortable: true},
|
||||
{prop: 'unitname', label: '所属单位', sortable: true},
|
||||
{prop: 'applyTime', label: '申请时间', sortable: true},
|
||||
{prop: 'stateId', label: '状态', sortable: true},
|
||||
],
|
||||
userId: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openView(userId) {
|
||||
this.$refs.guava.view()
|
||||
this.userId = userId
|
||||
// this.$refs.memberView
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user