Files
UNION_NSI/target/classes/views/platform/member/apply/index.html
T
2026-09-08 19:49:21 +08:00

561 lines
32 KiB
HTML

<!--#
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>
<!--#
}
#-->