This commit is contained in:
Paidax
2024-11-29 09:03:59 +08:00
commit 2ffadd89a7
3480 changed files with 879405 additions and 0 deletions
@@ -0,0 +1,369 @@
<!--#
layout("/mobile/platform.html"){
#-->
<style>
.family-list-field .van-field__value .van-field__control {
flex-direction: column;
align-items: flex-start;
}
.family-list {
display: flex;
flex-direction: column;
width: 100%;
}
.family-list-cell .van-cell__label {
font-size: 14px;
}
.family-dialog .van-dialog__content {
padding: 10px;
}
</style>
<div id="app" v-cloak>
<van-nav-bar title="困难补助申请" left-arrow placeholder fixed @click-left="pjaxReplace('/mobile/index')"></van-nav-bar>
<van-form @submit="onSubmit" :show-error-message="false">
<van-cell inset>
<van-field
v-model="formData.userName"
label="申请人姓名"
readonly
required
:rules="[{ required: true, message: '请填写申请人姓名' }]"
></van-field>
<van-field
v-model="formData.loginName"
label="申请人工号"
readonly
required
:rules="[{ required: true, message: '请填写申请人工号' }]"
></van-field>
<van-field
v-model="formData.sex"
label="性别"
required
is-link
readonly
:rules="[{ required: true, message: '性别' }]"
clickable
@click="showSexPicker = true"
></van-field>
<van-popup v-model="showSexPicker" position="bottom">
<van-picker
show-toolbar
:columns="['男', '女']"
@confirm="onSexConfirm"
@cancel="showSexPicker=false"
></van-picker>
</van-popup>
<van-field
v-model="formData.unitName"
label="所在单位"
placeholder="所在单位"
readonly
:rules="[{ required: true, message: '所在单位' }]"
clearable
required
></van-field>
<van-field
v-model="formData.unionName"
label="所在分工会"
placeholder="所在分工会"
readonly
:rules="[{ required: true, message: '所在分工会' }]"
clearable
required
></van-field>
<van-field
v-model="formData.monthlyIncome"
label="本人月收入"
type="number"
placeholder="请填写本人月收入"
:rules="[{ required: true, message: '请填写本人月收入' }]"
required
></van-field>
<van-field
v-model="formData.birthday"
label="出生年月"
is-link
@click="showDatePicker = true"
required
:rules="[{ required: true, message: '请填写出生年月' }]"
></van-field>
<van-popup v-model="showDatePicker" position="bottom">
<van-datetime-picker
type="date"
:min-date="new Date(1900, 0, 1)"
:max-date="new Date()"
@confirm="onDateConfirm"
@cancel="showDatePicker=false"
></van-datetime-picker>
</van-popup>
<van-field
v-model="formData.mobile"
label="手机号码"
placeholder="请填写手机号码"
maxlength="20"
clearable
required
:rules="[{ required: true, message: '请填写手机号码' }]"
></van-field>
<van-field
v-model="formData.homeAddress"
label="家庭地址"
placeholder="请填写家庭地址"
maxlength="200"
clearable
required
:rules="[{ required: true, message: '请填写家庭地址' }]"
></van-field>
<van-field
v-model="formData.subsidyStandards"
label="款项"
placeholder="请选择款项"
is-link
@click="showSubsidyPicker = true"
required
:rules="[{ required: true, message: '请选择款项' }]"
></van-field>
<van-popup v-model="showSubsidyPicker" position="bottom">
<van-picker
show-toolbar
:columns="subsidyStandards"
@confirm="onSubsidyConfirm"
@cancel="showSubsidyPicker=false"
></van-picker>
</van-popup>
<van-field
v-model="formData.reason"
label="申请原因"
type="textarea"
placeholder="请简述申请原因"
maxlength="500"
required
:rules="[{ required: true, message: '请简述申请原因' }]"
></van-field>
<van-field
v-model="formData.remarks"
label="备注"
type="textarea"
placeholder="请简述备注"
maxlength="500"
></van-field>
<van-field name="familyList" label="家庭成员经济收入" @click="showDialog = true" required is-link
label-width="60%"
clickable
class="family-list-field">
</van-field>
<van-list class="family-list-cell">
<van-cell
v-for="(member, index) in formData.familyList"
:key="index"
:title="member.name"
:label="'年龄: ' + member.age + ' 岁, 关系: ' + member.relation + ', 月收入: ' + member.monthlyIncome + ' 元'"
is-link
@click="editMember(index)"
>
<template #right-icon>
<van-icon name="delete" color="red" @click.stop="removeMember(index)"></van-icon>
</template>
</van-cell>
</van-list>
<van-field name="files" label="附件" style="flex-flow: column" input-align="left">
<template #input>
<vant-file-upload :files.sync="formData.files"></vant-file-upload>
</template>
</van-field>
<van-field label="签字" required style="flex-flow: column">
<template #input>
<mobile-sign ref="signature" :my_sign.sync="formData.sign"></mobile-sign>
</template>
</van-field>
<!-- 家庭成员经济收入表格和附件上传等功能需要自定义实现 -->
<van-button round block type="info" native-type="submit">提交</van-button>
</van-cell>
</van-form>
<van-dialog v-model="showDialog" class="family-dialog" title="添加家庭成员" show-cancel-button
:before-close="handleBeforeClose">
<van-cell-group>
<van-field
v-model="newMember.name"
label="姓名"
placeholder="请输入姓名"
required
></van-field>
<van-field
v-model="newMember.age"
label="年龄(岁)"
type="number"
placeholder="请输入年龄"
required
></van-field>
<van-field
v-model="newMember.relation"
label="关系"
placeholder="请输入关系"
required
></van-field>
<van-field
v-model="newMember.monthlyIncome"
label="月收入(元)"
type="number"
placeholder="请输入月收入"
required
></van-field>
</van-cell-group>
</van-dialog>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [mobileMixins],
data() {
return {
id: GetQueryString("id"),
formData: {},
showSexPicker: false,
showDatePicker: false,
showSubsidyPicker: false,
subsidyStandards: [
'本人患重症处于康复期、新患重症以外的疾病且自理医疗费在5万元以上、直系亲属患重症:1000-1500元。',
'突发事件造成家庭损失较重致生活困难:2000-2500元。',
'本人新患重症、长病假人员生活困难、家庭人均收入接近无锡市最低生活保障线:3000元。',
'其他'
],
newMember: {
name: '',
age: '',
relation: '',
monthlyIncome: ''
},
showDialog: false,
isEditing: false,
editingIndex: null
}
},
components: {
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
},
methods: {
onSubmit(values) {
console.log(this.formData)
if(this.formData.familyList.length === 0){
this.$toast("请添加家庭成员信息")
return
}
$.post('/platform/difficulty/apply/doAdd', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$toast.success(res.msg)
sublime.jumpPagePjax('/platform/difficulty/applylist')
} else {
this.$message.error(res.msg)
}
})
},
onSexConfirm(value) {
this.formData.sex = value;
this.showSexPicker = false;
},
onDateConfirm(value) {
this.formData.birthday = value;
this.showDatePicker = false;
},
onSubsidyConfirm(value) {
this.formData.subsidyStandards = value;
this.showSubsidyPicker = false;
},
handleBeforeClose(action, done) {
if (action === 'confirm') {
if (!this.newMember.name || !this.newMember.age || !this.newMember.relation || !this.newMember.monthlyIncome) {
this.$toast('请填写完整信息');
done(false);
} else {
done()
if (this.isEditing) {
this.updateMember();
} else {
this.addMember();
}
done();
}
} else {
done()
}
},
addMember() {
this.formData.familyList.push({...this.newMember});
this.resetNewMember();
},
editMember(index) {
this.newMember = {...this.formData.familyList[index]};
this.editingIndex = index;
this.isEditing = true;
this.showDialog = true;
},
updateMember() {
this.formData.familyList.splice(this.editingIndex, 1, { ...this.newMember });
this.resetNewMember();
},
removeMember(index) {
this.formData.familyList.splice(index, 1);
},
resetNewMember() {
this.newMember = {name: '', age: '', relation: '', monthlyIncome: ''};
this.isEditing = false;
this.editingIndex = null;
}
},
async created() {
if (this.id) {
$.get('/platform/difficulty/apply/findOne', {id: this.id}).then(res => {
if (res.code === 0) {
this.formData = res.data
}
})
} else {
const user = JSON.parse(window.sessionStorage.getItem('user'))
this.$set(this.formData, 'userId', user.id)
this.$set(this.formData, 'userName', user.username)
this.$set(this.formData, 'loginName', user.loginname)
this.$set(this.formData, 'sex', user.sex)
this.$set(this.formData, 'unitId', user.unit.id)
this.$set(this.formData, 'unitName', user.unit.name)
this.$set(this.formData, 'unionId', user.union.id)
this.$set(this.formData, 'unionName', user.union.unionname)
this.$set(this.formData, 'monthlyIncome', null)
this.$set(this.formData, 'birthday', user.birthday)
this.$set(this.formData, 'mobile', user.mobile)
this.$set(this.formData, 'homeAddress', user.homeAddress)
this.$set(this.formData, 'subsidyStandards', null)
this.$set(this.formData, 'reason', null)
this.$set(this.formData, 'remarks', null)
this.$set(this.formData, 'familyList', [])
this.$set(this.formData, 'files', [])
}
}
})
</script>
<!--#
}
#-->