This commit is contained in:
Paidax
2024-07-23 09:52:35 +08:00
parent f734d9511c
commit e2f6a9f4b1
221 changed files with 12004 additions and 14330 deletions
@@ -1,75 +1,98 @@
<style>
.el-descriptions__table {
table-layout: fixed !important;
}
.el-descriptions-item__cell {
text-align: center !important;
}
</style>
<template>
<div>
<el-tabs tab-position="top" style="padding: 10px" v-model="activeName" v-loading="loading">
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
<el-tab-pane label="申请信息" name="1">
<div style="padding: 10px">
<border-table>
<table>
<tr>
<th>经办人</th>
<td>{{ viewData.manager_name }}</td>
<th>被慰问人</th>
<td>{{ viewData.be_username }}</td>
<th>被慰问方式</th>
<td>{{ viewData.way }}</td>
</tr>
<tr>
<th>慰问类型</th>
<td>{{ viewData.typename }}</td>
<th>{{ labelName }}</th>
<td>{{ viewData.condolencetime }}</td>
<th>慰问金额</th>
<td>{{ viewData.money }}元</td>
</tr>
<tr>
<th>收款人</th>
<td>{{ viewData.payee_username }}</td>
<th>收款人卡号</th>
<td>{{ viewData.payee_bank_number }}</td>
<th>支行名称</th>
<td>{{ viewData.payee_bank_name ? viewData.payee_bank_name : '暂未填写' }}</td>
</tr>
<tr>
<th>申请时间</th>
<td>{{ viewData.apply_time }}</td>
<th>备注</th>
<td colspan="3">{{ viewData.remark }}</td>
</tr>
<el-descriptions :column="3" border class="table_fixed">
<el-descriptions-item label="经办人姓名">
{{viewData.manager_name}}
</el-descriptions-item>
<el-descriptions-item label="经办人工号">
{{viewData.manager_loginname}}
</el-descriptions-item>
<el-descriptions-item label="申请时间">
{{viewData.apply_time}}
</el-descriptions-item>
<el-descriptions-item label="慰问对象姓名">
{{viewData.be_username}}
</el-descriptions-item>
<el-descriptions-item label="慰问对象工号">
{{viewData.be_loginname}}
</el-descriptions-item>
<el-descriptions-item label="慰问对象单位">
{{viewData.be_unitname}}
</el-descriptions-item>
<el-descriptions-item label="收款人姓名">
{{viewData.payee_username}}
</el-descriptions-item>
<el-descriptions-item label="收款人工号">
{{viewData.payee_loginname}}
</el-descriptions-item>
<el-descriptions-item label="">
</el-descriptions-item>
<tr>
<th>证明材料(出院小结、结婚证明、生育证明、退休文件或通知单等)</th>
<td colspan="5">
<file-upload view :files.sync="viewData.files"
v-if="viewData.files&&viewData.files.length>0"></file-upload>
<span v-else>暂无</span>
</td>
</tr>
</table>
</border-table>
<template v-if="viewData.way == '慰问品 (C)'">
<el-divider content-position="left" style="margin-top: 0 !important;"><span style="color: #3ea1ec;">购置物品及价格</span></el-divider>
<el-table :data="viewData.goods" border size="mini" style="width: 100%">
<el-table-column sortable type="index" width="100" label="序号"
align="center" header-align="center">
</el-table-column>
<el-table-column prop="name" label="物品名称" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品名称" v-model="row.name"
type="text"></el-input>
</template>
</el-table-column>
<el-table-column prop="price" label="物品价格" align="center"
header-align="center">
<template slot-scope="{row}">
<el-input maxlength="50" placeholder="物品价格" v-model="row.price"
type="text"></el-input>
</template>
</el-table-column>
</el-table>
<el-descriptions-item label="慰问类型">
{{viewData.typename}}
</el-descriptions-item>
<el-descriptions-item label="慰问金额">
{{viewData.money}}
</el-descriptions-item>
<el-descriptions-item label="慰问方式">
{{viewData.way}}
</el-descriptions-item>
<el-descriptions-item label="慰问时间">
{{viewData.occur_time}}
</el-descriptions-item>
<el-descriptions-item v-if="viewData.type === '2'" label="生育孩次">
{{viewData.birth_child_num}}
</el-descriptions-item>
<template v-if="viewData.type === '3' || viewData.type === '4'">
<el-descriptions-item label="治疗医院">
{{viewData.the_hospital}}
</el-descriptions-item>
<el-descriptions-item label="病房号">
{{viewData.the_hospital_house_num}}
</el-descriptions-item>
<el-descriptions-item label="床号">
{{viewData.the_hospital_house_bed_num}}
</el-descriptions-item>
<el-descriptions-item v-if="viewData.type == '4'" label="患病病种">
{{viewData.hospital_by}}
</el-descriptions-item>
</template>
</div>
<el-descriptions-item v-if="viewData.type == '6'" label="直系亲属">
{{viewData.deadimmediatefamily}}
</el-descriptions-item>
<el-descriptions-item label="申请事由" span="3">
{{viewData.remark}}
</el-descriptions-item>
<el-descriptions-item label="附件" span="3">
<file-upload v-if="viewData.files&&viewData.files.length"
:files="viewData.files"
:view="true"></file-upload>
<span v-else>暂无</span>
</el-descriptions-item>
<el-descriptions-item label="签字" span="3">
<div class="text-left">
<el-image v-if="viewData.manager_sign_data"
style="width: 300px; height: 100px"
:src="viewData.manager_sign_data"
fit="contain"></el-image>
<span v-else>暂无</span>
</div>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="工会小组长审核信息" name="2" v-if="hasPane(2)&&viewData.ulr">
<el-form label-width="130px" style="padding: 20px 0">
@@ -92,7 +115,7 @@
<el-form-item label="审核意见:">
<div class="textarea-div">{{ viewData.ulr.opinion ? viewData.ulr.opinion : '暂无' }}</div>
</el-form-item>
<el-form-item label="签&emsp;&emsp;字:">
<el-form-item label="签&emsp;&emsp;字">
<el-image v-if="viewData.ulr.sign"
style="width: 300px; height: 100px"
:src="viewData.ulr.sign"
@@ -101,68 +124,84 @@
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="基层工会审核信息" name="3" v-if="hasPane(3)&&viewData.ucr">
<el-form label-width="130px" style="padding: 20px 0">
<el-tab-pane label="分工会审核信息" name="3" v-if="viewData.ucr">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
</el-form-item>
<el-descriptions :column="2" border class="table_fixed">
<el-descriptions-item label="审核人员">
{{ viewData.ucr.username }}
</el-descriptions-item>
<el-descriptions-item label="审核时间">
{{ viewData.ucr.time }}
</el-descriptions-item>
<el-descriptions-item label="审核意见" span="2">
<div class="text-left">
{{ viewData.ucr.opinion ? viewData.ucr.opinion : '暂无' }}
</div>
</el-descriptions-item>
<el-descriptions-item label="签字" span="2">
<div class="text-left">
<el-image v-if="viewData.ucr.sign"
style="width: 300px; height: 100px"
:src="viewData.ucr.sign"
fit="contain"></el-image>
<span v-else>暂无</span>
</div>
</el-descriptions-item>
</el-descriptions>
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人员:">
{{ viewData.ucr.username }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间:">
{{ viewData.ucr.time }}
</el-form-item>
</el-col>
</el-row>
<el-form-item label="审核意见:">
<div class="textarea-div">{{ viewData.ucr.opinion ? viewData.ucr.opinion : '暂无' }}</div>
</el-form-item>
<el-form-item label="签&emsp;&emsp;字:">
<el-image v-if="viewData.ucr.sign"
style="width: 300px; height: 100px"
:src="viewData.ucr.sign"
fit="contain"></el-image>
<span v-else>暂无</span>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="校工会主席审核信息" name="4" v-if="hasPane(4)&&viewData.vcr">
<el-form label-width="130px" style="padding: 20px 0">
<el-tab-pane label="校工会审核信息" name="4" v-if="viewData.fr">
<el-form-item label="审核信息&emsp;" label-width="135px" class="view-header">
</el-form-item>
<el-descriptions :column="2" border class="table_fixed">
<el-descriptions-item label="审核人员">
{{ viewData.fr.username }}
</el-descriptions-item>
<el-descriptions-item label="审核时间">
{{ viewData.fr.time }}
</el-descriptions-item>
<el-descriptions-item label="审核意见" span="2">
<div class="text-left">
{{ viewData.fr.opinion ? viewData.fr.opinion : '暂无' }}
</div>
</el-descriptions-item>
<el-descriptions-item label="签字" span="2">
<div class="text-left">
<el-image v-if="viewData.fr.sign"
style="width: 300px; height: 100px"
:src="viewData.fr.sign"
fit="contain"></el-image>
<span v-else>暂无</span>
</div>
</el-descriptions-item>
</el-descriptions>
<el-row gutter="20">
<el-col :span="12">
<el-form-item label="审核人员:">
{{ viewData.vcr.username }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间:">
{{ viewData.vcr.time }}
</el-form-item>
</el-col>
</el-row>
<el-form-item label="审核意见:">
<div class="textarea-div">{{ viewData.vcr.opinion ? viewData.vcr.opinion : '暂无' }}</div>
</el-form-item>
<el-form-item label="签&emsp;&emsp;字:">
<el-image v-if="viewData.vcr.sign"
style="width: 300px; height: 100px"
:src="viewData.vcr.sign"
fit="contain"></el-image>
<span v-else>暂无</span>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="校工会主席审核信息" name="5" v-if="viewData.vcr">
<el-descriptions :column="2" border class="table_fixed">
<el-descriptions-item label="审核人员">
{{ viewData.vcr.username }}
</el-descriptions-item>
<el-descriptions-item label="审核时间">
{{ viewData.vcr.time }}
</el-descriptions-item>
<el-descriptions-item label="审核意见" span="2">
<div class="text-left">
{{ viewData.vcr.opinion ? viewData.vcr.opinion : '暂无' }}
</div>
</el-descriptions-item>
<el-descriptions-item label="签字" span="2">
<div class="text-left">
<el-image v-if="viewData.vcr.sign"
style="width: 300px; height: 100px"
:src="viewData.vcr.sign"
fit="contain"></el-image>
<span v-else>暂无</span>
</div>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane v-if="handle" :label="label" name="999">
<slot name="handle"></slot>
@@ -199,7 +238,6 @@ module.exports = {
activeName: "1",
viewData: {},
loading: true,
labelName:''
}
},
components: {
@@ -222,16 +260,6 @@ module.exports = {
condolence.toFormData(data)
this.viewData = data
if (['c7175af55693441e8233be4552cef9d5','c138149575564b159b5919a97e856642'].includes(data.type)){
this.labelName = '住院时间'
} else if (data.type === '7420d077e768480795538e1396cb4945') {
this.labelName = '结婚时间'
} else if (data.type === '29cf78eea88d40128f639b9ae7b6aaaa') {
this.labelName = '生育时间'
} else if (data.type === 'c0465e50ff1e45f49fad8938e5dad537') {
this.labelName = '退休时间'
}
} else {
this.viewData = {}
this.$message({
@@ -253,9 +281,4 @@ module.exports = {
max-height: 100px;
}
.el-divider--horizontal {
margin-top: 40px !important;
margin-bottom: 40px;
}
</style>
@@ -1,58 +1,150 @@
<template>
<div>
<van-cell class="cell-card">
<van-field readonly :value="viewData.manager_name" label="经办人" input-align="right"></van-field>
<div style="padding-bottom: 20px;">
<van-field readonly :value="viewData.apply_time" label="申请时间" input-align="right"></van-field>
<van-field readonly :value="viewData.be_username" label="被慰问人"
input-align="right"></van-field>
<van-field readonly :value="viewData.payee_username" label="收款人"
input-align="right"></van-field>
<van-field readonly :value="viewData.bank_card" label="收款人银行卡号" input-align="right"></van-field>
<van-field readonly name="type" :value="condolence.type[viewData.type]" label="慰问类型"
input-align="right"></van-field>
<van-field readonly name="way" :value="condolence.way[viewData.way]" label="慰问方式" input-align="right"></van-field>
<van-field readonly :value="viewData.money" type="number" label="慰问金额" input-align="right"></van-field>
<div v-if="['3', '5'].includes(viewData.type)">
<van-cell title="住院开始时间">
{{ viewData.starting_time }}
</van-cell>
<van-cell title="住院结束时间">
{{ viewData.end_time }}
</van-cell>
<van-cell title="住院结束时间">
{{ viewData.the_hospital }}
</van-cell>
<van-form readonly input-align="right">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
申请信息
</div>
</div>
<van-field readonly :value="viewData.remark" label="备&emsp;&emsp;注" input-align="right"
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
<!-- <van-field label="附&emsp;&emsp;件">-->
<!-- <template #input>-->
<!-- <van-uploader disabled v-model="viewData.files"></van-uploader>-->
<!-- </template>-->
<!-- </van-field>-->
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.manager_sign"/>
<van-cell-group>
<van-field readonly :value="viewData.manager_name" label="申请人"></van-field>
<van-field readonly :value="viewData.apply_time" label="申请时间"></van-field>
<van-field readonly :value="viewData.be_username" label="慰问对象"></van-field>
<van-field readonly :value="viewData.typename" name="type" label="慰问类型"></van-field>
<van-field readonly :value="viewData.money" type="number" label="慰问金额"></van-field>
<van-field readonly :value="viewData.way" name="way" label="慰问方式"></van-field>
<van-field readonly :value="viewData.occur_time" name="occur_time" label="慰问时间"></van-field>
<van-field readonly :value="viewData.birth_child_num" name="birth_child_num" v-if="viewData.type === '2'" label="生育孩次"></van-field>
<template v-if="viewData.type === '3' || viewData.type === '4'">
<van-field readonly :value="viewData.the_hospital" name="the_hospital" label="治疗医院"></van-field>
<van-field readonly :value="viewData.the_hospital_house_num" name="the_hospital_house_num" label="病房号"></van-field>
<van-field readonly :value="viewData.the_hospital_house_bed_num" name="the_hospital_house_bed_num" label="床号"></van-field>
<van-field readonly :value="viewData.hospital_by" name="hospital_by" v-if="viewData.type === '4'" label="患病病种"></van-field>
</template>
</van-field>
<van-field readonly :value="viewData.deadImmediateFamily" name="deadImmediateFamily" v-if="viewData.type === '6'" label="直系亲属"></van-field>
<van-field readonly :value="viewData.remark" label="申请事由"
input-align="left"
style="flex-flow: column"
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
<van-field label="附件" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">附&emsp;&emsp;件</div>
</template>
<template #input>
<vant-file-upload :files.sync="viewData.files" view :del="false"
v-if="viewData.files&&viewData.files.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.manager_sign_data"
v-if="viewData.manager_sign_data"/>
<span v-else>暂无</span>
</template>
</van-field>
</van-cell-group>
</van-form>
<template v-if="viewData.ucr">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
分工会审核信息
</div>
</div>
<van-cell-group>
<div style="padding-left: 16px">
<van-field label="审&ensp;核&ensp;人" :value="viewData.ucr.username" left-icon="contact"
readonly></van-field>
<van-field label="审核时间" :value="viewData.ucr.time" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.ucr.opinion ? viewData.ucr.opinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.ucr.sign"
v-if="viewData.ucr.sign"/>
<span v-else>暂无</span>
</template>
</van-field>
</div>
</van-cell-group>
</template>
<template v-if="viewData.fr">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核信息
</div>
</div>
<van-cell-group>
<div style="padding-left: 16px">
<van-field label="审&ensp;核&ensp;人" :value="viewData.fr.username" left-icon="contact"
readonly></van-field>
<van-field label="审核时间" :value="viewData.fr.time" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.fr.opinion ? viewData.fr.opinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.fr.sign"
v-if="viewData.fr.sign"/>
<span v-else>暂无</span>
</template>
</van-field>
</div>
</van-cell-group>
</template>
<template v-if="viewData.vcr">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
校工会主席审核信息
</div>
</div>
<van-cell-group>
<div style="padding-left: 16px">
<van-field label="审&ensp;核&ensp;人" :value="viewData.vcr.username" left-icon="contact"
readonly></van-field>
<van-field label="审核时间" :value="viewData.vcr.time" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.vcr.opinion ? viewData.vcr.opinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.vcr.sign"
v-if="viewData.vcr.sign"/>
<span v-else>暂无</span>
</template>
</van-field>
</div>
</van-cell-group>
</template>
<template v-if="handle">
<slot name="handle"></slot>
</template>
</van-cell>
</div>
</template>
<script>
module.exports = {
props: {
handle: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '审核'
},
id: {
type: String,
default: ''
@@ -63,13 +155,16 @@ module.exports = {
viewData: {},
}
},
components: {
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
},
methods: {
async getInfo(id) {
const {data, code, msg} = await $.get("/platform/fw/condolence/findOne", {id})
if (data) {
condolence.toFormData(data)
this.viewData = data
console.log(this.viewData.end_time)
this.viewData.hospital_stay = data.starting_time + "-" + data.end_time
} else {
this.viewData = {}
this.$toast.fail('获取信息失败');
@@ -81,3 +176,17 @@ module.exports = {
}
}
</script>
<style>
.van-cell-group__title {
padding-left: 0 !important;
}
.van-sidebar-item {
font-size: 16px !important;
text-indent: 4px !important;
}
.van-sidebar-item--select::before {
left: 5px !important;
}
</style>
@@ -37,14 +37,11 @@
</el-form-item>
<el-form-item prop="type" label="变更类型">
<!-- <dict-select v-model="formData.type" style="width: 100%" clearable placeholder="变更类型"-->
<!-- code="MemberChangeType" @change="typeChange"></dict-select>-->
<el-select v-model="formData.type" style="width: 100%" clearable placeholder="变更类型" @change="typeChange">
<el-option v-for="item in userChangeTypeList" :label="item.name" :value="item.code" :key="item.id"></el-option>
</el-select>
<dict-select v-model="formData.type" style="width: 100%" clearable placeholder="变更类型"
code="MemberChangeType" @change="typeChange"></dict-select>
</el-form-item>
<!--异动-->
<!--单位异动-->
<div v-if="formData.type==='1'">
<el-form-item prop="type" label="新&ensp;单&ensp;位">
<el-select v-model="formData.currentUnitId" style="width: 100%" filterable clearable
@@ -84,102 +81,30 @@
</el-form-item>
</el-col>
</el-row>
</div>
<div v-else-if="welfare_member&&['2'].includes(formData.type)">
<el-form-item prop="updateWelfareMember" label="福利会员">
<el-radio-group v-model="formData.updateWelfareMember" size="small">
<el-radio :label="true" border>享受福利</el-radio>
<el-radio :label="false" border>不享受福利</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="insertMember" label="工会会员">
<el-radio-group v-model="formData.insertMember" size="small">
<el-radio :label="true" border>成为会员</el-radio>
<el-radio :label="false" border>不成为会员</el-radio>
</el-radio-group>
<!--离校 离退休-->
<div v-if="formData.type && !['1','7','8'].includes(formData.type)">
<div>
<el-form-item prop="updateMember" label="工会会员资格">
<el-switch
v-model="formData.updateMember"
active-text="移除"
inactive-text="添加">
</el-switch>
</el-form-item>
</div>
<el-form-item prop="updateWelfare" label="福利会员资格">
<el-switch
v-model="formData.updateWelfare"
active-text="移除"
inactive-text="添加">
</el-switch>
</el-form-item>
</div>
<div v-else-if="welfare_member&&['7'].includes(formData.type)">
<el-form-item prop="updateWelfareMember" label="福利会员">
<el-radio-group v-model="formData.updateWelfareMember" size="small">
<el-radio :label="true" border>享受福利</el-radio>
<el-radio :label="false" border>不享受福利</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div v-else-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
<el-form-item prop="updateWelfare" label="福利会员">
<el-radio-group v-model="formData.updateWelfare" size="small">
<el-radio :label="true" border>取消享受福利</el-radio>
<el-radio :label="false" border>保留享受福利</el-radio>
</el-radio-group>
<!-- <span style="color: red">&emsp;&emsp;&emsp;温馨提醒:此操作将取消该教工正式会员资格</span>-->
</el-form-item>
<el-form-item prop="updateMember" label="工会会员">
<el-radio-group v-model="formData.updateMember" size="small">
<el-radio :label="true" border>取消会员资格</el-radio>
<el-radio :label="false" border>保留会员资格</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item prop="updateUserState" label="是否改变在职状态" style="width: 100%"
v-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
<dict-select v-model="formData.userState" style="width: 100%" clearable placeholder="变更类型"
code="userState"></dict-select>
</el-form-item>
<el-form-item prop="updateUserState" label="是否改变人员类型" style="width: 100%"
v-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
<dict-select v-model="formData.personType" style="width: 100%" clearable
placeholder="人员类型"
code="UserType"></dict-select>
</el-form-item>
</div>
<div v-else-if="formData.type==='10'">
<el-form-item prop="oldIdCard" label="原身份证号" style="width: 100%">
<el-input v-model="formData.oldIdCard" readonly type="text"></el-input>
</el-form-item>
<el-form-item prop="idCard" label="新的身份证号" style="width: 100%">
<el-input v-model="formData.idCard" placeholder="请输入新的身份证号" type="text"></el-input>
</el-form-item>
</div>
<div v-else-if="formData.type==='11'">
<el-form-item prop="oldMobile" label="原手机号码" style="width: 100%">
<el-input v-model="formData.oldMobile" readonly type="text"></el-input>
</el-form-item>
<el-form-item prop="mobile" label="新的手机号码" style="width: 100%">
<el-input v-model="formData.mobile" placeholder="请输入新的手机号码" type="text"></el-input>
</el-form-item>
</div>
<div v-else-if="formData.type==='12'">
<el-form-item prop="oldEducation" label="原学历" style="width: 100%">
<el-input v-model="formData.oldEducation" readonly type="text"></el-input>
</el-form-item>
<el-form-item prop="education" label="新的学历" style="width: 100%">
<dict-select v-model="formData.education" style="width: 100%" clearable placeholder="请选择新的学历"
code="Education"></dict-select>
</el-form-item>
</div>
<!-- <div v-else-if="welfare_member&&['2','7'].includes(formData.type)">
<el-form-item prop="updateWelfareMember" label="是否享受福利">
<el-switch
v-model="formData.updateWelfareMember"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
<span style="color: red">&emsp;&emsp;&emsp;温馨提醒:此操作将该教工设为正式会员</span>
</el-form-item>
</div>-->
<el-form-item prop="remark" label="变化原因">
<el-input v-model="formData.remark" placeholder="变化原因" type="textarea" :rows="4"></el-input>
</el-form-item>
@@ -197,11 +122,10 @@
<script>
module.exports = {
components: {
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.0'),
},
props: {
userid: {type: String},
welfare_member: {type: Boolean, default: true},
welfare_member: {type: Boolean, default: false},
},
data() {
return {
@@ -212,22 +136,18 @@ module.exports = {
formData: {},
formRules: {
type: [{required: true, message: '必选', trigger: ['blur', 'change']}],
updateWelfareMember: [{required: true, message: '必选', trigger: ['blur', 'change']}],
updateMember: [{required: true, message: '必选', trigger: ['blur', 'change']}],
updateWelfare: [{required: true, message: '必选', trigger: ['blur', 'change']}],
currentUnitId: [{required: true, message: '必选', trigger: ['blur', 'change']}],
currentThreeUnitId: [{required: true, message: '请选择新三级单位', trigger: 'change'}],
idCard: [{required: true, message: '必填', trigger: ['blur', 'change']}],
mobile: [{required: true, message: '必填', trigger: ['blur', 'change']}],
education: [{required: true, message: '必填', trigger: ['blur', 'change']}],
insertMember: [{required: true, message: '必填', trigger: ['blur', 'change']}],
currentThreeUnitId: [{required: true, message: '请选择新三级单位', trigger: 'change'}]
},
unitOptions: [],
threeUnits: [],
isThreeUnit: false,
userChangeTypeList:[],
memberChangeTypeOptions: []
}
},
watch: {
@@ -237,14 +157,16 @@ module.exports = {
},
methods: {
typeChange() {
this.$set(this.formData, "updateWelfareMember", ['2','7'].includes(this.formData.type))
this.$set(this.formData, "updateWelfare", ['2', '3', '4', '5', '6', '8'].includes(this.formData.type))
this.$set(this.formData, "updateMember", ['2', '3', '4', '5', '6', '8'].includes(this.formData.type))
this.$set(this.formData, "insertMember", ['2'].includes(this.formData.type))
console.log(this.formData.type)
this.$set(this.formData, "updateWelfare", ['3', '5'].includes(this.formData.type))
this.$set(this.formData, "updateMember", ['3', '5'].includes(this.formData.type))
},
async doSubmit() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.formData.type != 1) {
this.formData.userState = this.memberChangeTypeOptions.find(v => v.code === this.formData.type)?.name
}
this.submitLoading = true
this.$emit("submit", this.formData)
}
@@ -317,13 +239,9 @@ module.exports = {
originUnitId: resp.data.unitid,
originThreeUnitId: resp.data.threeUnitId,
originUnionId: resp.data.unionid,
userState: resp.data.userState,
personType: resp.data.personType,
// userState: resp.data.userState,
auditTime: moment().format('YYYY-MM-DD'),
notes: null,
oldIdCard:resp.data.idcard,
oldMobile:resp.data.mobile,
oldEducation:resp.data.education
notes: null
}
this.disabled = false
} else {
@@ -340,19 +258,17 @@ module.exports = {
if (resp.code === 0) {
this.unitOptions = resp.data
}
},
async getUserChangeType(){
const resp = await $.get('/platform/member/common/getUserChangType')
if (resp.code === 0){
this.userChangeTypeList = resp.data
}
},
}
},
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
await this.getUnits()
await this.flush()
await this.getUserChangeType()
this.getUnits()
this.flush()
getDictOptions('MemberChangeType').then(res => {
this.memberChangeTypeOptions = res
})
// getUnits(null).then(res => this.unitOptions = res)
}
}
@@ -1,157 +1,41 @@
<template>
<div>
<el-table :data="records" style="width: 100%" row-key="id"
@expand-change="onExpand">
<el-table-column type="expand">
<template slot-scope="{row}">
<el-form class="demo-table-expand" v-loading="row.loading"
label-position="right" label-suffix=":" label-width="120px">
<vi-title title="变更信息"></vi-title>
<el-form-item label="变更原因">
{{ row.remark }}
</el-form-item>
<!--异动-->
<template v-if="row.type==1">
<vi-title title="异动信息"></vi-title>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="原科室" v-if="isThreeUnit">
<span>{{ row.originThreeUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="原单位">
<span>{{ row.originUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="原工会">
<span>{{ row.originUnionName }}</span>
</el-form-item>
</el-col>
<el-col :span="8" v-if="isThreeUnit">
<el-form-item label="新科室">
<span>{{ row.currentThreeUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="新单位">
<span>{{ row.currentUnitName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="新工会">
<span>{{ row.currentUnionName }}</span>
</el-form-item>
</el-col>
</el-row>
</template>
<template v-if="audit_info_union&&row.info.unionAudit">
<vi-title title="基层工会审核信息"></vi-title>
<el-row :gutter="20" v-if="row.info&&row.info.unionAudit">
<el-col :span="12">
<el-form-item label="审核人员">
<span>{{ row.info.unionAudit.username }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
<span>{{ row.info.unionAudit.auditTime }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
<span>{{ row.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>
<template v-if="audit_info_school&&row.info.schoolAudit">
<vi-title title="校工会审核信息"></vi-title>
<el-row :gutter="20" v-if="row.info&&row.info.schoolAudit">
<el-col :span="12">
<el-form-item label="审核人员">
<span>{{ row.info.schoolAudit.username }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
<span>{{ row.info.schoolAudit.auditTime }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
<span>{{ row.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>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" label="序号"
type="index"></el-table-column>
<el-table-column label="申请人" prop="username" header-align="center"
align="center"></el-table-column>
<el-table-column label="申请时间" prop="applyTime" header-align="center"
align="center"></el-table-column>
<el-table-column label="申请方式" prop="type" header-align="center"
align="center">
<template scope="{row:{applyOrigin}}">
{{ changeOrigin[applyOrigin] }}
</template>
</el-table-column>
<el-table-column label="变更类型" prop="type" header-align="center"
align="center">
<template scope="{row:{type}}">
{{ changeType[type] }}
</template>
</el-table-column>
<el-table-column label="状态" prop="stateId" header-align="center"
align="center">
<el-table :data="memberHistoryRecords" border>
<el-table-column type="index" label="序号" width="80px"></el-table-column>
<el-table-column label="工号" prop="loginname"></el-table-column>
<el-table-column label="姓名" prop="username"></el-table-column>
<el-table-column label="变更来源" prop="changeOrigin">
<template scope="{row}">
<span :style="'color:'+row.stateColor">{{ row.stateName }}</span>
{{ memberChangeOriginOptions.find(v => v.code == row.changeOrigin)?.description }}
</template>
</el-table-column>
<el-table-column label="变更时间" prop="changeTime"></el-table-column>
<el-table-column label="异动类型" prop="changeTypes">
<template scope="{row}">
<span style="color: #0e78c5;cursor: pointer" @click="openUserChangeInfo(row)">
{{
userChangeTypeOptions.filter(v => row.changeTypes.includes(v.code)).map(v => v.description).join()
}}
</span>
</template>
</el-table-column>
<el-table-column label="状态" prop="stateId">
<template scope="{row}">
<vi-table-state v-if="row.stateId" :state="row"></vi-table-state>
</template>
</el-table-column>
</el-table>
<user-change-history ref="userChangeHistory"></user-change-history>
</div>
</template>
<script>
module.exports = {
components: {},
components: {
'user-change-history': httpVueLoader('/components/userChangeHistory/userChangeHistory.vue?v=' + new Date().getTime()),
},
props: {
records: {type: Array, default: []},
userid: {type: String},
@@ -168,14 +52,36 @@ module.exports = {
loading: true,
changeType: {},
changeOrigin: {},
memberHistoryRecords: [],
memberChangeOriginOptions: [],
userChangeTypeOptions: []
}
},
watch: {
userid(val) {
this.getMemberChangeRecords()
this.getMemberHistoryRecords()
}
},
methods: {
async getMemberHistoryRecords() {
const {code, msg, data} = await $.get("/platform/member/common/memberHistoryRecords", {userId: this.userid})
if (code === 0) {
data.forEach(v => {
if (v.changeTypes) {
v.changeTypes = JSON.parse(v.changeTypes)
}
})
this.memberHistoryRecords = data
}
},
openUserChangeInfo({id}) {
this.$refs.userChangeHistory.openUserChangeInfo(id)
},
async onExpand(row, expandedRows) {
if (!expandedRows.includes(row)) {
@@ -220,10 +126,16 @@ module.exports = {
async created() {
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
this.getMemberChangeRecords()
this.changeType = await member.getChangeType()
this.changeOrigin = await member.getChangeOrigin()
getEnumOptions('MemberChangeOrigin').then(res => {
this.memberChangeOriginOptions = res
})
getEnumOptions('UserChangeType').then(res => {
this.userChangeTypeOptions = res
})
}
}
</script>
@@ -23,7 +23,6 @@
module.exports = {
name: "MemberCnd",
props: {},
components: {'enum-select': httpVueLoader('/components/plugins/EnumSelect.vue?v=1.0.0'),},
data() {
return {
columnInfos: [],
@@ -1,7 +1,8 @@
<template>
<div>
<div v-if="!view">
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px" v-loading="loading"
<el-form :model="formData" ref="form" :rules="formRules" label-width="120px"
v-loading="loading"
:disabled="!isAllowModify">
<el-tabs v-model="activeName" type="card">
@@ -18,7 +19,8 @@
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-option v-for="unit in unitOptions" :key="unit.id" :value="unit.id"
:label="unit.name"></el-option>
</el-select>
</el-form-item>
@@ -28,7 +30,7 @@
</el-form-item>
</div>
<el-row :gutter="10" v-if="displayUnionGroup">
<el-row :gutter="10" v-if="isThreeUnit">
<el-col :xs="24" :lg="12">
<el-form-item label="所属三级单位" prop="deptId">
<el-select v-model="formData.threeUnitId"
@@ -68,7 +70,8 @@
<div class="is-flex">
<el-form-item prop="birthday" label="出生日期">
<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>
value-format="yyyy-MM-dd" type="date"
placeholder="出生日期"></el-date-picker>
</el-form-item>
<el-form-item prop="sex" label="性&emsp;&emsp;别">
<el-radio v-model="formData.sex" label="男" border size="small">男</el-radio>
@@ -97,7 +100,8 @@
</el-form-item>
<el-form-item prop="academicDegree" label="学&emsp;&emsp;位">
<dict-select v-model="formData.academicDegree" style="width: 100%" placeholder="请选择学位"
<dict-select v-model="formData.academicDegree" style="width: 100%"
placeholder="请选择学位"
code="academicDegree"></dict-select>
</el-form-item>
</div>
@@ -114,12 +118,15 @@
<div class="is-flex">
<el-form-item prop="nation" label="民&emsp;&emsp;族">
<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 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>
<el-form-item prop="political" label="政治面貌">
<el-input maxlength="100" placeholder="政治面貌" v-model="formData.political"></el-input>
<el-input maxlength="100" placeholder="政治面貌"
v-model="formData.political"></el-input>
</el-form-item>
</div>
@@ -215,7 +222,8 @@
</el-form-item>
<el-form-item prop="specialSkill" label="专&emsp;&emsp;长">
<el-input maxlength="100" placeholder="专长" v-model="formData.specialSkill"></el-input>
<el-input maxlength="100" placeholder="专长"
v-model="formData.specialSkill"></el-input>
</el-form-item>
</div>
@@ -298,7 +306,8 @@
<div class="is-flex">
<el-form-item prop="majorCategory" label="所学专业类别">
<el-input maxlength="50" placeholder="所学专业类别" v-model="formData.majorCategory"></el-input>
<el-input maxlength="50" placeholder="所学专业类别"
v-model="formData.majorCategory"></el-input>
</el-form-item>
<el-form-item prop="profession" label="从事专业">
@@ -322,9 +331,11 @@
</el-form-item>
<el-form-item prop="vita" label="个人简历">
<div id="vitaEditor"></div>
<el-input maxlength="500" placeholder="请填写个人工作简历"
v-model="formData.vita" type="textarea"
rows="3"></el-input>
</el-form-item>
<!-- </el-form>-->
</el-tab-pane>
<el-tab-pane label="会员信息" :name="3">
@@ -333,8 +344,10 @@
<div class="is-flex">
<el-form-item prop="memberJoinTime" label="入会日期">
<el-date-picker style="width: 100%" v-model="formData.memberJoinTime" format="yyyy-MM-dd"
value-format="yyyy-MM-dd" type="date" placeholder="入会日期"></el-date-picker>
<el-date-picker style="width: 100%" v-model="formData.memberJoinTime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd" type="date"
placeholder="入会日期"></el-date-picker>
</el-form-item>
<el-form-item prop="memberNumber" label="会&ensp;员&ensp;号">
@@ -465,7 +478,8 @@
<div class="is-flex">
<el-form-item prop="otherContactInformation" label="其他联系方式">
<el-input v-model="formData.otherContactInformation" placeholder="其他联系方式"></el-input>
<el-input v-model="formData.otherContactInformation"
placeholder="其他联系方式"></el-input>
</el-form-item>
<el-form-item prop="registeredResidence" label="户籍所在地">
@@ -502,18 +516,21 @@
</el-table-column>
<el-table-column prop="name" label="姓名" align="center" header-align="center">
<template slot-scope="scope">
<el-input placeholder="请输入姓名" maxlength="100" v-model="scope.row.name" clearable></el-input>
<el-input placeholder="请输入姓名" maxlength="100" v-model="scope.row.name"
clearable></el-input>
</template>
</el-table-column>
<el-table-column prop="unit" label="单位" align="center" header-align="center">
<template slot-scope="scope">
<el-input placeholder="请输入单位" maxlength="100" v-model="scope.row.unit" clearable></el-input>
<el-input placeholder="请输入单位" maxlength="100" v-model="scope.row.unit"
clearable></el-input>
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" align="center" header-align="center">
<template slot-scope="scope">
<el-input placeholder="请输入备注" maxlength="100" v-model="scope.row.remark" clearable></el-input>
<el-input placeholder="请输入备注" maxlength="100" v-model="scope.row.remark"
clearable></el-input>
</template>
</el-table-column>
@@ -532,7 +549,8 @@
</el-form>
<el-button v-if="has_bottom_btn" @click="save" :loading="submitLoading" type="primary" style="float: right">提交
<el-button v-if="has_bottom_btn" @click="save" :loading="submitLoading" type="primary"
style="float: right">提交
</el-button>
</div>
@@ -584,13 +602,21 @@
{{ formData.political }}
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8">
<el-form-item label="入校时间">
{{ formData.schoolTime }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="出生日期">
{{ formData.birthday }}
</el-form-item>
</el-col>
</el-row>
<el-row gutter="20">
<el-col :span="8">
<el-form-item label="籍&emsp;&emsp;贯">
@@ -721,12 +747,7 @@
<script>
let vitaEditor = null
module.exports = {
components: {
'dict-select': httpVueLoader('/components/plugins/DictSelect.vue?v=1.0.4'),
},
props: {
id: {type: String},
view: {type: Boolean, default: false},
@@ -761,7 +782,7 @@ module.exports = {
},
nationOptions: nation,
threeUnits: [],
displayUnionGroup: false,
isThreeUnit: false,
isAllowModify: false
}
},
@@ -868,7 +889,6 @@ module.exports = {
},
load(data) {
console.log(data)
if (this.$refs['form']) {
this.$refs['form'].resetFields()
}
@@ -885,16 +905,6 @@ module.exports = {
data.effectiveDate = [data.beginningDate, data.endDate]
}
this.formData = data
this.$nextTick(() => {
$("#vitaEditor").html("")
vitaEditor = new wangEditor("#vitaEditor")
vitaEditor.config.onchange = (html) => {
this.formData.vita = html
}
vitaEditor.create()
vitaEditor.txt.html(data.vita)
})
},
async getUserInfo() {
@@ -905,13 +915,15 @@ module.exports = {
this.load({})
this.unionOptions = await getUnions(null)
this.unitOptions = await getUnionUnits()
this.displayUnionGroup = await getConfigKey('SysUnionGroup') === 'true'
this.isAllowModify = await getConfigKey('MemberInfoModify') === 'true'
this.loading = false
return
}
const resp = await $.get("/platform/member/common/userInfo", {userId: this.id, source: this.source})
const resp = await $.get("/platform/member/common/userInfo", {
userId: this.id,
source: this.source
})
this.loading = false
if (resp.code === 0) {
const data = resp.data
this.unitOptions = await getUnits(data.unionid)
@@ -923,7 +935,6 @@ module.exports = {
message: '获取用户信息失败'
});
}
this.loading = false
},
handlePictureCardPreview(file) {
@@ -972,7 +983,7 @@ module.exports = {
await this.getUserInfo()
this.unionOptions = await getUnions(null)
this.unitOptions = await getUnionUnits()
this.displayUnionGroup = await getConfigKey('SysUnionGroup') === 'true'
this.isThreeUnit = await getConfigKey('isThreeUnit') === 'true'
this.isAllowModify = await getConfigKey('MemberInfoModify') === 'true'
}
}
@@ -990,4 +1001,4 @@ module.exports = {
.el-picker-panel {
z-index: 9999999 !important;
}
</style>
</style>
@@ -0,0 +1,189 @@
<template>
<div style="padding-bottom: 20px;">
<van-form readonly input-align="right">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
基础信息
</div>
</div>
<van-cell-group>
<van-field readonly :value="viewData.username" label="姓名"></van-field>
<van-field readonly :value="viewData.loginname" label="工资号"></van-field>
<van-field readonly :value="viewData.unitname" label="单位"></van-field>
<van-field readonly :value="viewData.unionname" label="工会"></van-field>
</van-cell-group>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
作品信息
</div>
</div>
<van-cell-group>
<van-field readonly name="type" :value="viewData.zpzt" label="作品主题"></van-field>
<van-field readonly name="type" :value="viewData.lname" label="活动类别"></van-field>
<van-field readonly name="type" :value="viewData.zname" label="作品类别"></van-field>
<van-field readonly :value="viewData.zpms" label="简介"
input-align="left"
style="flex-flow: column"
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
<van-field label="照片" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">照&emsp;&emsp;片</div>
</template>
<template #input>
<vant-file-upload :files.sync="img2List" view :del="false"
v-if="img2List&&img2List.length>0"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<van-field label="视频" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">视&emsp;&emsp;频</div>
</template>
<template #input>
<template v-for="item in videoList" v-if="videoList.length>0">
<video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto"
width="640" height="264"
data-setup="{}" webkit-playsinline='true' playsinline='true' x-webkit-airplay='true'
x5-video-player-type='h5' x5-video-player-fullscreen='true' x5-video-ignore-metadata='true'>
<source :src="FILE_DOMAIN+item.filepath" type="video/mp4">
</video>
</template>
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
没有音频。
</div>
</template>
</van-field>
<van-field label="音频" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">音&emsp;&emsp;频</div>
</template>
<template #input>
<template v-for="item in videoList" v-if="audioList.length>0">
<audio id="amusic" preload="auto" controls style="width: 100%;outline: none;">
<source :src="FILE_DOMAIN+item.filepath"/>
</audio>
</template>
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
没有音频。
</div>
</template>
</van-field>
<van-field label="文档" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">文&emsp;&emsp;档</div>
</template>
<template #input>
<template v-for="(item,index) in docList" v-if="docList.length>0">
<div class="text-nowrap color-puple"
@click="previewFile(item.filepath,item.filename,docList,index,item.id)">
{{ item.filename }}
</div>
</template>
<div v-else style="text-align: center;color: #c2bbbb;font-size: 10px;">
没有文档。
</div>
</template>
</van-field>
</van-cell-group>
</van-form>
<template v-if="handle">
<slot name="handle"></slot>
</template>
</div>
</template>
<script>
module.exports = {
props: {
handle: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '审核'
},
id: {
type: String,
default: ''
},
},
data() {
return {
viewData: {},
videoList: [],
prevImgList: [],
img2List: [],
audioList: [],
docList: [],
imgtype: ['gif', 'jpg', 'png', 'jpeg'],
videotype: ['flv', 'swf', 'mkv', 'avi', 'rm', 'rmvb', 'wmv', 'mp4', 'mov', 'mpg', 'mpeg'],
doctype: ['doc', 'docx'],
audiotype: ['mp3', 'wma', 'flac', 'wav', 'm4a', 'amr', 'au'],
}
},
components: {
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
},
methods: {
async getInfo(id) {
const {data, code, msg} = await $.get("/platform/hd/wmhd/findOneById", {id})
const refs = await $.get("/mobile/cahd/list/findOne", {id})
if (refs) {
this.viewData = refs[0]
data.forEach(val => {
val.fjname = val.filename
val.fjurl = val.filepath
val.url = FILE_DOMAIN + val.filepath
let filetype = val.fjname.substring(val.fjname.lastIndexOf('.') + 1, val.fjname.length).toLowerCase();
if (this.videotype.indexOf(filetype) > -1) {
this.videoList.push(val);
} else if (this.imgtype.indexOf(filetype) > -1) {
this.prevImgList.push(FILE_DOMAIN + val.filepath)
this.img2List.push(val);
} else if (this.doctype.indexOf(filetype) > -1) {
this.docList.push(val);
} else if (this.audiotype.indexOf(filetype) > -1) {
this.audioList.push(val);
}
})
} else {
this.viewData = {}
this.$toast.fail('获取信息失败');
}
},
},
async created() {
}
}
</script>
<style>
.van-cell-group__title {
padding-left: 0 !important;
}
.van-sidebar-item {
font-size: 16px !important;
text-indent: 4px !important;
}
.van-sidebar-item--select::before {
left: 5px !important;
}
</style>
@@ -0,0 +1,124 @@
<template>
<div style="padding-bottom: 20px;">
<van-form readonly input-align="right">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
基础信息
</div>
</div>
<van-cell-group>
<van-field readonly :value="viewData.username" label="姓名"></van-field>
<van-field readonly :value="viewData.sex" label="性别"></van-field>
<van-field readonly :value="viewData.loginname" label="工号"></van-field>
<van-field readonly :value="viewData.unitName" label="工作部门"></van-field>
<van-field readonly :value="viewData.mobile" label="电话"></van-field>
<van-field readonly :value="viewData.QQNumber" label="QQ"></van-field>
<van-field readonly :value="viewData.hobby" label="爱好"></van-field>
<van-field readonly :value="viewData.sickness" label="是否患有运动限制类疾病"></van-field>
<van-field readonly :value="viewData.familyUserName" label="紧急联系人姓名"></van-field>
<van-field readonly :value="viewData.familyRelation" label="紧急联系人关系"></van-field>
<van-field readonly :value="viewData.familyMobile" label="紧急联系人电话"></van-field>
<van-field readonly :value="viewData.project" label="擅长项目"></van-field>
<van-field readonly :value="viewData.selfSkill" label="个人技能水平"></van-field>
<van-field readonly :value="viewData.playRole" label="期望在协会中扮演的角色"></van-field>
<van-field readonly :value="viewData.provideServices" label="是否愿意为协会提供志愿服务"></van-field>
<van-field readonly :value="viewData.joinManageWork" label="是否愿意参与协会的管理工作"></van-field>
<van-field readonly :value="viewData.giveHelp" label="是否愿意为协会的活动提供赞助或资源支持"></van-field>
</van-cell-group>
</van-form>
<!-- <template v-if="viewData.upa">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item&#45;&#45;select">
院级工会审核信息
</div>
</div>
<van-cell-group class="mt10">
<div style="padding-left: 16px">
<van-field label="审核人员" :value="viewData.upa.username" left-icon="contact" readonly></van-field>
<van-field label="审核时间" :value="viewData.upa.auditTime" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.upa.auditOpinion ? viewData.upa.auditOpinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.upa.auditSign"
v-if="viewData.upa.auditSign"></van-image>
<span v-else>暂无</span>
</template>
</van-field>
</div>
</van-cell-group>
</template>-->
<template v-if="handle">
<slot name="handle"></slot>
</template>
</div>
</template>
<script>
module.exports = {
props: {
handle: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '审核'
},
id: {
type: String,
default: ''
},
},
data() {
return {
viewData: {},
}
},
components: {
},
methods: {
async getInfo(id) {
const {data, code, msg} = await $.get("/platform/sys/club/sq/findOne", {id})
if (data) {
this.viewData = data
} else {
this.viewData = {}
this.$toast.fail('获取信息失败');
}
},
},
async created() {
}
}
</script>
<style>
.van-cell-group__title {
padding-left: 0 !important;
}
.van-sidebar-item {
font-size: 16px !important;
text-indent: 4px !important;
}
.van-sidebar-item--select::before {
left: 5px !important;
}
.van-field__label {
width: 60% !important;
}
.van-cell {
padding: 7px 16px !important;
}
</style>
@@ -0,0 +1,50 @@
<template>
<div class="card">
<div class="card-header" v-if="$slots.header">
<slot name="header"></slot>
</div>
<div class="card-body">
<slot></slot>
</div>
<div class="card-footer" v-if="$slots.footer">
<slot name="footer"></slot>
</div>
</div>
</template>
<script>
module.exports = {
name: "MCard"
}
</script>
<style scoped>
.card {
border: none;
border-radius: .5rem;
}
.card-header {
border-bottom:1px dashed rgba(0,0,0,.125);
font-size: 1.15rem;
}
.card-header:first-child {
border-radius: calc(.5rem - 1px) calc(.5rem - 1px) 0 0
}
.card-body>.van-cell{
padding: 5px 0;
}
.card-body{
padding-top: 0;
}
.card-header, .card-footer {
background-color: #FFFFFF;
}
</style>
@@ -0,0 +1,89 @@
<template>
<div class="loader"></div>
</template>
<script>
module.exports = {
name: "MLoading"
}
</script>
<style scoped>
.loader {
z-index: 10000;
position: relative;
width: 2.5em;
height: 2.5em;
transform: rotate(165deg);
}
.loader:before, .loader:after {
content: "";
position: absolute;
top: 50%;
left: 50%;
display: block;
width: 0.5em;
height: 0.5em;
border-radius: 0.25em;
transform: translate(-50%, -50%);
}
.loader:before {
animation: before 2s infinite;
}
.loader:after {
animation: after 2s infinite;
}
@keyframes before {
0% {
width: 0.5em;
box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
}
35% {
width: 2.5em;
box-shadow: 0 -0.5em rgba(225, 20, 98, 0.75), 0 0.5em rgba(111, 202, 220, 0.75);
}
70% {
width: 0.5em;
box-shadow: -1em -0.5em rgba(225, 20, 98, 0.75), 1em 0.5em rgba(111, 202, 220, 0.75);
}
100% {
box-shadow: 1em -0.5em rgba(225, 20, 98, 0.75), -1em 0.5em rgba(111, 202, 220, 0.75);
}
}
@keyframes after {
0% {
height: 0.5em;
box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
}
35% {
height: 2.5em;
box-shadow: 0.5em 0 rgba(61, 184, 143, 0.75), -0.5em 0 rgba(233, 169, 32, 0.75);
}
70% {
height: 0.5em;
box-shadow: 0.5em -1em rgba(61, 184, 143, 0.75), -0.5em 1em rgba(233, 169, 32, 0.75);
}
100% {
box-shadow: 0.5em 1em rgba(61, 184, 143, 0.75), -0.5em -1em rgba(233, 169, 32, 0.75);
}
}
/**
* Attempt to center the whole thing!
*/
html,
body {
height: 100%;
}
.loader {
position: absolute;
top: calc(50% - 1.25em);
left: calc(50% - 1.25em);
}
</style>
@@ -0,0 +1,140 @@
<template>
<figure>
<div class="dot white"></div>
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
<div class="dot"></div>
</figure>
</template>
<script>
module.exports = {
name: "MTableLoading"
}
</script>
<style scoped>
body {
background: #222;
}
figure {
position: absolute;
margin: auto;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 6.250em;
height: 6.250em;
animation: rotate 2.4s linear infinite;
}
.white {
top: 0;
bottom: 0;
left: 0;
right: 0;
background: white;
animation: flash 2.4s linear infinite;
opacity: 0;
}
.dot {
position: absolute;
margin: auto;
width: 2.4em;
height: 2.4em;
border-radius: 100%;
transition: all 1s ease;
}
.dot:nth-child(2) {
top: 0;
bottom: 0;
left: 0;
background: #FF4444;
animation: dotsY 2.4s linear infinite;
}
.dot:nth-child(3) {
left: 0;
right: 0;
top: 0;
background: #FFBB33;
animation: dotsX 2.4s linear infinite;
}
.dot:nth-child(4) {
top: 0;
bottom: 0;
right: 0;
background: #99CC00;
animation: dotsY 2.4s linear infinite;
}
.dot:nth-child(5) {
left: 0;
right: 0;
bottom: 0;
background: #33B5E5;
animation: dotsX 2.4s linear infinite;
}
@keyframes rotate {
0% {
transform: rotate(0);
}
10% {
width: 6.250em;
height: 6.250em;
}
66% {
width: 2.4em;
height: 2.4em;
}
100% {
transform: rotate(360deg);
width: 6.250em;
height: 6.250em;
}
}
@keyframes dotsY {
66% {
opacity: .1;
width: 2.4em;
}
77% {
opacity: 1;
width: 0;
}
}
@keyframes dotsX {
66% {
opacity: .1;
height: 2.4em;
}
77% {
opacity: 1;
height: 0;
}
}
@keyframes flash {
33% {
opacity: 0;
border-radius: 0%;
}
55% {
opacity: .6;
border-radius: 100%;
}
66% {
opacity: 0;
}
}
</style>
@@ -0,0 +1,186 @@
<style>
.field .van-field__error-message {
display: none;
}
</style>
<template>
<div>
<van-form @submit="onSubmit" ref="form">
<template v-for="column in dynamicData">
<!-- 文本、数值、时间 -->
<template v-if="['VARCHAR','TEXT','INT','DATE','DATETIME'].includes(column.columnType)">
<van-field
class="field"
v-model="column.columnValue"
:clickable="['SELECT'].includes(column.columnFormType)"
:label="column.columnName"
:name="column.columnCode"
:type="['INT'].includes(column.columnType) ? 'digit' : ''"
:placeholder="(['SELECT'].includes(column.columnFormType) ? '请选择' : '请填写') + column.columnName"
:readonly="['SELECT'].includes(column.columnFormType)"
:rules="[{ required: column.isRequired, message: (['SELECT'].includes(column.columnFormType) ? '请选择' : '请填写') + column.columnName }]"
:required="column.isRequired"
:clearable="true"
clear-trigger="always"
@click="selectFieldClick(column)"
></van-field>
<van-popup v-if="['SELECT'].includes(column.columnFormType)"
v-model="pickerStates[column.columnCode + 'Picker']"
position="bottom">
<template v-if="['DATETIME','DATE'].includes(column.columnType)">
<van-datetime-picker
:title="column.columnName"
:type="column.columnType.toLocaleLowerCase()"
show-toolbar
@cancel="pickerStates[column.columnCode + 'Picker'] = false; column.columnValue = ''"
@confirm="(time)=>{dateTimePickerConfirm(time,column)}"
/>
</template>
<template v-else>
<van-picker
:columns="column.selectValues"
:title="column.columnName"
show-toolbar
@cancel="pickerStates[column.columnCode + 'Picker'] = false; column.columnValue = ''"
@confirm="(value)=>{ordinaryPickerConfirm(value,column)}"
/>
</template>
</van-popup>
</template>
<!-- 单选框 -->
<template v-else-if="['BOOLEAN'].includes(column.columnType)">
</template>
<!-- 文件 -->
<template v-else-if="['JSON'].includes(column.columnType)">
<van-field :required="column.isRequired" :label="column.columnName"
:rules="[{ required: column.isRequired, message: '请上传' + column.columnName }]">
<template #input>
<!-- <van-uploader v-model="fileList" :after-read="(file)=>{fileAfterRead(file,column)}"
:max-count="column.fileNumber"/>-->
<vant_file_upload :files.sync="column.columnValue" :max="column.fileNumber"
:type="column.fileType"></vant_file_upload>
</template>
</van-field>
</template>
</template>
</van-form>
</div>
</template>
<!-- 请在van-form中引用 -->
<script>
module.exports = {
name: "TrainDynamicForm",
components: {
'vant_file_upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
},
props: {
dynamicData: []
},
model: {
prop: 'dynamicData',
event: 'updateDynamicData'
},
watch: {
dynamicData: {
handler: function (newValue, oldValue) {
this.$emit('updateDynamicData', newValue)
},
deep: true
}
},
data() {
return {
//所有的picker状态
pickerStates: {},
fileList: []
}
},
methods: {
validForm() {
try {
this.$refs.form.validate().then(() => {
return true
}).catch(() => {
return false
})
} catch (e) {
return false
}
/*return new Promise(resolve => {
this.$refs.form.validate().then(() => {
resolve(true)
}).catch(() => {
resolve(false)
})
})*/
},
onSubmit() {
},
selectFieldClick(column) {
console.log(column)
this.$set(this.pickerStates, column.columnCode + 'Picker', true)
if (!['DATE', 'DATETIME'].includes(column.columnType)) {
//说明是普通的下拉框
// column.selectValues = ['1', '2', '3']
}
},
/**
* 时间picker确认
* @param time
* @param column
*/
dateTimePickerConfirm(time, column) {
if (column.columnType === 'DATE') {
column.columnValue = moment(time).format('YYYY-MM-DD')
} else if (column.columnType === 'DATETIME') {
column.columnValue = moment(time).format('YYYY-MM-DD HH:mm:ss')
} else {
//预留别的类型
column.columnValue = moment(time).format('YYYY-MM-DD HH:mm:ss')
}
this.pickerStates[column.columnCode + 'Picker'] = false
},
/**
* 普通picker确认
* @param value
* @param column
*/
ordinaryPickerConfirm(value, column) {
column.columnValue = value
this.pickerStates[column.columnCode + 'Picker'] = false
},
/**
* 文件读取
*/
fileAfterRead(file, column) {
console.log(file)
console.log(column)
}
},
created() {
// console.log(this.dynamicData)
// this.dynamicData.forEach(v => {
// if (v.columnFormType === 'SELECT') {
// v.columnPickerName = v.columnCode+'Picker'
// }
// })
// console.log(this.dynamicData)
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,158 @@
<template>
<div style="padding-bottom: 20px;">
<van-form readonly input-align="right">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
申请信息
</div>
</div>
<van-cell-group>
<van-field readonly :value="viewData.sqrname" label="申请人"></van-field>
<van-field readonly :value="viewData.sqsj" label="申请时间"></van-field>
<van-field readonly :value="viewData.bbname" label="受补助人"></van-field>
<van-field readonly :value="viewData.idcard" label="身份证号"></van-field>
<van-field readonly name="type" :value="viewData.bbsex" label="性别"></van-field>
<van-field readonly name="type" :value="viewData.zc" label="职称"></van-field>
<van-field readonly name="type" :value="viewData.zw" label="职务"></van-field>
<van-field readonly :value="viewData.bbunit" label="所在单位"></van-field>
<van-field readonly name="way" :value="viewData.bbbirthday" label="出生日期"></van-field>
<van-field readonly :value="viewData.lxfs" label="手机号码"></van-field>
<van-field readonly :value="difficulty.subsidy[viewData.sq_bzlx]" label="补助类型"></van-field>
<van-field readonly :value=" difficulty.sq_knlx[viewData.sq_knlx] " label="困难类型"></van-field>
<van-field readonly :value="viewData.apply_reason" label="申请理由"
input-align="left"
style="flex-flow: column"
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
<van-field label="附件" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">附&emsp;&emsp;件</div>
</template>
<template #input>
<vant-file-upload :files.sync="viewData.files" view :del="false"
v-if="viewData.files&&viewData.files.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<van-field name="sign" label="申请人签字">
<template #input>
<van-image width="200" height="100" :src="viewData.sqsign" v-if="viewData.sqsign!=null"></van-image>
<span v-else>暂无</span>
</template>
</van-field>
</van-cell-group>
</van-form>
<template v-if="viewData.upa">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
院级工会审核信息
</div>
</div>
<van-cell-group class="mt10">
<div style="padding-left: 16px">
<van-field label="审核人员" :value="viewData.upa.username" left-icon="contact" readonly></van-field>
<van-field label="审核时间" :value="viewData.upa.auditTime" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.upa.auditOpinion ? viewData.upa.auditOpinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.upa.auditSign"
v-if="viewData.upa.auditSign"></van-image>
<span v-else>暂无</span>
</template>
</van-field>
</div>
</van-cell-group>
</template>
<template v-if="viewData.sma">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核信息
</div>
</div>
<van-cell-group class="mt10">
<div style="padding-left: 16px">
<van-field label="审核人员" :value="viewData.sma.username" left-icon="contact" readonly></van-field>
<van-field label="审核时间" :value="viewData.sma.auditTime" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.sma.auditOpinion ? viewData.sma.auditOpinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.sma.auditSign"
v-if="viewData.sma.auditSign"></van-image>
<span v-else>暂无</span>
</template>
</van-field>
</div>
</van-cell-group>
</template>
<template v-if="handle">
<slot name="handle"></slot>
</template>
</div>
</template>
<script>
module.exports = {
props: {
handle: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '审核'
},
id: {
type: String,
default: ''
},
},
data() {
return {
viewData: {},
}
},
components: {
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
},
methods: {
async getInfo(id) {
const {data, code, msg} = await $.get("/platform/fw/difficulty/applylist/findOne", {id})
if (data) {
condolence.toFormData(data)
this.viewData = data
} else {
this.viewData = {}
this.$toast.fail('获取信息失败');
}
},
},
async created() {
await this.getInfo(this.id)
}
}
</script>
<style>
.van-cell-group__title {
padding-left: 0 !important;
}
.van-sidebar-item {
font-size: 16px !important;
text-indent: 4px !important;
}
.van-sidebar-item--select::before {
left: 5px !important;
}
</style>
@@ -0,0 +1,214 @@
<template>
<div style="padding-bottom: 20px;">
<van-form readonly input-align="right">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
申请信息
</div>
</div>
<van-cell-group>
<van-field :value="viewData.loginname" label="工号" left-icon="contact"></van-field>
<van-field label="姓名" :value="viewData.username" left-icon="contact"></van-field>
<van-field label="性别" :value="viewData.sex" left-icon="ellipsis"></van-field>
<van-field label="民族" left-icon="bar-chart-o" :value="viewData.nation"></van-field>
<van-field label="学历" left-icon="coupon-o" :value="viewData.education"></van-field>
<van-field label="学位" left-icon="comment-o" :value="viewData.academicDegree"></van-field>
<van-field label="政治面貌" left-icon="label-o" :value="viewData.political"></van-field>
<van-field :value="viewData.personType" label="人员类型" left-icon="label-o"></van-field>
<van-field label="身份证" left-icon="idcard" :value="viewData.idcard"></van-field>
<van-field label="联系电话" left-icon="phone-o" :value="viewData.mobile"></van-field>
<van-field label="户口所在地" left-icon="wap-home-o"
:value="viewData.registeredResidence"></van-field>
<van-field label="现居住地" left-icon="home-o" :value="viewData.homeAddress"></van-field>
<van-field label="工作单位" left-icon="cluster-o" :value="viewData.unitname"></van-field>
<van-field label="职务" left-icon="debit-pay" :value="viewData.position"></van-field>
</van-cell-group>
</van-form>
<van-cell-group class="mt10 up_down">
<div class="van-cell" style="flex-flow: column">
<div style="display: flex">
<div class="van-field__left-icon">
<i class="van-icon van-icon-notes-o"></i>
</div>
<div class="van-cell__title van-field__label">
<span>个人工作简历</span>
</div>
</div>
<van-divider></van-divider>
<van-field readonly>
<template #input>
<div v-html="viewData.position"></div>
</template>
</van-field>
</div>
</van-cell-group>
<van-cell-group class="mt10 up_down">
<div class="van-cell" style="flex-flow: column">
<div style="display: flex">
<div class="van-field__left-icon">
<i class="van-icon van-icon-award-o"></i>
</div>
<div class="van-cell__title van-field__label">
<span>特长</span>
</div>
</div>
<van-divider></van-divider>
<van-field readonly>
<template #input>
<div v-html="viewData.specialSkill"></div>
</template>
</van-field>
</div>
</van-cell-group>
<van-cell-group class="mt10 up_down">
<div class="van-cell" style="flex-flow: column">
<div class="van-cell__title van-field__label"
style="display: flex;justify-content: space-between">
<div style="display: flex;">
<div class="van-field__left-icon">
<i class="van-icon van-icon-friends-o"></i>
</div>
<div class="van-cell__title van-field__label" style="width: auto">
<span>家庭主要成员及联系方式</span>
</div>
</div>
</div>
<van-divider></van-divider>
<div v-if="family && family.length>0">
<div v-for="(o,i) in family" class="mt5">
<div style="font-weight: 700;display: flex;justify-content: space-between">
<span>成员{{ toChinesNum(i + 1) }}</span>
</div>
<van-form readonly input-align="right">
<van-field label="关系" :value="o.relation" left-icon="exchange"></van-field>
<van-field label="姓名" :value="o.name" left-icon="user-o"></van-field>
<van-field label="联系方式" :value="o.mobile" left-icon="phone-o"></van-field>
</van-form>
</div>
</div>
<div v-else style="height: 100px">
</div>
</div>
</van-cell-group>
<template v-if="unionAudit">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
分工会审核信息
</div>
</div>
<van-cell-group>
<van-field label="审&ensp;核&ensp;人" :value="unionAudit.username" left-icon="contact"
readonly></van-field>
<van-field label="审核时间" :value="moment(unionAudit.auditTime).format('YYYY-MM-DD')"
left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o" :value="unionAudit.auditOpinion"
readonly></van-field>
</van-cell-group>
</template>
<template v-if="schoolAudit">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核信息
</div>
</div>
<van-cell-group>
<van-field label="审&ensp;核&ensp;人" :value="schoolAudit.username" left-icon="contact"
readonly></van-field>
<van-field label="审核时间" :value="moment(schoolAudit.auditTime).format('YYYY-MM-DD')"
left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o" :value="schoolAudit.auditOpinion"
readonly></van-field>
</van-cell-group>
</template>
<template v-if="handle">
<slot name="handle"></slot>
</template>
</div>
</template>
<script>
module.exports = {
data() {
return {
info: {},
viewData: {},
unionAudit: {},
schoolAudit: {},
family: []
}
},
props: {
handle: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '审核'
},
user_id: String,
record_id: String
},
methods: {
async getAuditInfo(id) {
const {data} = await $.get('/platform/member/common/findChangeApplyInfo', {id: id})
if (data !== null) {
const {unionAudit, schoolAudit} = data
this.info = data
this.unionAudit = unionAudit
this.schoolAudit = schoolAudit
} else {
this.unionAudit = null
this.schoolAudit = null
}
},
async getUserInfo(id) {
const {data} = await $.get('/platform/member/common/userInfo', {userId: id})
this.viewData = data
this.family = JSON.parse(data.family)
}
}
}
</script>
<style>
.card_title {
margin: 5px 0 5px 16px;
}
.van-cell-group__title {
padding-left: 0 !important;
}
.van-sidebar-item {
font-size: 16px !important;
text-indent: 4px !important;
}
.van-sidebar-item--select::before {
left: 5px !important;
}
</style>
@@ -0,0 +1,208 @@
<template>
<div style="padding-bottom: 20px;">
<van-form readonly input-align="right">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
申请信息
</div>
</div>
<van-cell-group>
<van-field :value="viewData.loginname" label="工号" left-icon="contact"></van-field>
<van-field label="姓名" :value="viewData.username" left-icon="contact"></van-field>
<van-field label="性别" :value="viewData.sex" left-icon="ellipsis"></van-field>
<van-field label="民族" left-icon="bar-chart-o" :value="viewData.nation"></van-field>
<van-field label="学历" left-icon="coupon-o" :value="viewData.education"></van-field>
<van-field label="学位" left-icon="comment-o" :value="viewData.academicDegree"></van-field>
<van-field label="政治面貌" left-icon="label-o" :value="viewData.political"></van-field>
<van-field :value="viewData.personType" label="人员类型" left-icon="label-o"></van-field>
<van-field label="身份证" left-icon="idcard" :value="viewData.idcard"></van-field>
<van-field label="联系电话" left-icon="phone-o" :value="viewData.mobile"></van-field>
<van-field label="户口所在地" left-icon="wap-home-o" :value="viewData.registeredResidence"></van-field>
<van-field label="现居住地" left-icon="home-o" :value="viewData.homeAddress"></van-field>
<van-field label="工作单位" left-icon="cluster-o" :value="viewData.unitname"></van-field>
<van-field label="职务" left-icon="debit-pay" :value="viewData.position"></van-field>
</van-cell-group>
</van-form>
<van-cell-group class="mt10 up_down">
<div class="van-cell" style="flex-flow: column">
<div style="display: flex">
<div class="van-field__left-icon">
<i class="van-icon van-icon-notes-o"></i>
</div>
<div class="van-cell__title van-field__label">
<span>个人工作简历</span>
</div>
</div>
<van-divider></van-divider>
<van-field readonly>
<template #input>
<div v-html="viewData.position"></div>
</template>
</van-field>
</div>
</van-cell-group>
<van-cell-group class="mt10 up_down">
<div class="van-cell" style="flex-flow: column">
<div style="display: flex">
<div class="van-field__left-icon">
<i class="van-icon van-icon-award-o"></i>
</div>
<div class="van-cell__title van-field__label">
<span>特长</span>
</div>
</div>
<van-divider></van-divider>
<van-field readonly>
<template #input>
<div v-html="viewData.specialSkill"></div>
</template>
</van-field>
</div>
</van-cell-group>
<van-cell-group class="mt10 up_down">
<div class="van-cell" style="flex-flow: column">
<div class="van-cell__title van-field__label" style="display: flex;justify-content: space-between">
<div style="display: flex;">
<div class="van-field__left-icon">
<i class="van-icon van-icon-friends-o"></i>
</div>
<div class="van-cell__title van-field__label" style="width: auto">
<span>家庭主要成员及联系方式</span>
</div>
</div>
</div>
<van-divider></van-divider>
<div v-if="family && family.length>0">
<div v-for="(o,i) in family" class="mt5">
<div style="font-weight: 700;display: flex;justify-content: space-between">
<span>成员{{ toChinesNum(i + 1) }}</span>
</div>
<van-form readonly input-align="right">
<van-field label="关系" :value="o.relation" left-icon="exchange"></van-field>
<van-field label="姓名" :value="o.name" left-icon="user-o"></van-field>
<van-field label="联系方式" :value="o.mobile" left-icon="phone-o"></van-field>
</van-form>
</div>
</div>
<div v-else style="height: 100px">
</div>
</div>
</van-cell-group>
<template v-if="unionAudit!=null">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
院级工会审核信息
</div>
</div>
<van-cell-group>
<van-field label="审&ensp;核&ensp;人" :value="unionAudit.username" left-icon="contact" readonly></van-field>
<van-field label="审核时间" :value="moment(unionAudit.auditTime).format('YYYY-MM-DD')" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o" :value="unionAudit.auditOpinion" readonly></van-field>
</van-cell-group>
</template>
<template v-if="schoolAudit!=null">
<div class="van-cell-group__title mt20">
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核信息
</div>
</div>
<van-cell-group>
<van-field label="审&ensp;核&ensp;人" :value="schoolAudit.username" left-icon="contact" readonly></van-field>
<van-field label="审核时间" :value="moment(schoolAudit.auditTime).format('YYYY-MM-DD')" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o" :value="schoolAudit.auditOpinion" readonly></van-field>
</van-cell-group>
</template>
<template v-if="handle">
<slot name="handle"></slot>
</template>
</div>
</template>
<script>
module.exports = {
data() {
return {
viewData: {},
unionAudit: {},
schoolAudit: {},
family: []
}
},
props: {
handle: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '审核'
},
user_id: String,
record_id: String
},
methods: {
// getDetailInfo(user_id, record_id) {
// this.getUserInfo(user_id)
// this.getAuditInfo(record_id)
// },
async getAuditInfo(id) {
const {data} = await $.get('/platform/member/common/findApplyInfo', {id: id})
if (data !== null) {
const {unionAudit, schoolAudit} = data
this.unionAudit = unionAudit
this.schoolAudit = schoolAudit
} else {
this.unionAudit = null
this.schoolAudit = null
}
},
async getUserInfo(id) {
const {data} = await $.get('/platform/member/common/userInfo', {userId: id})
this.viewData = data
this.family = JSON.parse(data.family)
}
}
}
</script>
<style>
.card_title {
margin: 5px 0 5px 16px;
}
.van-cell-group__title {
padding-left: 0 !important;
}
.van-sidebar-item {
font-size: 16px !important;
text-indent: 4px !important;
}
.van-sidebar-item--select::before {
left: 5px !important;
}
</style>
@@ -0,0 +1,247 @@
<template>
<div style="padding-bottom: 20px;">
<van-form readonly input-align="right">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
基础信息
</div>
</div>
<van-cell-group>
<van-field readonly :value="viewData.username" label="姓名"></van-field>
<van-field readonly :value="viewData.loginname" label="工资号"></van-field>
<van-field readonly :value="viewData.dwname" label="单位"></van-field>
<van-field readonly :value="viewData.ghname" label="工会"></van-field>
</van-cell-group>
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
作品信息
</div>
</div>
<van-cell-group>
<van-field readonly name="type" :value="viewData.hdname" label="作品主题"></van-field>
<van-field readonly name="type" :value="viewData.hdlbname" label="活动类别"></van-field>
<van-field readonly name="type" :value="viewData.step_count" label="健步走步数"
v-if="viewData.step_count"></van-field>
<van-field readonly name="type" :value="viewData.zname" label="作品类别" v-if="viewData.zname"></van-field>
<van-field readonly :value="viewData.hdsbzpms" label="简介"
input-align="left"
style="flex-flow: column"
rows="2" maxlength="200" type="textarea" show-word-limit autosize></van-field>
<van-field label="照片" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">照&emsp;&emsp;片</div>
</template>
<template #input>
<vant-file-upload :files.sync="img2List" view :del="false"
v-if="img2List&&img2List.length>0"></vant-file-upload>
<div v-if="img2List.length===0" style="text-align: center;color: #c2bbbb;font-size: 10px;">
没有照片。
</div>
</template>
</van-field>
<van-field label="视频" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">视&emsp;&emsp;频</div>
</template>
<template #input>
<div v-if="videoList.length>0">
<div v-for="item in videoList" class="mt10">
<video id="myVideo" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto"
width="640" height="264"
data-setup="{}" webkit-playsinline='true' playsinline='true' x-webkit-airplay='true'
x5-video-player-type='h5' x5-video-player-fullscreen='true' x5-video-ignore-metadata='true'>
<source :src="item.url" type="video/mp4">
</video>
</div>
</div>
<div v-if="videoList.length===0" style="text-align: center;color: #c2bbbb;font-size: 10px;">
没有视频。
</div>
</template>
</van-field>
<van-field label="音频" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">音&emsp;&emsp;频</div>
</template>
<template #input>
<div v-if="audioList&&audioList.length>0">
<div v-for="audio in audioList" class="mt10">
<audio id="amusic" preload="auto" controls>
<source :src="FILE_DOMAIN+audio.url"/>
</audio>
</div>
</div>
<div style="text-align: center;color: #c2bbbb;font-size: 10px;" v-if="audioList.length===0">
没有音频。
</div>
</template>
</van-field>
<van-field label="文档" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">文&emsp;&emsp;档</div>
</template>
<template #input>
<div v-for="(item,index) in docList" v-if="docList&&docList.length>0">
<div class="text-nowrap color-puple"
@click="previewFile(item.filepath,item.filename,docList,index,item.id)">
{{ item.filename }}
</div>
</div>
<div v-if="docList.length===0" style="text-align: center;color: #c2bbbb;font-size: 10px;">
没有文档。
</div>
</template>
</van-field>
</van-cell-group>
<template v-if="viewData.union">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
分工会审核信息
</div>
</div>
<van-cell-group>
<van-field readonly name="type" :value="viewData.union.username" label="审核人"></van-field>
<van-field label="审核时间" :value="viewData.union.auditTime" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.union.auditOpinion ? viewData.union.auditOpinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.union.auditSign"
v-if="viewData.union.auditSign"></van-image>
<span v-else>暂无</span>
</template>
</van-field>
</van-cell-group>
</template>
<template v-if="viewData.school">
<div class="van-cell-group__title">
<div class="van-sidebar-item van-sidebar-item--select">
校工会审核信息
</div>
</div>
<van-cell-group>
<van-field readonly name="type" :value="viewData.school.username" label="审核人"></van-field>
<van-field label="审核时间" :value="viewData.school.auditTime" left-icon="clock-o"
readonly></van-field>
<van-field label="审核意见" left-icon="chat-o"
:value="viewData.school.auditOpinion ? viewData.school.auditOpinion : '暂无'"
readonly></van-field>
<van-field name="sign" label="签字">
<template #input>
<van-image width="200" height="100" :src="viewData.school.auditSign"
v-if="viewData.school.auditSign"></van-image>
<span v-else>暂无</span>
</template>
</van-field>
</van-cell-group>
</template>
</van-form>
<template v-if="handle">
<slot name="handle"></slot>
</template>
</div>
</template>
<script>
module.exports = {
props: {
handle: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '审核'
},
id: {
type: String,
default: ''
},
},
data() {
return {
viewData: {},
videoList: [],
prevImgList: [],
img2List: [],
audioList: [],
docList: [],
imgtype: ['gif', 'jpg', 'png', 'jpeg'],
videotype: ['flv', 'swf', 'mkv', 'avi', 'rm', 'rmvb', 'wmv', 'mp4', 'mov', 'mpg', 'mpeg'],
doctype: ['doc', 'docx'],
audiotype: ['mp3', 'wma', 'flac', 'wav', 'm4a', 'amr', 'au'],
}
},
components: {
'vant-file-upload': httpVueLoader('/components/plugins/VantFileUpload.vue')
},
methods: {
async getInfo(id) {
const {data, code, msg} = await $.get("/platform/hd/wmhd/findOneById", {id})
const refs = await $.get("/platform/hd/wmhd/findxxById", {id})
if (refs) {
this.viewData = refs.data
console.log(refs)
data.forEach(val => {
val.fjname = val.filename
val.fjurl = val.filepath
val.id = val.filepath
val.url = FILE_DOMAIN + '/fileStreamPreview?id=' + val.filepath
let filetype = val.fjname.substring(val.fjname.lastIndexOf('.') + 1, val.fjname.length).toLowerCase();
if (this.videotype.indexOf(filetype) > -1) {
this.videoList.push(val);
} else if (this.imgtype.indexOf(filetype) > -1) {
this.prevImgList.push(val.url)
this.img2List.push(val);
} else if (this.doctype.indexOf(filetype) > -1) {
this.docList.push(val);
} else if (this.audiotype.indexOf(filetype) > -1) {
this.audioList.push(val);
}
})
} else {
this.viewData = {}
this.$toast.fail('获取信息失败');
}
},
},
async created() {
}
}
</script>
<style>
.van-cell-group__title {
padding-left: 0 !important;
}
.van-sidebar-item {
font-size: 16px !important;
text-indent: 4px !important;
}
.van-sidebar-item--select::before {
left: 5px !important;
}
</style>
@@ -50,13 +50,21 @@
</el-select>
<el-date-picker
v-else-if="cnd.fieldObj&&cnd.fieldObj.type=='date'"
v-else-if="cnd.fieldObj&&cnd.fieldObj.type==='date'"
v-model="cnd.value"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择日期" style="width: 100%">
</el-date-picker>
<el-date-picker
v-else-if="cnd.fieldObj&&cnd.fieldObj.type==='date(year)'"
v-model="cnd.value"
type="year"
value-format="yyyy"
placeholder="请选择年份" style="width: 100%">
</el-date-picker>
<el-input v-else v-model="cnd.value" clearable placeholder="请输入值"
style="width: 100%"></el-input>
@@ -118,7 +126,8 @@
module.exports = {
props: {
value: {
type: Object, default: {
type: Object,
default: {
method: "AND",
conditions: [{}],
}
@@ -164,6 +173,9 @@ module.exports = {
const field = this.fields.find(x => x.value == v.field)
v.fieldObj = field
})
}else{
value.conditions = [{}]
value.method = 'AND'
}
// this.$emit("confirm", value)
}
@@ -0,0 +1,91 @@
<template>
<el-dialog
:close-on-click-modal="false"
:visible.sync="sendMsgDialogVisible"
title="请在下方填写需要发送的内容"
width="50%"
>
<el-form :model="formData" label-width="80px" ref="sendForm">
<el-form-item
:rules="[{required: true, message: '请选择发送方式', trigger: ['blur', 'change']}]"
label="发送方式"
prop="sendTypes">
<el-checkbox-group size="medium" v-model="formData.sendTypes">
<el-checkbox border label="4">短信发送</el-checkbox>
<!-- <el-checkbox border label="4">微信发送</el-checkbox>-->
</el-checkbox-group>
</el-form-item>
<el-form-item
:rules="[{required: true, message: '请选择发送内容', trigger: ['blur', 'change']}]"
label="发送内容"
prop="content">
<el-input
:rows="6"
placeholder="请输入内容"
type="textarea"
v-model="formData.content">
</el-input>
</el-form-item>
<!-- <el-form-item></el-form-item>-->
<!-- <el-alert-->
<!-- :title="formData.url"-->
<!-- description="如果您发送的内容需要含有链接,请把上述内容复制到发送内容里面,不要随意修改!"-->
<!-- show-icon-->
<!-- type="warning">-->
<!-- </el-alert>-->
</el-form>
<span class="dialog-footer" slot="footer">
<el-button @click="sendMsgDialogVisible = false">取 消</el-button>
<el-button @click="sendMsgToNotWelfareUsers" type="primary">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
module.exports = {
name: "CustomMessage",
props: {},
data() {
return {
sendMsgDialogVisible: false,
formData: {
sendTypes: [],
content: null
}
}
},
methods: {
open() {
this.sendMsgDialogVisible = true
this.$nextTick(() => {
this.$refs.sendForm.resetFields()
})
},
close() {
this.sendMsgDialogVisible = false
},
sendMsgToNotWelfareUsers() {
this.$refs.sendForm.validate((valid) => {
if (valid) {
this.$emit('confirm', {
sendTypes: JSON.stringify(this.formData.sendTypes),
content: this.formData.content
})
}
})
}
},
created() {
}
}
</script>
<style scoped>
</style>
@@ -1,10 +1,11 @@
<template>
<el-select v-model="value" :placeholder="placeholder" @change="onChange" :disabled="disabled" :clearable="clearable"
<el-select v-model="valueAsString" :placeholder="placeholder" @change="onChange" :disabled="disabled" :clearable="clearable"
:style="style"
:multiple="multiple"
:size="size">
<el-option
v-for="item in options"
v-if="!item.disabled"
:key="item[option_value]"
:label="item[option_label]"
:value="item[option_value]">
@@ -63,6 +64,17 @@ module.exports = {
options: []
}
},
computed:{
valueAsString(){
if(Array.isArray(this.value)){
return this.value
}else{
return this.value ? this.value.toString() : ''
}
}
},
watch: {
code(val) {
this.flushOptions()
@@ -0,0 +1,210 @@
<template>
<div>
<el-tabs class="customer-tab" type="card" @tab-click="jump" v-model="tabName">
<el-tab-pane v-for="(tab, index) in tabs" :name="tab.refName" :key="index" :label="tab.name"
v-if="tab.visible"
></el-tab-pane>
</el-tabs>
<div class="scroll-content" @scroll="onScroll" :style="{height:h+'px'}">
<div v-for="(item,index) in tabs" :key="item.refName" class="scroll-item" v-if="item.visible">
<div class="line-name">
<h5>{{ item.name }}</h5>
</div>
<div>
<slot :name="item.refName"></slot>
</div>
</div>
<div class="scroll-item">
<slot name="audit"></slot>
</div>
</div>
</div>
</template>
<script>
module.exports = {
name: "ELTabPlus",
props: {
tabs: {
type: Array,
default: []
},
h: {
type: Number,
default: 700
}
},
data() {
return {
tabName: null
}
},
methods: {
jump(tab, event) {
let target = document.querySelector('.scroll-content')
let scrollItems = document.querySelectorAll('.scroll-item')
// 判断滚动条是否滚动到底部
if (target.scrollHeight <= target.scrollTop + target.clientHeight) {
this.tabIndex = tab.index.toString()
}
let totalY = scrollItems[tab.index].offsetTop - scrollItems[0].offsetTop // 锚点元素距离其offsetParent(这里是body)顶部的距离(待滚动的距离)
let distance = document.querySelector('.scroll-content').scrollTop // 滚动条距离滚动区域顶部的距离
// let distance = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset // 滚动条距离滚动区域顶部的距离(滚动区域为窗口)
// 滚动动画实现, 使用setTimeout的递归实现平滑滚动,将距离细分为50小段,10ms滚动一次
// 计算每一小段的距离
let step = totalY / 50
if (totalY > distance) {
smoothDown(document.querySelector('.scroll-content'))
} else {
let newTotal = distance - totalY
step = newTotal / 50
smoothUp(document.querySelector('.scroll-content'))
}
// 参数element为滚动区域
function smoothDown(element) {
if (distance < totalY) {
distance += step
element.scrollTop = distance
setTimeout(smoothDown.bind(this, element), 10)
} else {
element.scrollTop = totalY
}
}
// 参数element为滚动区域
function smoothUp(element) {
if (distance > totalY) {
distance -= step
element.scrollTop = distance
setTimeout(smoothUp.bind(this, element), 10)
} else {
element.scrollTop = totalY
}
}
console.log(this.tabName)
},
onScroll(e) {
if (e.target.scrollTop === 0) {
this.tabName = this.tabs[0].refName
return
}
$('#app > div.guava-main-content > span > div.el-card').each((idx, item) => {
if ($(item).is(':visible')) {
const scrollItems = $(item).find('.scroll-item')
for (let i = scrollItems.length - 1; i >= 0; i--) {
let judge = e.target.scrollTop >= scrollItems[i].offsetTop - scrollItems[0].offsetTop - 300
if (judge) {
this.tabIndex = i.toString()
this.tabName = this.tabs[this.tabIndex].refName
break
}
}
}
})
},
scrollEnd() {
this.$nextTick(() => {
setTimeout(() => {
$('#app > div.guava-main-content > span > div.el-card').each((idx, item) => {
if ($(item).is(':visible')) {
const scrollContent = $(item).find('.scroll-content')[0]
scrollContent.scrollTop = scrollContent.scrollHeight
}
})
// document.querySelector('.scroll-content').scrollTop = document.querySelector('.scroll-content').scrollHeight
this.tabName = 'audit'
}, 250)
})
}
},
created() {
}
}
</script>
<style scoped>
::-webkit-scrollbar {
display: none;
}
.scrollbar {
height: 10px;
background-color: #f1f1f1;
}
.scrollbar-thumb {
border-radius: 10px;
background-color: #888;
}
.scrollbar-thumb:hover {
background-color: #555;
}
.scroll-content {
overflow-x: hidden;
overflow-y: auto;
position: relative;
margin-top: 10px;
}
.customer-tab {
/*width: 100%;*/
background-color: #f5f7fa;
padding: 5px;
height: 50px;
/*display: flex;*/
/*overflow-x: scroll;*/
}
.line-name {
padding-left: 10px;
position: relative;
}
.line-name::before {
content: "";
width: 5px;
background: #11879f;
display: inline-block;
position: absolute;
left: 0;
top: 0;
bottom: 0;
}
.el-tabs--card > .el-tabs__header {
border-bottom: none;
margin: 0;
}
.el-tabs--card > .el-tabs__header .el-tabs__nav {
/*width: 100%;*/
/*display: flex;*/
/*justify-content: space-around;*/
border: none;
}
.el-tabs--card > .el-tabs__header .el-tabs__nav .el-tabs__item {
text-align: center;
border: none;
}
.el-tabs--card > .el-tabs__header .el-tabs__nav .is-active {
border-radius: 4px;
background-color: #1867b0;
color: #fff;
}
</style>
@@ -78,4 +78,4 @@ module.exports = {
<style>
</style>
</style>
@@ -1,7 +1,7 @@
<template>
<div>
<div v-if="view" class="viewFile">
<div v-for="(file,index) in files" class="viewFileItem" title="点击查看" @click="showSource(file,index,$event)">
<div v-for="(file,index) in files" class="viewFileItem" title="点击查看" @click="showSource(file,index,$event,files)">
<template v-if="resolvingShowByFileName(file.filename) == 1">
<el-image
@@ -17,7 +17,9 @@
:xlink:href="wpUploadFileShowResolving.getFileItemShowIcon(resolvingShowByFileName(file.filename), file.filepath, true)"></use>
</svg>
</template>
<div :title="file.filename" class="viewFileName">{{ file.filename }}</div>
<div :title="file.filename" class="viewFileName" title="点击下载" @click.stop="downLoadFile(file)">
<i class="el-icon-download"></i> {{file.filename }}
</div>
</div>
</div>
@@ -34,16 +36,16 @@
drag
:on-preview="handlePreview"
:data="{source:source}"
multiple>
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或<em>点击上传</em>
<!-- <span @click.stop="openPicture">或<em>图库上传</em></span>-->
<span @click.stop="openPicture">或<em>图库上传</em></span>
<!-- <slot name="el-upload__tip"></slot>-->
<div class="el-upload__tip" slot="tip" v-if="showTip">
请上传
<template v-if="max_size"> 大小不超过 <b style="color: #f56c6c">{{ max_size }}MB</b></template>
<template v-if="max_size"> 大小不超过 <b style="color: #f56c6c">{{ max_size / 1024 / 1024 }}MB</b></template>
<template v-if="size"> 尺寸为 <b style="color: #f56c6c">{{ size }}</b></template>
<template v-if="type"> 格式为 <b style="color: #f56c6c">{{ type.join("/") }}</b></template>
的文件
@@ -63,10 +65,9 @@
:on-exceed="handleExceed"
:on-preview="handlePreview"
:data="{source:source}"
class="x100000"
multiple>
class="x100000">
<el-button size="small" type="primary">点击上传</el-button>
<el-button size="small" type="primary" @click.stop="openPicture">从图库选择</el-button>
<!-- <el-button size="small" type="primary" @click.stop="openPicture">从图库选择</el-button>-->
<!-- <slot name="el-upload__tip"></slot>-->
<div class="el-upload__tip" slot="tip" v-if="showTip">
请上传
@@ -569,13 +570,16 @@ module.exports = {
/**
* 查看资源
*/
showSource(showItem, index, e) {
showSource(showItem, index, e,files) {
const picArray = files.filter(o => [1,2,3].includes(this.resolvingShowByFileName(o.filename)))
const viewFileParent = $(e.target).closest(".viewFile")
const show = this.resolvingShowByFileName(showItem.filename)
if (show == 1 || show == 2 || show == 3) {
const picIndex = picArray.indexOf(showItem)
const vv = new Viewer(viewFileParent.clone()[0], {
url: 'src',
initialViewIndex: index
initialViewIndex: picIndex !== -1 ? picIndex : 0
})
vv.show()
} else if (show == 4 || show == 5 || show == 7) {
@@ -703,7 +707,6 @@ module.exports = {
return FILE_DOMAIN + fileItem;
},
updateFileList(val) {
if (!val || !val.length) {
this.fileList = []
@@ -715,7 +718,7 @@ module.exports = {
},
change(fileList) {
//此处要把origin传到父组件 防止图库里的图片被删除
this.$emit("update:files", fileList.map(v => {
this.$emit("update:files",fileList.filter(v=>v.data || v.id).map(v => {
return {
origin: v.origin,
...v.data
@@ -725,6 +728,32 @@ module.exports = {
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 ${this.max} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
// async customUpload(file,fileList){
// console.log(file)
// console.log(file.onSuccess)
// let formdata = new FormData()
// console.log(this)
// formdata.append('file', file.file)
// debugger
// try {
// const res = await axios({
// url: FILE_UPLOAD_ADDRESS,
// method: 'post',
// headers: {
// 'Content-type': 'multipart/form-data',
// },
// data: formdata
// })
// if(res.data && res.data.code===0){
// file.onSuccess(res.data)
// }
// console.log(res)
// }catch (e){
// console.error(e)
// }
// },
onSuccess(response, file, fileList) {
if (response.code === 0) {
const {data} = response
@@ -789,7 +818,6 @@ module.exports = {
console.log(this.selectPictures)
},
confirmPictures() {
debugger
if (this.selectPictures.length === 0) {
this.$message.warning('请选择图片')
return
@@ -821,6 +849,9 @@ module.exports = {
this.fileList = fileList
this.change(this.fileList)
this.picDialogVisible = false
},
downLoadFile({id, filename}) {
window.open('/file_server/download?id=' + id)
}
},
@@ -852,11 +883,11 @@ module.exports = {
position: relative;
display: flex;
width: 100%;
max-height: 256px;
/*max-height: 256px;*/
flex-direction: row;
flex-wrap: wrap;
overflow-y: auto;
overflow-x: hidden;
/*overflow-y: auto;*/
/*overflow-x: hidden;*/
/*height: 150px;*/
}
@@ -73,10 +73,12 @@ module.exports = {
}, {
prop: 'mobile',
label: '电话',
}, {
prop: 'threeUnitName',
label: '科室',
}, {
},
// {
// prop: 'threeUnitName',
// label: '科室',
// },
{
prop: 'unitname',
label: '单位',
}, {
@@ -104,7 +106,7 @@ module.exports = {
selectUser: [],
pageForm: {
unionId: this.union,
sqlCnd: JSON.stringify(this.sql_cnd),
// sqlCnd: JSON.stringify(this.sql_cnd),
searchName: "username",
searchKeyword: "",
pageNumber: 1,
@@ -145,7 +147,9 @@ module.exports = {
},
pageData() {
this.tableLoading = true
if(this.sql_cnd){
this.pageForm.sqlCnd = btoa(this.sql_cnd[0])
}
$.post("/platform/member/change/mange/userPageData", this.pageForm, (data) => {
this.tableLoading = false
if (data.code == 0) {
@@ -8,7 +8,7 @@
<el-form-item label="" prop="subjectName">
<div class="s-title-wrap">
<el-row align="middle" style="width: 100%" type="flex">
<el-col :xl="20"
<el-col :xl="15"
style="border: 1px dashed rgb(217, 217, 217);border-radius:6px;display: flex;align-items: center;">
<el-input v-model="s.subjectName" class="text-input"
data-type="subject"></el-input>
@@ -83,9 +83,21 @@
</template>
</el-table-column>
<el-table-column width="120px" label="所属供应商">
<!-- <el-table-column width="120px" label="所属供应商">-->
<!-- <template slot-scope="{row}">-->
<!-- {{ row.shoppingName ? row.shoppingName : '暂无' }}-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="备注1">
<template slot-scope="{row}">
{{ row.shoppingName ? row.shoppingName : '暂无' }}
<el-input v-model="row.supplier" type="textarea" max="100"></el-input>
</template>
</el-table-column>
<el-table-column label="备注2">
<template slot-scope="{row}">
<el-input v-model="row.simpleDesc" type="textarea" max="100"></el-input>
</template>
</el-table-column>
@@ -120,26 +132,17 @@
</el-link>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
label="默认选择"
width="100px">
<template slot-scope="{row,$index}">
<el-checkbox v-model="row.isSystemDefault"
@change="(val,event)=>{systemDefaultChange(idx,$index,val)}"
></el-checkbox>
</template>
</el-table-column>
<!-- <el-table-column
align="center"
header-align="center"
label="默认选择几个"
width="100px">
<template slot-scope="{row,$index}">
<el-input v-model="row.defaultSelectNum"></el-input>
</template>
</el-table-column>-->
<!-- <el-table-column-->
<!-- align="center"-->
<!-- header-align="center"-->
<!-- label="默认值"-->
<!-- width="100px">-->
<!-- <template slot-scope="{row,$index}">-->
<!-- <el-checkbox v-model="row.isSystemDefault"-->
<!-- @change="(val,event)=>{systemDefaultChange(idx,$index,val)}"-->
<!-- ></el-checkbox>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="没选系统自动分配" width="150px">
<template slot-scope="{row,$index}">
<el-checkbox v-model="row.isDefaultOption"
@@ -160,8 +160,9 @@ module.exports = {
// if (_this.isEmptyEditor()) {
// content = ''
// }
_this.$emit('input', content)
_this.$emit('catchData', content, text)
const newContent = content.replaceAll('<img', '<image');
_this.$emit('input', newContent)
_this.$emit('catchData', newContent, text)
}
//配置图片上传
@@ -206,7 +207,7 @@ module.exports = {
const formData = new FormData()
formData.append('file', file, file.name)
formData.append("folderPath", "/wangEditorImg/")
return $.ajax({
return jQuery.ajax({
url: '/file_server/uploadFile',
type: 'post',
data: formData,
@@ -271,12 +271,13 @@ module.exports = {
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if (this.is_A06 || this.is_sysadmin || this.is_H03) {
this.units = await getUnits(this.pageForm.unionId)
/* if (this.is_A06 || this.is_sysadmin || this.is_H03) {
this.units = await getUnits(this.pageForm.unionId)
this.ActivityUnits = await getActivityUnits(this.pageForm.activityUnionId)
} else {
this.units = await getUnits(this.unionid)
}
}*/
},
async getActivityGroup() {
this.pageForm.groupId = ''
@@ -300,11 +301,11 @@ module.exports = {
},
async created() {
this.unions = await getUnions(null)
this.ActivityUnions = await getActivityUnions()
// this.ActivityUnions = await getActivityUnions()
await this.flushUnits()
await this.getActivityGroup()
this.viewGroupName()
}
}
</script>
</script>
@@ -48,7 +48,7 @@
</el-row>
<el-row class="query-row"
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
<el-col class="query-title">人员类型:</el-col>
<el-col class="query-content">
<el-tag
@@ -75,7 +75,7 @@
</el-row>
<el-row class="query-row"
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
<el-col class="query-title">在职状态:</el-col>
<el-col class="query-content">
<el-tag
@@ -101,7 +101,7 @@
<el-row class="query-row"
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
<el-col class="query-title">部门查询:</el-col>
<el-col class="query-content">
<el-row :gutter="20">
@@ -130,7 +130,7 @@
</el-col>
</el-row>
<template v-if="is_H10===true||is_A06===true||is_sysadmin===true">
<template v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
<!--<el-row class="query-row">
<el-col class="query-title">活动部门:</el-col>
@@ -208,12 +208,11 @@
</template>
<el-row class="query-row"
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true">
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
<el-col class="query-title">协会:</el-col>
<el-col class="query-content">
<el-select v-model="pageForm.clubId" placeholder="请选择协会" @change="doSearch"
filterable
:clearable="is_H10===true||is_A06===true||is_sysadmin===true||(is_H04===true&&is_H02===true)"
style="width: 100%">
<el-option
v-for="item in clubOptions"
@@ -238,7 +237,7 @@
</el-row>
<el-row class="query-row"
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
<el-col class="query-title">年龄范围:</el-col>
<el-col class="query-content">
<el-row type="flex" style="align-items: center">
@@ -259,7 +258,7 @@
<el-row class="query-row"
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H04===true">
v-if="is_H10===true||is_A06===true||is_sysadmin===true||is_H02===true||is_H04===true">
<el-col class="query-title">条件匹配:</el-col>
<el-col class="query-content">
<user-cnd @cnd="(v)=>{this.$set(this.pageForm,'activityUserCnd',v)}"></user-cnd>
@@ -535,12 +534,13 @@ module.exports = {
},
async flushUnits() {
this.$set(this.pageForm, "unitId", "")
if (this.is_sysadmin || this.is_A06) {
this.units = await getUnits(this.pageForm.unionId)
/*if (this.is_sysadmin || this.is_A06) {
this.units = await getUnits(this.pageForm.unionId)
this.activityUnits = await getActivityUnits(this.pageForm.activityUnionId)
} else {
this.units = await getUnits(this.unionid)
}
}*/
},
async pageData() {
sublime.showLoadingbar()
@@ -649,8 +649,9 @@ module.exports = {
async created() {
await this.getRolesAndUnion()
this.clubOptions = await getClubsByRole()
this.unions = await getUnions(null)
if (((this.is_sysadmin || this.is_A06 || this.is_H02) === false) && this.is_H04 === true) {
/* if (((this.is_sysadmin || this.is_A06 || this.is_H02) === false) && this.is_H04 === true) {
this.unions = await getUnionList(this.unionid)
this.$set(this.pageForm, "unionId", this.unions[0].id)
} else {
@@ -661,9 +662,9 @@ module.exports = {
if (this.clubOptions.length > 0) {
this.$set(this.pageForm, "clubId", this.clubOptions[0].stid)
}
}
}*/
await this.flushUnits()
await this.getActivityGroup()
// await this.getActivityGroup()
this.personTypeOptions = await getDictOptions("UserType")
this.userStateOptions = await getDictOptions("UserState")
await this.getMenuOptions()
@@ -102,7 +102,8 @@ module.exports = {
selectUser: [],
pageForm: {
unionId: this.union,
sqlCnd: JSON.stringify(this.sql_cnd),
// sqlCnd: JSON.stringify(this.sql_cnd),
// sqlCnd: this.sql_cnd,
searchName: "username",
searchKeyword: "",
pageNumber: 1,
@@ -146,7 +147,9 @@ module.exports = {
},
pageData() {
this.tableLoading = true
if(this.sql_cnd){
this.pageForm.sqlCnd = btoa(this.sql_cnd[0])
}
$.post("/platform/welfare/member/mange/userPageData", this.pageForm, (data) => {
this.tableLoading = false
if (data.code == 0) {
@@ -0,0 +1,87 @@
<template>
<el-dialog title="快递物流信息" width="60%" :visible.sync="dialogVisible" :append-to-body="true"
top="50px">
<el-tabs v-model="activeName" v-loading="loading">
<el-tab-pane v-for="(v,k) in courierNumberInfoData"
:label="k"
:key="k"
:name="k">
<div style="height: 600px;overflow-y: auto">
<div class="alert alert-info" v-if="v.length>1">
<strong>此套餐有多个快递单号</strong>
</div>
<template v-for="item in v" :key="item.courierNumber">
<div class="alert alert-info">
<strong>快递单号</strong>
{{ item.courierNumber || '暂无' }}
</div>
<div>
<el-timeline reverse="true"
v-if="item.logisticsTrace && item.logisticsTrace.logisticsTraceDetailList">
<el-timeline-item
:color="timeline.color"
:key="timelineIndex"
:timestamp="moment(timeline.time).format('YYYY-MM-DD HH:mm:ss')"
v-for="(timeline, timelineIndex) in item.logisticsTrace.logisticsTraceDetailList">
{{ timeline.desc }}
</el-timeline-item>
</el-timeline>
<div v-else>
<el-empty description="暂无物流信息"></el-empty>
</div>
</div>
</template>
</div>
</el-tab-pane>
</el-tabs>
</el-dialog>
</template>
<script>
module.exports = {
name: "CourierNumberInfo",
props: {},
data() {
return {
dialogVisible: false,
courierNumberInfoData: [],
activeName: null,
loading: true
}
},
methods: {
async openView(welfareId, userId) {
this.dialogVisible = true
this.loading = true
const {
code,
data,
msg
} = await $.get('/platform/welfare/common/courierNumberInfo', {welfareId, userId})
this.loading = false
if (code === 0) {
if (data == null || data.length === 0) {
this.dialogVisible = false
this.$message.warning('您还没有选择福利套餐')
return
}
this.courierNumberInfoData = data
const keys = Object.keys(this.courierNumberInfoData)
this.activeName = keys && keys[0]
} else {
this.$message.warning(msg)
}
}
},
created() {
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,30 @@
<template>
<el-dialog title="套餐评价" width="60%" :visible.sync="dialogVisible" :append-to-body="true" top="50px">
</el-dialog>
</template>
<script>
module.exports = {
name: "Evaluate",
props: {},
data() {
return {
dialogVisible: false
}
},
methods: {
async openView(welfareId, userId) {
this.dialogVisible = true
}
},
created() {
}
}
</script>
<style scoped>
</style>
@@ -3,125 +3,22 @@
<template name="基本信息">
<div style="width: 100%;padding: 16px 0;">
<h2 class="van-doc-demo-block__title" style="font-weight: bolder;color: RGB(8,23,118)">
子女信息</h2>
</div>
<van-cell-group class="info">
<van-cell title="教职工" :value="viewData.jzgname"></van-cell>
<van-cell title="职称" :value="viewData.dj_zc"></van-cell>
<van-cell title="学历" :value="viewData.dj_xl"></van-cell>
<van-cell title="家庭住址" :value="viewData.dj_jtzz"></van-cell>
<van-cell title="户口所在地" :value="viewData.dj_hjszd"></van-cell>
<van-cell title="户口所在地派出所" :value="viewData.dj_hjssxq"></van-cell>
<van-cell title="联系电话" :value="viewData.dj_iphone"></van-cell>
<van-cell title="是否集体户" :value="viewData.isCollectiveHouseholds">
{{viewData.isCollectiveHouseholds ?'是':'否'}}
</van-cell>
<van-cell title="子女姓名" :value="viewData.dj_znname"></van-cell>
<van-cell title="性别" :value="viewData.dj_znsex"></van-cell>
<van-cell title="出生日期" :value="viewData.dj_znzsny" v-if="viewData.dj_djlx===1"></van-cell>
<van-cell title="身份证号" :value="viewData.dj_znidcard"></van-cell>
<van-cell title="正读学校" :value="viewData.dj_jdxx"></van-cell>
<van-cell title="户籍所在地" :value="viewData.dj_hjszd"></van-cell>
<van-cell title="拟选学校" :value="viewData.dj_sqxx"></van-cell>
<!-- <tamplate v-if="viewData.dj_djlx===3">
<van-cell title="所在小学" :value="viewData.dj_szxx"></van-cell>
<van-cell title="学区中学" :value="viewData.dj_djlx"></van-cell>
<van-cell title="意向学校" :value="viewData.dj_sqxx_name"></van-cell>
<van-cell title="语文" :value="viewData.dj_qmkfy"></van-cell>
<van-cell title="数学" :value="viewData.dj_qmkfs"></van-cell>
<van-cell title="外语" :value="viewData.dj_qmkfw"></van-cell>
</tamplate>-->
<!-- <template>
<van-cell title="子女出生年月" :value="viewData.dj_znzsny" v-if="viewData.dj_djlx===2"></van-cell>
<van-cell title="户籍所属辖区" :value="viewData.dj_hjssxq"></van-cell>
<van-cell title="户籍所属小学" :value="viewData.dj_hjssxx" v-if="viewData.dj_djlx===2"></van-cell>
<van-cell title="子女户籍所在地" :value="viewData.dj_znhjszd"></van-cell>
</template>-->
</van-cell-group>
<div style="width: 100%;padding: 16px 0;">
<h2 class="van-doc-demo-block__title" style="font-weight: bolder;color: RGB(8,23,118)">
教职工信息</h2>
</div>
<van-cell-group class="info">
<van-cell title="教职工" :value="viewData.jzgname"></van-cell>
<van-cell title="工号" :value="viewData.dj_gzh"></van-cell>
<van-cell title="职务、职称" :value="viewData.dj_zw" v-if="viewData.dj_djlx===2"></van-cell>
<!-- <van-cell title="技术职称" :value="viewData.dj_zc"></van-cell>
<van-cell title="职称评定时间" :value="viewData.dj_zcsj"></van-cell>
<van-cell title="行政职级任职时间" :value="viewData.dj_rzsj"></van-cell>
<van-cell title="省级人才称号" :value="viewData.dj_rcch"></van-cell>
<van-cell title="获人才称号时间" :value="viewData.dj_rcchsj"></van-cell>
<van-cell title="荣誉或奖项" :value="viewData.dj_rxjx" v-if="viewData.dj_djlx===3"></van-cell>-->
<van-cell title="手机号码" :value="viewData.dj_iphone"></van-cell>
<van-cell title="所在单位" :value="viewData.dj_szdw"></van-cell>
<van-cell title="用工方式" :value="viewData.dj_ygfs"></van-cell>
<!-- <tamplate v-if="viewData.dj_djlx===2">
<van-cell title="教职工户籍所在地" :value="viewData.dj_hjszd"></van-cell>
<van-cell title="房产证地址" :value="viewData.dj_jtzz"></van-cell>
</tamplate>-->
<van-cell title="备注" :value="viewData.dj_bz"></van-cell>
<van-field label="户口簿图片" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">户口簿图片</div>
</template>
<template #input>
<vant-file-upload :files.sync="hkfile" view :del="false"
v-if="hkfile&&hkfile.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<van-field label="子女出生证图片" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">子女出生证图片</div>
</template>
<template #input>
<vant-file-upload :files.sync="csfile" view :del="false"
v-if="csfile&&csfile.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<van-field label="学历学位证或教师资格证" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">学历学位证或教师资格证</div>
</template>
<template #input>
<vant-file-upload :files.sync="jszgfile" view :del="false"
v-if="jszgfile&&jszgfile.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<van-field label="聘用合同复印件" style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">聘用合同复印件</div>
</template>
<template #input>
<vant-file-upload :files.sync="pyhtfile" view :del="false"
v-if="pyhtfile&&pyhtfile.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<!-- <van-field label="房产证或无房证明" style="flex-flow: column" v-if="viewData.dj_djlx===2">
<template #label>
<div class="mb10">房产证或无房证明</div>
</template>
<template #input>
<vant-file-upload :files.sync="fcfile" view :del="false"
v-if="fcfile&&fcfile.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>
<van-field label="六上期末考分证明" style="flex-flow: column" input-align="left" v-if="viewData.dj_djlx===3">
<template #label>
<div class="mb10">六上期末考分证明</div>
</template>
<template #input>
<vant-file-upload :files.sync="qmkffile" view :del="false"
v-if="qmkffile&&qmkffile.length"></vant-file-upload>
<span v-else>暂无</span>
</template>
</van-field>-->
</van-cell-group>
</template>
@@ -250,4 +147,4 @@ module.exports = {
width: 8.2em !important;
}
</style>
</style>
@@ -1,213 +1,49 @@
<template>
<el-tabs v-model="activeName">
<el-tab-pane label="申请信息" name="1">
<el-form label-suffix=":" style="padding: 20px 0" label-width="160px">
<el-row gutter="20">
<vi-title title="子女信息"></vi-title>
<el-col :span="12">
<el-form-item label="子女姓名">
{{ viewData.dj_znname }}
</el-form-item>
</el-col>
<!-- <template v-if="viewData.dj_djlx===3">
<el-col :span="12">
<el-form-item label="所在小学">
{{ viewData.dj_szxx }}
</el-form-item>
</el-col>
&lt;!&ndash; &ndash;&gt;
<el-col :span="12">
<el-form-item label="学区中学">
{{ viewData.dj_xqzx }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="意向学校">
{{ viewData.dj_sqxx_name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="六上期末考分语文">
{{ viewData.dj_qmkfy }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="六上期末考分数学">
{{ viewData.dj_qmkfs }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="六上期末考分外语">
{{ viewData.dj_qmkfw }}
</el-form-item>
</el-col>
</template>-->
<template>
<el-col :span="12">
<el-form-item label="性别">
{{ viewData.dj_znsex }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="出生日期">
{{ viewData.dj_znzsny }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证号">
{{ viewData.dj_znidcard }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="正读学校">
{{ viewData.dj_jdxx }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="户籍所在地">
{{ viewData.dj_hjszd }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟选学校">
{{ viewData.dj_sqxx }}
</el-form-item>
</el-col>
<!-- <el-col :span="12" v-if="viewData.dj_djlx==2">
<el-form-item label="子女出生年月">
{{ viewData.dj_znzsny }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="户籍所属辖区">
{{ viewData.dj_hjssxq }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="户籍所属小学" v-if="viewData.dj_djlx==2">
{{ viewData.dj_hjssxx }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="子女户籍所在地">
{{ viewData.dj_znhjszd }}
</el-form-item>
</el-col>
</template>-->
</template>
</el-row>
<el-row gutter="20">
<vi-title title="教职工信息"></vi-title>
<!-- <el-col :span="12">
<el-form-item label="子女身份证号">
{{ viewData.dj_znidcard }}
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="教职工">
{{ viewData.jzgname }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="工号">
{{ viewData.dj_gzh }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="职务、职称">
{{ viewData.dj_zw }}
</el-form-item>
</el-col>
<!-- <el-col :span="12" v-if="viewData.dj_djlx===2">
<el-form-item label="工作单位起始时间">
{{ viewData.dj_rxsj }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政职务级别">
{{ viewData.dj_zw }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="行政职级任职时间">
{{ viewData.dj_rzsj }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="省级人才称号">
{{ viewData.dj_rcch }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="获人才称号时间">
{{ viewData.dj_rcchsj }}
</el-form-item>
</el-col>
<el-col :span="12" v-if="viewData.dj_djlx===3">
<el-form-item label="荣誉或奖项">
{{ viewData.dj_rxjx }}
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="手机号码">
{{ viewData.dj_iphone }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="所在单位">
{{ viewData.dj_szdw }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用工方式">
{{ viewData.dj_ygfs }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注">
{{ viewData.dj_bz }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="户口簿图片">
<file-upload :files="hkfile" view></file-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="子女出生证">
<file-upload :files="csfile" view></file-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="学历学位证或教师资格证">
<file-upload :files="jszgfile" view></file-upload>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="聘用合同复印件">
<file-upload :files="pyhtfile" view></file-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-descriptions border class="descriptions-form">
<el-descriptions-item label="登记类型" :span="3">
<dict-tag :options="dict.type.childrenSchoolRegisterType" :value="viewData.dj_djlx"></dict-tag>
</el-descriptions-item>
<el-descriptions-item label="青年教职工姓名">
{{ viewData.dj_xm }}
</el-descriptions-item>
<el-descriptions-item label="职称">
{{ viewData.dj_zc }}
</el-descriptions-item>
<el-descriptions-item label="学历">
{{ viewData.dj_xl }}
</el-descriptions-item>
<el-descriptions-item label="青年教职工家庭住址" :span="3">
{{ viewData.dj_jtzz }}
</el-descriptions-item>
<el-descriptions-item label="户口所在地" :span="3">
{{ viewData.dj_hjszd }}
</el-descriptions-item>
<el-descriptions-item label="户口所在地派出所" :span="3">
{{ viewData.dj_hjssxq }}
</el-descriptions-item>
<el-descriptions-item label="联系电话">
{{ viewData.dj_iphone }}
</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="子女姓名">
{{ viewData.dj_znname }}
</el-descriptions-item>
<el-descriptions-item label="子女性别">
{{ viewData.dj_znsex }}
</el-descriptions-item>
<el-descriptions-item label="子女出生年月">
{{ viewData.dj_znzsny }}
</el-descriptions-item>
<el-descriptions-item label="备注" :span="3">
{{ viewData.dj_babz }}
</el-descriptions-item>
<el-descriptions-item label="附件" :span="3">
<file-upload view :files="viewData.files"></file-upload>
</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane v-if="viewData.dj_fghshr" label="分工会审核信息" name="2">
<el-card>
@@ -218,9 +54,6 @@
<el-form-item label="审核时间">
<div>{{ viewData.dj_fghshsj }}</div>
</el-form-item>
<!-- <el-form-item label="审核结果">
<div>{{ [2, 4, 5].includes(viewData.dj_sqzt) ? '通过' : '不通过' }}</div>
</el-form-item>-->
<el-form-item label="审核意见">
<div>{{ viewData.dj_fghshyj }}</div>
</el-form-item>
@@ -236,33 +69,12 @@
<el-form-item label="审核时间">
<div>{{ viewData.dj_xghshsj }}</div>
</el-form-item>
<!-- <el-form-item label="审核结果">
<div>{{ viewData.dj_sqzt === 5 ? '通过' : '不通过' }}</div>
</el-form-item>-->
<el-form-item label="审核意见">
<div>{{ viewData.dj_xghshyj }}</div>
</el-form-item>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane v-if="viewData.dj_bashr" label="备案信息" name="4">
<el-card>
<el-form label-position="right" label-width="100px">
<el-form-item label="备案人">
<div>{{ viewData.dj_bashr }}</div>
</el-form-item>
<el-form-item label="备案时间">
<div>{{ viewData.dj_bashsj }}</div>
</el-form-item>
<el-form-item label="备案信息">
<div>{{ viewData.dj_sfrx ? '继续等待' : '放弃名额' }}</div>
</el-form-item>
<el-form-item label="备注">
<div>{{ viewData.dj_babz }}</div>
</el-form-item>
</el-form>
</el-card>
</el-tab-pane>
<slot name="audit">
</slot>
@@ -272,6 +84,7 @@
<script>
module.exports = {
dicts: ['childrenSchoolRegisterType'],
props: {
activeName: {
type: String,
@@ -281,40 +94,20 @@ module.exports = {
data() {
return {
viewData: {},
hkfile: [],
csfile: [],
fcfile: [],
qmkffile: [],
jszgfile: [],
pyhtfile: [],
}
},
methods: {
async openView(row) {
this.viewData = row
const resp = await $.get('/platform/zgfw/rxdjxx/findfjList', {id: row.dj_id})
this.csfile = resp.data.filter(v => v.bz === "csfile")
this.hkfile = resp.data.filter(v => v.bz === "hkfile")
this.fcfile = resp.data.filter(v => v.bz === "fcfile")
this.qmkffile = resp.data.filter(v => v.bz === "qmkffile")
this.pyhtfile = resp.data.filter(v => v.bz === "pyhtfile")
this.jszgfile = resp.data.filter(v => v.bz === "jszgfile")
},
async openAudit(row, activeName) {
this.openView(row)
this.activeName = activeName
}
}
}
</script>
<style>
.rxdj-img {
width: 100px;
height: 100px;
margin-right: 10px;
border: 1px dashed grey;
}
</style>
@@ -0,0 +1,252 @@
<template>
<div>
<el-dialog
title="校工会修改"
top="50px"
:visible.sync="dialogVisible"
width="70%">
<el-form :model="AddFormData"
:rules="rules"
ref="AddForm"
class="applyForm"
label-width="0">
<el-descriptions border class="descriptions-form">
<el-descriptions-item label="登记类型" :span="3">
<el-form-item label-width="0" prop="dj_djlx"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-radio-group v-model="AddFormData.dj_djlx" size="small">
<el-radio v-for="item in currentYearSchoolPlans"
:key="item.id"
:label="item.bmlx"
:disabled="!item.bmkqzt"
border>
<span v-if="item.bmlx==1">
幼儿园({{ item.bmkssj + '至' + item.bmjssj }})
</span>
<span v-else-if="item.bmlx==2">
小学({{ item.bmkssj + '至' + item.bmjssj }})
</span>
</el-radio>
</el-radio-group>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="青年教职工姓名">
<el-form-item label-width="0" prop="dj_xm">
<el-input clearable v-model="AddFormData.dj_xm"
disabled
placeholder="青年教职工姓名"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="职称">
<el-form-item label-width="0" prop="dj_zc"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input clearable v-model="AddFormData.dj_zc"
placeholder="职称"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="学历"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-form-item label-width="0" prop="dj_xl">
<el-input clearable v-model="AddFormData.dj_xl"
placeholder="学历"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="青年教职工家庭住址" :span="3">
<el-form-item label-width="0" prop="dj_jtzz"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_jtzz" max="50"
placeholder="请填写家庭住址"
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="户口所在地" :span="3">
<el-form-item label-width="0" prop="dj_hjszd"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_hjszd" max="50"
placeholder="请填写户口所在地"
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="户口所在地派出所" :span="3">
<el-form-item label-width="0" prop="dj_hjssxq"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_hjssxq" max="50"
placeholder="请填写户口所在地派出所"
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="联系电话">
<el-form-item label-width="0" prop="dj_iphone"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_iphone" max="11"
placeholder="请填写联系电话"></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="是否集体户">
<el-form-item label-width="0" prop="isCollectiveHouseholds"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-radio-group v-model="AddFormData.isCollectiveHouseholds" size="small">
<el-radio :label="true" border>是</el-radio>
<el-radio :label="false" border>否</el-radio>
</el-radio-group>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="子女姓名">
<el-form-item label-width="0" prop="dj_znname"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-input v-model="AddFormData.dj_znname" max="30"
placeholder="请填写子女姓名"
></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="子女性别">
<el-form-item label-width="0" prop="dj_znsex"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-radio-group v-model="AddFormData.dj_znsex" size="small">
<el-radio label="男" border>男</el-radio>
<el-radio label="女" border>女</el-radio>
</el-radio-group>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="子女出生年月">
<el-form-item label-width="0" prop="dj_znzsny"
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
<el-date-picker v-model="AddFormData.dj_znzsny"
placeholder="请选择子女出生年月"
value-format="yyyy-MM-dd"
></el-date-picker>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="备注">
<el-form-item label-width="0" prop="dj_babz">
<el-input v-model="AddFormData.dj_babz" placeholder="备注"
max="200"></el-input>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
<span slot="footer" class="dialog-footer">
<el-row type="flex" justify="end" class="mt20">
<el-button type="" @click="dialogVisible=false">
关闭
</el-button>
<el-button type="primary" @click="adminSave">
保存
</el-button>
</el-row>
</span>
</el-dialog>
</div>
</template>
<script>
module.exports = {
name: "rxdjEdit",
dicts: ['childrenSchoolRegisterType'],
data() {
return {
id: null,
sqxxOptions: [],
dj_znzsny_placeholder: "",
planstatus: {dj_znzsny: null},
AddFormData: {
csfile: [],
hkfile: []
},
rules: {},
loading: false,
userList: {},
hkfile: [],
csfile: [],
qmkffile: [],
znnameOptions: [],
currentYearSchoolPlans: [],
dialogVisible: false
}
},
computed: {
typeStatus() {
if (this.AddFormData.dj_djlx) {
return this.currentYearSchoolPlans.find(v => v.bmlx === this.AddFormData.dj_djlx)
}
return null
}
},
methods: {
async open(id) {
const {code, msg, data} = await $.post('/platform/zgfw/rxdjsq/findOne', {id})
if (code === 0) {
this.AddFormData = data
this.dialogVisible = true
}
},
async adminSave() {
const {code, msg, data} = await $.post('/platform/zgfw/rxdj/sh/adminSave', {
info: JSON.stringify(this.AddFormData)
})
if (code === 0) {
this.$message.success(msg)
this.dialogVisible = false
} else {
this.$message.error(msg)
}
}
},
async created() {
$.get('/platform/zgfw/rxdjsq/schoolPlans').then(resp => {
if (resp.code === 0) {
this.currentYearSchoolPlans = resp.data
}
})
},
}
</script>
<style scoped>
.applyForm .el-row--flex .el-form-item {
flex: auto;
}
.descriptions-form .el-form-item {
margin-bottom: 0;
}
.disabled-group .el-radio {
pointer-events: none;
}
.nowrap-select-tag .el-select__tags {
flex-wrap: nowrap;
overflow: hidden;
}
.required-form-item::before {
content: '*';
color: #f56c6c;
margin-right: 3px;
}
.el-descriptions-item__label {
min-width: 180px;
}
.applyForm .el-table__empty-block {
background: unset;
min-height: 60px;
}
</style>