bug整改

This commit is contained in:
Paidax
2025-02-10 08:58:39 +08:00
parent 8fd04f131d
commit 567da06823
163 changed files with 12110 additions and 11667 deletions
@@ -2,296 +2,364 @@
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 ref="addForm" :show-error-message="false" input-align="right" style="margin-bottom: 60px">
<van-cell-group inset class="mt10">
<van-form @submit="onSubmit" :show-error-message="false">
<van-cell inset>
<van-field
readonly
value="${@shiro.getPrincipalProperty('username')} ( ${@shiro.getPrincipalProperty('loginname')} )"
name="sqrname"
label="申请人"
v-model="formData.userName"
label="申请人姓名"
readonly
required
:rules="[{ required: true, message: '请填写申请人姓名' }]"
></van-field>
<van-field name="apply_mode" label="申请模式">
<template #input>
<van-radio-group v-model="formData.apply_mode" direction="horizontal" @change="applyModeChange">
<van-radio :name="1">本人申请</van-radio>
<van-radio :name="2">替他人申请</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
@input="userRemoteMethod"
name="bbzrusername"
v-model="formData.bbzrusername"
label="受补助人"
placeholder="请输入受补助人姓名"
:rules="[{ required: true, message: '请填写受补助人姓名' }]"
v-model="formData.loginName"
label="申请人工号"
readonly
required
:rules="[{ required: true, message: '请填写申请人工号' }]"
></van-field>
<van-action-sheet
v-model="sheetShow"
:actions="userList"
cancel-text="重新输入姓名或工号查询"
@cancel="userList = []"
:close-on-click-overlay="false"
@select="onUserSelect"
></van-action-sheet>
<van-field label="身份证号" v-model="formData.idcard"></van-field>
<van-field label="性别" v-model="formData.sex"></van-field>
<van-field label="职称" v-model="formData.zc"></van-field>
<van-field label="职务" v-model="formData.zw"></van-field>
<van-field label="单位" v-model="formData.unitname"></van-field>
<van-field label="出生日期" v-model="formData.birthday"></van-field>
<van-field label="手机号码" v-model="formData.lxfs" type="tel"></van-field>
<van-field
name="sq_bzlx_name"
@click="sq_bzlxShow = true"
:value="formData.sq_bzlx_name"
label="补助类型"
placeholder="请选择补助类型"
v-model="formData.sex"
label="性别"
required
is-link
readonly
:rules="[{ required: true, message: '性别' }]"
clickable
@click="showSexPicker = true"
></van-field>
<van-popup v-model:show="sq_bzlxShow" position="bottom" round>
<van-picker show-toolbar :columns="sq_bzlxList" @confirm="onSq_bzlxConfirm" @cancel="sq_bzlxShow = false"></van-picker>
<van-popup v-model="showSexPicker" position="bottom">
<van-picker
show-toolbar
:columns="['男', '女']"
@confirm="onSexConfirm"
@cancel="showSexPicker=false"
></van-picker>
</van-popup>
<van-field
name="sq_knlx_name"
@click="sq_knlxShow = true"
:value="formData.sq_knlx_name"
label="困难类型"
placeholder="请选择困难类型"
v-model="formData.unitName"
label="所在单位"
placeholder="所在单位"
readonly
:rules="[{ required: true, message: '所在单位' }]"
clearable
required
></van-field>
<van-popup v-model:show="sq_knlxShow" position="bottom" round>
<van-picker show-toolbar :columns="sq_knlxist" @confirm="onSq_knlxConfirm" @cancel="sq_knlxShow = false"></van-picker>
</van-popup>
<template v-if="formData.sq_knlx==1">
<van-field label="所在医院" placeholder="请填写所在所在医院" v-model="formData.hospital"></van-field>
<van-field
label="住院时间"
:value="formData.hospitalized_time_name"
placeholder="请填写住院时间"
@click="hospitalized_timeShow = true"
></van-field>
<van-calendar
v-model="hospitalized_timeShow"
:min-date="new Date('1999-01-01')"
:show-confirm="false"
type="range"
@confirm="onHospitalized_timeConfirm"
></van-calendar>
</template>
<van-field
v-model="formData.apply_reason"
name="remark"
label="申请理由"
style="flex-flow: column"
placeholder="请填写申请理由"
input-align="left"
rows="3"
maxlength="200"
type="textarea"
show-word-limit
autosize
>
<template #label>
<div class="mb10">申请事由</div>
</template>
</van-field>
</van-cell-group>
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-cell-group inset class="mt10">
<van-field name="files" label="附&emsp;&emsp;件" required style="flex-flow: column" input-align="left">
<template #label>
<div class="mb10">附&emsp;&emsp;件</div>
</template>
<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-cell-group>
<van-cell-group inset class="mt10">
<van-field label="签字" required style="flex-flow: column">
<template #label>
<div class="mb10">签&emsp;&emsp;字</div>
</template>
<template #input>
<mobile-sign ref="signature" :my_sign.sync="formData.sqsign"></mobile-sign>
<mobile-sign ref="signature" :my_sign.sync="formData.sign"></mobile-sign>
</template>
</van-field>
</van-cell-group>
<div style="margin: 20px 20px 10px 20px">
<van-button @click="onSubmit()" style="border-radius: 10px" block type="info" :color="themeColor">提 交</van-button>
</div>
<!-- 家庭成员经济收入表格和附件上传等功能需要自定义实现 -->
<van-button round block type="info" native-type="submit">提交</van-button>
</van-cell>
</van-form>
<div>
<van-tabbar v-model="tarBarActive" style="z-index: 99">
<van-tabbar-item icon="home-o" replace url="/mobile/difficulty/apply/index">困难补助申请</van-tabbar-item>
<van-tabbar-item icon="manager-o" replace url="/mobile/difficulty/apply/apply_list">困难补助记录</van-tabbar-item>
</van-tabbar>
</div>
<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 src="/assets/platform/module/difficulty/common.js?v=1.0.0"></script>
<script>
const vue = new Vue({
el: "#app",
el: '#app',
mixins: [mobileMixins],
data() {
return {
tarBarActive: 0,
id: GetQueryString("id"),
hospitalized_timeShow: false,
sq_bzlxShow: false,
sq_bzlxList: [],
minDate: {},
sq_knlxShow: false,
sq_knlxist: [],
userList: [],
formData: {
apply_mode: 1
formData: {},
showSexPicker: false,
showDatePicker: false,
showSubsidyPicker: false,
subsidyStandards: [
'本人患重症处于康复期、新患重症以外的疾病且自理医疗费在5万元以上、直系亲属患重症:1000-1500元。',
'突发事件造成家庭损失较重致生活困难:2000-2500元。',
'本人新患重症、长病假人员生活困难、家庭人均收入接近无锡市最低生活保障线:3000元。',
'其他'
],
newMember: {
name: '',
age: '',
relation: '',
monthlyIncome: ''
},
sheetShow: false,
files: []
showDialog: false,
isEditing: false,
editingIndex: null
}
},
components: {
"mobile-sign": httpVueLoader("/components/sign/mobileSign.vue")
'mobile-sign': httpVueLoader('/components/sign/mobileSign.vue'),
},
methods: {
onHospitalized_timeConfirm(val) {
this.$set(this.formData, "hospitalized_time_name", moment(val[0]).format("YYYY-MM-DD") + "至" + moment(val[1]).format("YYYY-MM-DD"))
this.$set(this.formData, "hospitalized_time", moment(val[0]).format("YYYY-MM-DD") + "至" + moment(val[1]).format("YYYY-MM-DD"))
this.hospitalized_timeShow = false
},
onSq_bzlxConfirm(val) {
this.$set(this.formData, "sq_bzlx_name", val.text)
this.$set(this.formData, "sq_bzlx", val.value)
for (let i in difficulty.getHard(val.value)) {
this.sq_knlxist.push({ value: i, text: difficulty.getHard(val.value)[i] })
onSubmit(values) {
console.log(this.formData)
if(this.formData.familyList.length === 0){
this.$toast("请添加家庭成员信息")
return
}
this.$set(this.formData, "sq_knlx_name", null)
this.$set(this.formData, "sq_knlx", null)
this.sq_bzlxShow = false
},
onSq_knlxConfirm(val) {
this.$set(this.formData, "sq_knlx_name", val.text)
this.$set(this.formData, "sq_knlx", val.value)
this.sq_knlxShow = false
},
applyModeChange(val) {
if (val === 1) {
this.$set(this.formData, "difficultyUser", "${@shiro.getPrincipalProperty('id')}")
this.$set(this.formData, "bbzrusername", "${@shiro.getPrincipalProperty('username')}")
this.$set(this.formData, "sex", "${@shiro.getPrincipalProperty('sex')}")
this.$set(this.formData, "zc", "${@shiro.getPrincipalProperty('jobTitle')}")
this.$set(this.formData, "zw", "${@shiro.getPrincipalProperty('position')}")
this.$set(this.formData, "unitname", "${@shiro.getPrincipalProperty('unit').getName()}")
this.$set(this.formData, "birthday", "${@shiro.getPrincipalProperty('birthday')}")
this.$set(this.formData, "lxfs", "${@shiro.getPrincipalProperty('mobile')}")
this.$set(this.formData, "idcard", "${@shiro.getPrincipalProperty('idcard')}")
} else if (val === 2) {
this.formData = {}
this.$set(this.formData, "apply_mode", 2)
this.$set(this.formData, "bbzrusername", undefined)
}
},
async userRemoteMethod(query) {
if (query) {
const { data } = await $.get("/platform/fw/condolence/apply/queryUser", { query })
data.forEach((v) => {
v.name = v.username
v.subname = v.loginname
return v
})
this.userList = data
this.sheetShow = true
}
},
onUserSelect(val) {
this.$set(this.formData, "difficultyUser", val.id)
this.$set(this.formData, "bbzrusername", val.name)
this.$set(this.formData, "lxfs", val.mobile)
this.$set(this.formData, "sex", val.sex)
this.$set(this.formData, "unitname", val.unitname)
this.$set(this.formData, "zc", val.jobTitle)
this.$set(this.formData, "zw", val.position)
this.$set(this.formData, "birthday", val.birthday)
this.$set(this.formData, "sq_bzlx_name", this.sq_bzlxList[0].text)
this.$set(this.formData, "sq_bzlx", this.sq_bzlxList[0].value)
this.sheetShow = false
},
async onSubmit() {
this.$refs.signature.submitSign()
/* if (!this.formData.sqsign) {
vant.Toast('请签名!')
return
}*/
const formData = clone(this.formData)
formData.files = JSON.stringify(formData.files)
formData.applicantsign = formData.sqsign
formData.bbzrusername = formData.difficultyUser
formData.flag = true
this.$refs["addForm"].validate().then(async () => {
this.$toast.loading("提交中...")
const res = await $.post("/platform/fw/difficulty/apply/doAdd", formData)
$.post('/platform/difficulty/apply/doAdd', {
data: JSON.stringify(this.formData)
}).then(res => {
if (res.code === 0) {
this.$toast.success("申请成功")
setTimeout(() => {
location.replace("/mobile/difficulty/apply/apply_list")
}, 1000)
this.$toast.success(res.msg)
sublime.jumpPagePjax('/platform/difficulty/applylist')
} else {
this.$toast.fail("申请失败")
this.$message.error(res.msg)
}
})
},
async getApplyInfo(id) {
const { data, code, msg } = await $.get("/platform/fw/difficulty/applylist/findOne", { id })
if (data) {
data.apply_mode = parseInt(data.apply_mode)
this.formData = data
if (this.formData.files && this.formData.files.length > 0) {
this.formData.files = JSON.parse(data.files)
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;
}
},
mounted() {
this.$nextTick(() => {
if (this.$refs.signature) {
this.$refs.signature.getMySign()
}
})
},
async created() {
this.applyModeChange(1)
for (let i in difficulty.subsidy) {
this.sq_bzlxList.push({ value: i, text: difficulty.subsidy[i] })
}
this.$set(this.formData, "sq_bzlx_name", this.sq_bzlxList[0].text)
this.$set(this.formData, "sq_bzlx", this.sq_bzlxList[0].value)
for (let i in difficulty.getHard(this.formData.sq_bzlx)) {
this.sq_knlxist.push({ value: i, text: difficulty.getHard(this.formData.sq_bzlx)[i] })
}
this.formData.apply_time = moment().format("YYYY-MM-DD")
if (this.id) {
this.getApplyInfo(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', [])
}
}
})