城阳工作端uniH5前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2166 lines
76 KiB

11 months ago
<template>
<view>
<!-- subpages/addResi/pages/addResi/addResi.wxml -->
<view class="header">
<image src="/static/images/back.png" class="back" :style="' top: ' + statusHeight + 'px;width: 50rpx;height: 50rpx;'" @tap="back" mode="" />
<!-- <image class="header-bg" src="/static/subpages/addResi/pages/images/header.png" mode="widthFix" /> -->
11 months ago
<view class="navigation" :style="'height: ' + navigationHeight + 'px; top: ' + statusHeight + 'px;'">
{{ formType == 'edit' ? '修改人口信息' : '新增人口信息' }}
</view>
<view class="content">
<view class="h2">填写居民信息</view>
<view class="tag">
<b>*</b>
号为必填项
</view>
</view>
</view>
<view class="content">
<view class="form_card">
<view class="title">
<text class="tag"></text>
基本信息
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">所在网格</view>
</view>
<view class="input">
<picker @change="bindPickerChangeGrid" range-key="label" :value="index" :range="gridList">
<view :class="form.gridName ? '' : 'gray'">
{{ form.gridName ? form.gridName : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">所在小区</view>
</view>
<view class="input">
<picker @change="bindPickerChangevillageId" range-key="label" :value="index" :range="villageList">
<view :class="villageName ? '' : 'gray'">
{{ villageName ? villageName : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">所在楼栋</view>
</view>
<view class="input">
<picker @change="bindPickerChangebuilding" range-key="label" :value="index" :range="buildingList">
<view :class="buildingName ? '' : 'gray'">
{{ buildingName ? buildingName : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">所在单元</view>
</view>
<view class="input">
<picker @change="bindPickerChangeUnit" range-key="label" :value="index" :range="unitList">
<view :class="unitName ? '' : 'gray'">
{{ unitName ? unitName : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_house">
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">所在房屋</view>
</view>
<view class="input">
<picker @change="bindPickerChangeHouse" range-key="label" :value="index" :range="houseList">
<view :class="houseName ? '' : 'gray'">
{{ houseName ? houseName : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_bottom">
选项中如无该房屋,请先
<text @tap="handelJump">新增房屋</text>
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">姓名</view>
</view>
<view class="input">
<input confirm-type="next" @blur="bindNameInput" @input="bindNameInput" :value="form.name" placeholder-class="gray" placeholder="请输入" />
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">性别</view>
</view>
<view class="input">
<picker @change="bindPickerChangeGender" range-key="label" :value="index" :range="genderList">
<view :class="form.gender ? '' : 'gray'">
{{ genderName ? genderName : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">出生日期</view>
</view>
<view class="input">
<picker mode="date" :value="form.birthday" :end="day" @change="bindDateChange">
<view :class="form.birthday ? '' : 'gray'">
{{ form.birthday ? form.birthday : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">证件号</view>
</view>
<view class="input">
<input confirm-type="next" @blur="bindIdNumInput" @input="bindidNumInput" :value="form.idNum" placeholder-class="gray" placeholder="请输入" />
<block v-if="resiId">
<view @tap="showData" v-if="isShowIdNum" data-key="idNum">
<van-icon name="closed-eye" />
</view>
<view @tap="hideDataFun" v-else data-key="idNum">
<van-icon name="eye-o" />
</view>
</block>
</view>
</view>
<view class="form_item">
<view class="label">
<text class="must">*</text>
<view class="title">联系电话</view>
</view>
<view class="input">
<input confirm-type="next" @blur="bindMobileInput" @input="bindmobileInput" :value="form.mobile" placeholder-class="gray" placeholder="请输入" />
<block v-if="resiId">
<view @tap="showData" v-if="isShowIdTel" data-key="mobile">
<van-icon name="closed-eye" />
</view>
<view @tap="hideDataFun" v-else data-key="mobile">
<van-icon name="eye-o" />
</view>
</block>
</view>
</view>
</view>
<view class="form_card m-top20">
<view class="title">
<text class="tag"></text>
详细信息
</view>
<view class="form_item">
<view class="label">
<view class="title">户籍地</view>
</view>
<view class="input">
<input
confirm-type="next"
@blur="bindPlaceOfDomicileInput"
@input="bindPlaceOfDomicileInput"
:value="form.resideInfoDto.placeOfDomicile"
placeholder-class="gray"
placeholder="请输入"
/>
</view>
</view>
<view class="form_item">
<view class="label">
<view class="title">现居地</view>
</view>
<view class="input">
<input
confirm-type="next"
@blur="bindCurrentResidenceInput"
@input="bindCurrentResidenceInput"
:value="form.resideInfoDto.currentResidence"
placeholder-class="gray"
placeholder="请输入"
/>
</view>
</view>
<view class="form_item">
<view class="label">
<view class="title">民族</view>
</view>
<view class="input">
<picker @change="bindPickerChangeNation" range-key="label" :value="index" :range="nation">
<view :class="form.nation ? '' : 'gray'">
{{ form.nation ? nation[form.nation].label : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<view class="title">籍贯</view>
</view>
<view class="input">
<input
confirm-type="next"
@blur="bindNativePlaceInput"
@input="bindNativePlaceInput"
:value="form.resideInfoDto.nativePlace"
placeholder-class="gray"
placeholder="请输入"
/>
</view>
</view>
<view class="form_item">
<view class="label">
<view class="title">文化程度</view>
</view>
<view class="input">
<picker @change="bindPickerChangeEducation" range-key="label" :value="index" :range="education">
<view :class="form.eduInfoDto.cultureLevel ? '' : 'gray'">
{{ form.eduInfoDto.cultureLevel ? education[form.eduInfoDto.cultureLevel].label : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<view class="title">婚姻状况</view>
</view>
<view class="input">
<picker @change="bindPickerChangemarriage" range-key="label" :value="index" :range="marriageList">
<view :class="form.familyInfoDto.marriage ? '' : 'gray'">
{{ marriageName ? marriageName : '请选择' }}
</view>
</picker>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item">
<view class="label">
<view class="title">宗教信仰</view>
</view>
<view class="input">
<input
confirm-type="next"
@blur="bindReligionInput"
@input="bindReligionInput"
:value="form.religionDto.religion"
placeholder-class="gray"
placeholder="请输入"
/>
</view>
</view>
</view>
<view class="form_card m-top20">
<view class="title">
<text class="tag"></text>
居民类别
</view>
<view class="form_item">
<view class="label">
<view class="title">居民类别</view>
</view>
<view class="input" @tap="onClick3">
<view :class="'residentCategorySty ' + (residentCategorySty ? '' : 'gray')" style="text-align: left">
{{ residentCategorySty ? residentCategorySty : '请选择' }}
</view>
<image src="/static/images/right.png" mode="" />
</view>
</view>
<view class="form_item" :key="index" @tap="openDynamicForms" :data-title="item.title" :data-formtype="item.value" v-for="(item, index) in residentTypeFormCell">
<view class="label">
<view class="title">{{ item.title }}</view>
</view>
<view class="input text-right">
<image src="/static/images/right.png" mode="" />
</view>
</view>
</view>
<view class="bottom_btn" @tap="submit">提交</view>
</view>
<wux-select id="wux-select3" />
<DynamicForms :show="isShowDynamicForms" :title="dynamicFormsTitle" @close="closeDynamicForms" @ok="okDynamicForms" :formController="formController" />
</view>
</template>
<script>
import wuxSelect from '../../../../wxcomponents/dist/select';
import DynamicForms from '../../../../components/DynamicForms/DynamicForms';
// subpages/addResi/pages/addResi/addResi.js
import api from '../../../../utils/api';
import { cardHide } from '../../../../utils/util';
import { $wuxSelect } from '../../../../wxcomponents/dist/index';
import {
dictlist,
getHouseType,
getOldPeopleDetailById,
getVeteranDetailById,
getVolunteerDetailById,
publicWelfarePost,
residentEnsureHouse,
residentSpecial,
residentTenant,
residentUnemployed,
residentUnitedFront,
specialSupport
} from '../../../../utils/statisticsApi';
const app = getApp();
export default {
components: {
wuxSelect,
DynamicForms
},
data() {
return {
hideData: {},
isShowIdNum: true,
isShowIdTel: true,
formController: [],
ensureHouseFlagOpen: false,
unemployedFlagOpen: false,
veteranFlagOpen: false,
unitedFrontFlagOpen: false,
volunteerFlagOpen: false,
specialSupportFlagOpen: false,
tenantFlagOpen: false,
specialCrowdFlagOpen: false,
oldPeopleFlagOpen: false,
publicWelfareFlagOpen: false,
residentTypeForm: {
ensureHouseFlag: [
{
type: 'select',
value: '',
valueIndex: -1,
label: '住房性质',
optionsKey: 'label',
valueKey: 'value',
options: [],
// 字典获取
key: 'housingNature'
},
{
type: 'input',
value: '',
label: '保障类型',
key: 'securityType'
},
{
type: 'date',
value: '',
label: '发证日期',
key: 'certificateDate'
},
{
type: 'input',
value: '',
label: '补贴编号',
key: 'subsidyNum'
},
{
type: 'input',
value: '',
label: '补贴金额',
afterText: '元',
key: 'subsidyAmount'
},
{
type: 'input',
value: '',
label: '房东姓名',
key: 'landlordName'
},
{
type: 'input',
value: '',
label: '房东证件号',
key: 'landlordIdNum'
},
{
type: 'date',
value: '',
label: '通知书领取日期',
key: 'notificationRcvDate'
}
],
unemployedFlag: [
{
type: 'input',
value: '',
label: '原工作单位',
key: 'originWorkUnit'
},
{
type: 'date',
value: '',
label: '失业时间',
key: 'unemploymentTime'
},
{
type: 'input',
value: '',
label: '失业证号',
key: 'unemploymentNum'
},
{
type: 'input',
value: '',
label: '再就业优惠证号',
key: 'employmentNum'
},
{
type: 'input',
value: '',
label: '技术特长',
key: 'specialSkill'
},
{
type: 'select',
value: '',
valueIndex: -1,
label: '失业原因',
optionsKey: 'label',
valueKey: 'value',
options: [],
// 字典获取
key: 'unemploymentReason'
},
{
type: 'select',
value: '',
valueIndex: -1,
label: '是否就业困难对象',
optionsKey: 'label',
valueKey: 'value',
options: [
{
value: 1,
label: '是'
},
{
value: 0,
label: '否'
}
],
key: 'employmentHardFlag'
},
{
type: 'select',
value: '',
valueIndex: -1,
label: '劳动能力就业愿望',
optionsKey: 'label',
valueKey: 'value',
options: [],
// 字典获取
key: 'employmentWish'
}
],
veteranFlag: [
{
type: 'date',
value: '',
label: '入伍时间',
key: 'joinArmyTime'
},
{
type: 'date',
value: '',
label: '退伍时间',
key: 'leaveArmyTime'
},
{
type: 'input',
value: '',
label: '服役单位',
key: 'serviceUnit'
},
{
type: 'input',
value: '',
label: '接收单位',
key: 'receiveUnit'
},
{
type: 'input',
value: '',
label: '待安置补助金',
afterText: '元',
key: 'settlementAmount'
},
{
type: 'input',
value: '',
label: '培训状况',
key: 'trainDesc'
},
{
type: 'input',
value: '',
label: '现就业情况',
key: 'employmentSituation'
},
{
type: 'select',
value: '',
valueIndex: -1,
label: '是否办理公益性岗位',
optionsKey: 'label',
valueKey: 'value',
options: [
{
value: 1,
label: '是'
},
{
value: 0,
label: '否'
}
],
key: 'pubWelfareJobFlag'
}
],
unitedFrontFlag: [
{
type: 'input',
value: '',
label: '职务',
key: 'duty'
},
{
type: 'input',
value: '',
label: '探亲情况',
key: 'visitation'
}
],
volunteerFlag: [
{
type: 'checkbox',
value: '',
label: '志愿者类别',
key: 'volunteerCategory'
},
{
type: 'textarea',
value: '',
maxlength: 120,
label: '备注',
key: 'volunteerRemark'
}
],
specialSupportFlag: [
{
type: 'select',
value: '',
valueIndex: -1,
label: '特扶类别',
optionsKey: 'label',
valueKey: 'value',
options: [
{
value: '1',
label: '失独'
},
{
value: '2',
label: '伤残'
}
],
// 字典
key: 'specialSupportType',
masterControl: true
},
{
type: 'input',
value: '',
label: '子女姓名',
key: 'childName',
showFlag: '2',
hide: true
},
{
type: 'select',
value: '',
valueIndex: -1,
label: '子女性别',
optionsKey: 'label',
valueKey: 'value',
options: [
{
value: '1',
label: '男'
},
{
value: '2',
label: '女'
}
],
// 字典
key: 'childGender'
},
{
type: 'date',
value: '',
label: '子女死亡日期',
key: 'childDeathDate',
showFlag: '1',
hide: true
},
{
type: 'select',
value: '',
valueIndex: -1,
label: '伤残类别',
optionsKey: 'label',
valueKey: 'value',
options: [],
// 字典
key: 'childDisabilityCategoryCode',
showFlag: '2',
hide: true
},
{
type: 'select',
value: '',
valueIndex: -1,
label: '伤残等级',
optionsKey: 'label',
valueKey: 'value',
options: [],
// 字典
key: 'childDisabilityLevel',
showFlag: '2',
hide: true
},
{
type: 'textarea',
value: '',
maxlength: 120,
label: '备注',
key: 'remark'
}
],
tenantFlag: [
{
type: 'date',
value: '',
label: '合同开始时间',
key: 'contractStartDate'
},
{
type: 'date',
value: '',
label: '合同结束时间',
key: 'contractEndDate'
}
],
specialCrowdFlag: [
{
type: 'select',
value: '',
valueIndex: -1,
label: '人群类别',
optionsKey: 'label',
valueKey: 'value',
options: [],
// 字典
key: 'specialCategoryCode'
}
],
oldPeopleFlag: [
{
type: 'input',
value: '',
label: '高龄补助',
afterText: '元',
key: 'oldSubsidy'
}
],
publicWelfareFlag: [
{
type: 'date',
value: '',
label: '入职时间',
key: 'hireData'
},
{
type: 'checkbox',
value: '',
valueIndex: -1,
label: '岗位类型',
optionsKey: 'label',
valueKey: 'value',
options: [],
// 字典
key: 'postTypes'
},
{
type: '',
value: '',
key: 'userId'
}
]
},
residentTypeFormCell: [],
nation: [],
education: [],
marriageList: [],
marriageName: '',
form: {
agencyName: '',
agencyId: '',
resiId: '',
houseMergeId: '',
categoryId: '',
gridName: '',
gridId: '',
villageId: '',
buildId: '',
unitId: '',
homeId: '',
name: '',
nation: '',
remark: '',
localResidenceFlag: '',
birthday: '',
idNum: '',
gender: '',
mobile: '',
partyFlag: 0,
subsistenceAllowanceFlag: 0,
ensureHouseFlag: 0,
unemployedFlag: 0,
fertileWomanFlag: 0,
veteranFlag: 0,
unitedFrontFlag: 0,
petitionOfficerFlag: '',
volunteerFlag: 0,
specialSupportFlag: 0,
tenantFlag: 0,
floatingFlag: 0,
specialCrowdFlag: 0,
oldPeopleFlag: 0,
emptyNesterFlag: 0,
liveAloneFlag: 0,
disabledFlag: 0,
dementedFlag: 0,
disabilityFlag: 0,
seriousIllnessFlag: 0,
chronicDiseaseFlag: 0,
publicWelfareFlag: 0,
resideInfoDto: {
placeOfDomicile: '',
currentResidence: '',
nativePlace: ''
},
eduInfoDto: {
cultureLevel: ''
},
familyInfoDto: {
marriage: ''
},
religionDto: {
religion: ''
}
},
isFirstLoadGrid: true,
isFirstLoadVillage: true,
isFirstLoadBuilding: true,
isFirstLoadUnit: true,
isFirstLoadHouse: true,
agencyId: '',
gridList: [],
villageList: [],
villageName: '',
buildingList: [],
buildingName: '',
unitList: [],
unitName: '',
houseList: [],
houseName: '',
genderList: [
{
label: '男',
value: '1'
},
{
label: '女',
value: '2'
}
],
genderName: '',
day: '',
value3: [],
residentCategory: [
{
title: '党员',
value: 'partyFlag'
},
{
title: '低保人员',
value: 'subsistenceAllowanceFlag'
},
{
title: '保障房人员',
value: 'ensureHouseFlag',
isForm: true
},
{
title: '失业人员',
value: 'unemployedFlag',
isForm: true
},
{
title: '育龄妇女',
value: 'fertileWomanFlag'
},
{
title: '退役军人',
value: 'veteranFlag',
isForm: true
},
{
title: '统战人员',
value: 'unitedFrontFlag',
isForm: true
},
{
title: '信访人员',
value: 'petitionOfficerFlag'
},
{
title: '志愿者',
value: 'volunteerFlag',
isForm: true
},
{
title: '特扶人员',
value: 'specialSupportFlag',
isForm: true
},
{
title: '租户',
value: 'tenantFlag',
isForm: true
},
{
title: '流动人口',
value: 'floatingFlag'
},
{
title: '特殊人群',
value: 'specialCrowdFlag',
isForm: true
},
{
title: '老年人',
value: 'oldPeopleFlag',
isForm: true
},
{
title: '空巢老人',
value: 'emptyNesterFlag'
},
{
title: '独居老人',
value: 'liveAloneFlag'
},
{
title: '失能老人',
value: 'disabledFlag'
},
{
title: '失智老人',
value: 'dementedFlag'
},
{
title: '残疾',
value: 'disabilityFlag'
},
{
title: '大病',
value: 'seriousIllnessFlag'
},
{
title: '慢病',
value: 'chronicDiseaseFlag'
},
{
title: '公益岗人员',
value: 'publicWelfareFlag',
isForm: true
}
],
residentCategorySty: '',
categoryInfo: '',
isShowDynamicForms: false,
dynamicTitle: ' ',
statusHeight: '',
navigationHeight: '',
formType: '',
resiId: '',
isFirstLoadunit: false,
title3: '',
dynamicFormsTitle: '',
currentFormController: '',
label: ''
};
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: async function (options) {
var nowDate = new Date();
var year = nowDate.getFullYear();
var month = nowDate.getMonth() + 1;
var day = nowDate.getDate();
this.setData({
statusHeight: app.globalData.deviceInfo.statusHeight,
navigationHeight: app.globalData.deviceInfo.navigationHeight,
agencyId: app.globalData.user.agencyId,
'form.agencyId': app.globalData.user.agencyId,
'form.agencyName': app.globalData.user.agencyName,
day: `${year}-${month}-${day}`,
formType: options.type,
resiId: options.resiId
});
await this.getNationDictList();
await this.getGridoptionDict();
await this.getEducationDictList();
await this.getmarriageDict();
if (options.resiId) {
uni.setNavigationBarTitle({
title: '修改人口信息'
});
await this.getResiDetail();
await this.getResidentResideInfo();
await this.getResidentReligion();
await this.getResidentEduInfo();
setTimeout(() => {
this.getFamilyInfoDetailById();
}, 500);
} else {
if (options.idCard) {
this.setData({
'form.name': options.name,
'form.idNum': options.idCard,
'form.gender': options.gender == '男' ? '1' : '2',
genderName: options.gender,
'form.birthday': options.birth
});
}
this.setData({
isFirstLoadGrid: false,
isFirstLoadVillage: false,
isFirstLoadBuilding: false,
isFirstLoadUnit: false,
isFirstLoadHouse: false
});
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {},
methods: {
getResiDetail: async function () {
try {
let res = await api.getResiDetail(this.resiId);
const {
birthday,
gender,
idNum,
mobile,
name,
nation,
houseInfo = {},
// 为houseInfo提供一个默认值
categoryInfo,
genderName
} = res.data;
let result = this.residentCategory.filter((item) => categoryInfo[item.value] === 1);
let residentCategorySty = result.map((item) => item.title);
let categoryInfoArr = result.map((item) => item.value);
this.setDynamicForm(result);
uni.showLoading({
title: '加载中...'
});
let form = this.form;
for (let i in categoryInfoArr) {
form[categoryInfoArr[i]] = 1;
}
this.setData({
form
});
this.setDataAsync({
'form.name': name,
'form.birthday': birthday,
'form.gender': gender,
'form.idNum': cardHide(idNum),
'form.mobile': mobile,
'form.nation': nation,
'form.gridId': houseInfo?.gridId || '',
// 使用了可选链
'form.gridName': houseInfo?.gridName || '',
// 使用了可选链
'form.villageId': houseInfo?.villageId || '',
// 使用了可选链
'form.buildId': houseInfo?.buildId || '',
// 使用了可选链
'form.unitId': houseInfo?.unitId || '',
// 使用了可选链
'form.homeId': houseInfo?.homeId || '',
// 使用了可选链
'form.houseMergeId': houseInfo?.mergeId || '',
// 使用了可选链
genderName,
categoryInfo: categoryInfoArr,
residentCategorySty
});
await this.delay(1000);
await this.bindPickerChangeGrid();
await this.delay(400);
await this.bindPickerChangevillageId();
await this.delay(400);
await this.bindPickerChangebuilding();
await this.delay(400);
await this.bindPickerChangeUnit();
await this.delay(400);
await this.bindPickerChangeHouse();
uni.hideLoading();
} catch (err) {
console.log('CatchClause', err);
console.log('CatchClause', err);
console.log(err);
}
},
setDataAsync: function (data) {
return new Promise((resolve) => {
this.setData(data, resolve);
});
},
delay(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
},
// 居住信息详情
getResidentResideInfo() {
api.getResidentResideInfo(this.resiId)
.then((res) => {
this.setData({
'form.resideInfoDto': res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 宗教信仰详情
getResidentReligion() {
api.getResidentReligion(this.resiId)
.then((res) => {
this.setData({
'form.religionDto': res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 获取教育信息详情
getResidentEduInfo() {
api.getResidentEduInfo(this.resiId)
.then((res) => {
this.setData({
'form.eduInfoDto': res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 获取婚姻信息
getFamilyInfoDetailById() {
api.getFamilyInfoDetailById(this.resiId)
.then((res) => {
this.setData({
'form.familyInfoDto': res.data,
marriageName: this.marriageList.filter((item) => item.value == res.data.marriage)[0].label
});
})
.catch((err) => {
console.log(err);
});
},
getNationDictList() {
api.getNationDictList()
.then((res) => {
this.setData({
nation: res.data
});
})
.catch((err) => {
console.log(err);
});
},
getEducationDictList() {
api.getEducationDictList()
.then((res) => {
this.setData({
education: res.data
});
})
.catch((err) => {
console.log(err);
});
},
getGridoptionDict() {
let parm = {
agencyId: this.agencyId,
purpose: 'addorupdate'
};
api.getGridoptionDict(parm)
.then((res) => {
this.setData({
gridList: res.data
});
})
.catch((err) => {
console.log(err);
});
},
getmarriageDict() {
api.getDictList('marriage')
.then((res) => {
this.setData({
marriageList: res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 获取小区列表
getQuartersOptions(gridId) {
let parm = {
gridId,
agencyId: this.agecyId
};
api.getQuartersOptions(parm)
.then((res) => {
this.setData({
villageList: res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 获取楼栋列表
getBuildingoption(villageId) {
api.getBuildingoption(villageId)
.then((res) => {
this.setData({
buildingList: res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 获取单元列表
getUnitoption(buildingId) {
api.getUnitoption(buildingId)
.then((res) => {
this.setData({
unitList: res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 获取房屋列表
getHouseoption(unitId) {
api.getHouseoption(unitId)
.then((res) => {
this.setData({
houseList: res.data
});
})
.catch((err) => {
console.log(err);
});
},
// 获取网格列表
async bindPickerChangeGrid() {
return new Promise(async (resolve, reject) => {
if (this.isFirstLoadGrid) {
// 编辑回填逻辑
const id = this.form.gridId;
const temp = this.gridList.filter((item) => item.value == id);
let gridName = '';
if (temp.length != 0) {
gridName = temp[0].label;
} else {
this.showToast('网格信息有误');
return;
}
this.setData({
'form.gridName': gridName,
'form.gridId': id
});
this.getQuartersOptions(id);
this.setData({
isFirstLoadGrid: false
});
} else {
// 正常修改逻辑
const selectedIndex = e.detail.value;
const selectedVillage = this.gridList[selectedIndex];
this.setData({
'form.gridName': selectedVillage.label,
'form.gridId': selectedVillage.value,
'form.villageId': '',
'form.buildId': '',
'form.unitId': '',
'form.homeId': '',
villageName: '',
villageList: [],
buildingName: '',
buildingList: [],
unitName: '',
unitList: [],
houseName: '',
houseList: []
});
this.getQuartersOptions(selectedVillage.value);
}
resolve();
});
},
bindPickerChangevillageId(e) {
return new Promise((resolve, reject) => {
if (this.isFirstLoadVillage) {
// 编辑回填逻辑
const id = this.form.villageId;
const temp = this.villageList.filter((item) => item.value == id);
let villageName = '';
if (temp.length != 0) {
villageName = temp[0].label;
} else {
this.showToast('小区信息有误');
return;
}
this.setData({
villageName: villageName,
'form.villageId': id
});
this.getBuildingoption(id);
this.setData({
isFirstLoadVillage: false
});
console.log(this.villageList, '小区');
} else {
// 正常修改逻辑
const selectedIndex = e.detail.value;
const selectedVillage = this.villageList[selectedIndex];
this.setData({
villageName: selectedVillage.label,
'form.villageId': selectedVillage.value,
'form.buildId': '',
'form.unitId': '',
'form.homeId': '',
buildingName: '',
buildingList: [],
unitName: '',
unitList: [],
houseName: '',
houseList: []
});
this.getBuildingoption(selectedVillage.value);
}
resolve();
});
},
bindPickerChangebuilding(e) {
return new Promise((resolve, reject) => {
if (this.isFirstLoadBuilding) {
const id = this.form.buildId;
const temp = this.buildingList.filter((item) => item.value == id);
let buildingName = '';
if (temp.length != 0) {
buildingName = temp[0].label;
} else {
this.showToast('小区信息有误');
return;
}
this.setData({
buildingName: buildingName,
'form.buildId': id
});
this.getUnitoption(id);
this.setData({
isFirstLoadBuilding: false
});
} else {
const selectedIndex = e.detail.value;
const selectedVillage = this.buildingList[selectedIndex];
this.setData({
buildingName: selectedVillage.label,
'form.buildId': selectedVillage.value,
'form.unitId': '',
'form.homeId': '',
unitName: '',
unitList: [],
houseName: '',
houseList: []
});
this.getUnitoption(selectedVillage.value);
}
resolve();
});
},
bindPickerChangeUnit(e) {
return new Promise((resolve, reject) => {
if (this.isFirstLoadUnit) {
const id = this.form.unitId;
const temp = this.unitList.filter((item) => item.value == id);
let unitName = '';
if (temp.length != 0) {
unitName = temp[0].label;
} else {
this.showToast('楼栋信息有误');
return;
}
this.setData({
unitName: unitName,
'form.unitId': id
});
this.getHouseoption(id);
this.setData({
isFirstLoadunit: false
});
} else {
const selectedIndex = e.detail.value;
const selectedVillage = this.unitList[selectedIndex];
this.setData({
unitName: selectedVillage.label,
'form.unitId': selectedVillage.value,
'form.homeId': '',
houseName: '',
houseList: []
});
this.getHouseoption(selectedVillage.value);
}
resolve();
});
},
bindPickerChangeHouse(e) {
return new Promise((resolve, reject) => {
if (this.isFirstLoadHouse) {
const id = this.form.homeId;
const temp = this.houseList.filter((item) => item.value == id);
let houseName = '';
if (temp.length != 0) {
houseName = temp[0].label;
} else {
this.showToast('房屋信息有误');
return;
}
this.setData({
houseName: houseName,
'form.homeId': id
});
this.setData({
isFirstLoadHouse: false
});
} else {
const selectedIndex = e.detail.value;
const selectedVillage = this.houseList[selectedIndex];
this.setData({
houseName: selectedVillage.label,
'form.homeId': selectedVillage.value
});
}
resolve();
});
},
bindNameInput(e) {
this.setData({
'form.name': e.detail.value
});
console.log(this.form);
},
bindPickerChangeGender(e) {
this.setData({
genderName: this.genderList[e.detail.value].label,
'form.gender': this.genderList[e.detail.value].value
});
},
bindDateChange(e) {
this.setData({
'form.birthday': e.detail.value
});
},
bindidNumInput(e) {
this.setData({
isShowIdNum: false,
'form.idNum': e.detail.value
});
console.log(this.form);
},
bindMobileInput(e) {
this.setData({
isShowIdTel: false,
'form.mobile': e.detail.value
});
console.log(this.form);
},
bindPlaceOfDomicileInput(e) {
this.setData({
'form.resideInfoDto.placeOfDomicile': e.detail.value
});
console.log(this.form);
},
bindCurrentResidenceInput(e) {
this.setData({
'form.resideInfoDto.currentResidence': e.detail.value
});
console.log(this.form);
},
bindPickerChangeNation(e) {
this.setData({
'form.nation': this.nation[e.detail.value].value
});
},
bindNativePlaceInput(e) {
this.setData({
'form.resideInfoDto.nativePlace': e.detail.value
});
},
bindPickerChangeEducation(e) {
this.setData({
'form.eduInfoDto.cultureLevel': this.education[e.detail.value].value
});
},
bindPickerChangemarriage(e) {
this.setData({
'form.familyInfoDto.marriage': this.marriageList[e.detail.value].value,
marriageName: this.marriageList[e.detail.value].label
});
},
bindReligionInput(e) {
this.setData({
'form.religionDto.religion': e.detail.value
});
},
onClick3() {
const than = this;
$wuxSelect('#wux-select3').open({
value: this.categoryInfo,
multiple: true,
toolbar: {
title: '居民类别',
confirmText: '确定'
},
options: than.residentCategory,
onChange: (value, index, options) => {
console.log('onChange', value, index, options);
const matchingLabels = value
.map((valueToFind) => {
const matchedItem = than.residentCategory.find((item) => item.value === valueToFind);
return matchedItem ? matchedItem.title : null;
})
.filter(Boolean);
this.setData({
value3: value,
residentCategorySty: matchingLabels.join(',')
});
},
onConfirm: (value, index, options) => {
console.log('onConfirm', value, index, options);
let updatedForm = {
...this.form
};
than.residentCategory.forEach((option) => {
if (value.includes(option.value)) {
updatedForm[option.value] = 1;
} else if (updatedForm[option.value] === 1) {
updatedForm[option.value] = 0;
}
});
this.setData({
value3: value,
title3: index.map((n) => options[n].title),
form: updatedForm
});
let residentTypeFormCell = [];
index.forEach((item) => {
residentTypeFormCell.push(this.residentCategory[item]);
});
this.setDynamicForm(residentTypeFormCell);
console.log(this.form);
}
});
},
showToast(title) {
uni.showToast({
title: title,
duration: 2000,
icon: 'none'
});
},
submit: async function () {
if (!this.form.gridId) {
this.showToast('请选择所在网格');
return;
}
if (!this.form.villageId) {
this.showToast('请选择所在小区');
return;
}
if (!this.form.buildId) {
this.showToast('请选择所在楼栋');
return;
}
if (!this.form.unitId) {
this.showToast('请选择所在单元');
return;
}
if (!this.form.homeId) {
this.showToast('请选择所在房屋');
return;
}
if (!this.form.name) {
this.showToast('请填写姓名');
return;
}
if (!this.form.gender) {
this.showToast('请选择性别');
return;
}
if (!this.form.birthday) {
this.showToast('请选择出生日期');
return;
}
if (!this.form.idNum) {
this.showToast('请填写证件号');
return;
}
if (!this.form.mobile) {
this.showToast('请填写联系电话');
return;
}
console.log(this.isShowIdNum, this.formType != 'edit');
const parm = {
...this.form,
// idNum: this.data.isShowIdNum&&this.data.formType === 'edit'?undefined:this.data.form.idNum,
// mobile: this.data.isShowIdTel&&this.data.formType === 'edit'?undefined:this.data.form.mobile,
ensureHouseDto: this.ensureHouseFlagOpen ? this.getValue(this.residentTypeForm.ensureHouseFlag) : undefined,
unemployedDto: this.unemployedFlagOpen ? this.getValue(this.residentTypeForm.unemployedFlag) : undefined,
veteranDto: this.veteranFlagOpen ? this.getValue(this.residentTypeForm.veteranFlag) : undefined,
unitedFrontDto: this.unitedFrontFlagOpen ? this.getValue(this.residentTypeForm.unitedFrontFlag) : undefined,
volunteerDto: this.volunteerFlagOpen ? this.getValue(this.residentTypeForm.volunteerFlag) : undefined,
specialSupportDto: this.specialSupportFlagOpen ? this.getValue(this.residentTypeForm.specialSupportFlag) : undefined,
tenantDto: this.tenantFlagOpen ? this.getValue(this.residentTypeForm.tenantFlag) : undefined,
specialDto: this.specialCrowdFlagOpen ? this.getValue(this.residentTypeForm.specialCrowdFlag) : undefined,
oldPeopleDto: this.oldPeopleFlagOpen ? this.getValue(this.residentTypeForm.oldPeopleFlag) : undefined,
postDto: this.publicWelfareFlagOpen ? this.getValue(this.residentTypeForm.publicWelfareFlag) : undefined
};
console.log(this.formType);
if (this.formType == 'edit') {
parm.resiId = this.resiId;
try {
const res = await api.resiEdit(parm);
if (res.code === 0) {
uni.showToast({
title: '编辑成功',
duration: 3000,
success: function () {
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 3000);
}
});
}
} catch (err) {
console.log('CatchClause', err);
console.log('CatchClause', err);
console.log(err);
}
} else {
try {
const res = await api.resiAdd(parm);
if (res.code === 0) {
uni.showToast({
title: '新增成功',
duration: 3000,
success: function () {
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 3000);
}
});
}
} catch (err) {
console.log('CatchClause', err);
console.log('CatchClause', err);
console.log(err);
}
}
},
back() {
//返回上一级,关闭当前页面
uni.navigateBack({
delta: 1
});
},
handelJump() {
uni.navigateTo({
url: '/subpages/addhouse/pages/addhouse/addhouse'
});
},
closeDynamicForms() {
this.setData({
isShowDynamicForms: false
});
},
okDynamicForms(e) {
console.log(e);
let residentTypeForm = this.residentTypeForm;
residentTypeForm[this.currentFormController] = e.detail;
this.setData({
residentTypeForm
});
},
setDynamicForm(data) {
let residentTypeFormCell = data.filter((item) => item.isForm);
let values = residentTypeFormCell.map((item) => item.value);
// 保障房人员
if (values.includes('ensureHouseFlag')) {
this.getHouseTypes();
}
// 失业人员
if (values.includes('unemployedFlag')) {
// 失业原因
this.getDictData('unemployment_reason', 'unemploymentReason');
// 愿望
this.getDictData('career_goals', 'employmentWish');
}
// 志愿者
if (values.includes('volunteerFlag')) {
// 志愿者类别
this.getDictData('VOLUNTEER_CATEGORY', 'volunteerCategory');
}
// 特扶
if (values.includes('specialSupportFlag')) {
//获取伤残类别字典
this.getDictData('disability_category_code', 'childDisabilityCategoryCode');
// 获取伤残等级字典
this.getDictData('disability_level', 'childDisabilityLevel');
}
// 特殊人群
if (values.includes('specialCrowdFlag')) {
//人群类别
this.getDictData('special_resident_category', 'specialCategoryCode');
}
// 公益岗人员
if (values.includes('specialCrowdFlag')) {
//岗位类型
this.getDictData('public_welfare_post_type', 'postTypes');
}
this.setData({
residentTypeFormCell
});
// residentTypeForm
},
async openDynamicForms(e) {
var data = {};
let formtype = e.currentTarget.dataset.formtype;
let id = this.resiId;
if (formtype === 'ensureHouseFlag') {
let res = await residentEnsureHouse(id);
data = res.data;
}
if (formtype === 'unemployedFlag') {
let res = await residentUnemployed(id);
data = res.data;
}
if (formtype === 'veteranFlag') {
let res = await getVeteranDetailById(id);
data = res.data;
}
if (formtype === 'unitedFrontFlag') {
let res = await residentUnitedFront(id);
data = res.data;
}
if (formtype === 'volunteerFlag') {
let res = await getVolunteerDetailById(id);
data = res.data;
}
if (formtype === 'specialSupportFlag') {
let res = await specialSupport(id);
data = res.data;
}
if (formtype === 'tenantFlag') {
let res = await residentTenant(id);
data = res.data;
}
if (formtype === 'specialCrowdFlag') {
let res = await residentSpecial(id);
data = res.data;
}
if (formtype === 'oldPeopleFlag') {
let res = await getOldPeopleDetailById(id);
data = res.data;
}
if (formtype === 'publicWelfareFlag') {
let res = await publicWelfarePost(id);
data = res.data;
}
let residentTypeForm = this.residentTypeForm;
residentTypeForm[formtype].forEach((item) => {
if (item.key === 'userId') {
item.value = id;
}
for (let i in data) {
if (item.key === i) {
item.value = data[item.key];
if (data[item.key]) {
console.log(data[item.key], 'data[item.key]');
if (item.type === 'date') {
item.value = data[item.key].split(' ')[0];
}
if (item.type === 'checkbox') {
let arr = [];
let value = data[item.key].split(',');
value.forEach((item2) => {
arr.push(...item.options.filter((item3) => item3.value === item2));
});
item.selected = arr.map((item) => item.label).join(',');
}
if (item.type === 'select') {
let options = item.options.map((item2) => item2[item.valueKey]);
item.valueIndex = options.indexOf(item.value);
if (item.masterControl) {
residentTypeForm[formtype].forEach((item3) => {
if (item3.showFlag) {
if (item3.showFlag === item.value) {
item3.hide = false;
} else {
item3.hide = true;
}
}
});
}
} else {
item.valueIndex = -1;
}
}
}
}
});
this.setData({
residentTypeForm,
[formtype + 'Open']: true,
dynamicFormsTitle: '填写' + e.currentTarget.dataset.title,
currentFormController: formtype,
formController: this.residentTypeForm[e.currentTarget.dataset.formtype],
isShowDynamicForms: true
});
console.log(this);
},
// 获取住房性质
getHouseTypes() {
getHouseType({
formCode: 'resi_base_info'
}).then((res) => {
console.log(res.data);
this.setPickerOptions('housingNature', res.data);
});
},
getDictData(dictType, formName) {
dictlist({
dictType: dictType
}).then((res) => {
this.setPickerOptions(formName, res.data);
});
},
setPickerOptions(key, options) {
let residentTypeForm = this.residentTypeForm;
for (let item in residentTypeForm) {
residentTypeForm[item].forEach((item2) => {
if (item2.key === key) {
item2.options = options;
}
});
}
this.setData({
residentTypeForm
});
},
getValue(arry) {
let obj = {};
arry.forEach((item) => {
if (item.type === 'date' && item.value != '') {
item.value = item.value + ' 00:00:00';
}
obj[item.key] = item.value;
});
return obj;
},
hideDataFun(e) {
let key = e.currentTarget.dataset.key;
let form = this.form;
form[key] = this.hideData[key];
if (key === 'idNum') {
this.setData({
isShowIdNum: !this.isShowIdNum
});
}
if (key === 'mobile') {
this.setData({
isShowIdTel: !this.isShowIdTel
});
}
this.setData({
form
});
},
showData(e) {
let key = e.currentTarget.dataset.key;
let form = this.form;
let hideData = this.hideData;
hideData[key] = form[key];
this.setData({
hideData
});
api.getResiUserInfo(this.resiId).then((res) => {
if (key === 'idNum') {
this.setData({
isShowIdNum: !this.isShowIdNum
});
}
if (key === 'mobile') {
this.setData({
isShowIdTel: !this.isShowIdTel
});
}
form[key] = res.data[key];
this.setData({
form
});
console.log(res.data[key], this.form[key]);
});
},
bindIdNumInput() {
console.log('占位:函数 bindIdNumInput 未声明');
},
bindmobileInput() {
console.log('占位:函数 bindmobileInput 未声明');
}
}
};
</script>
<style>
/* subpages/addResi/pages/addResi/addResi.wxss */
page {
width: 100%;
min-height: 100vh;
overflow-y: auto;
background-color: #f7f7f7;
}
.gray {
color: #c1c1c1;
}
.m-top20 {
margin-top: 20rpx;
}
.header {
width: 100%;
height: 444rpx;
overflow: hidden;
background-image: url('/static/subpages/addResi/pages/images/header.png');
background-size: 100% 100%;
11 months ago
}
.header .header-bg {
width: 100%;
height: 444rpx;
position: absolute;
height: 100%;
z-index: -999;
}
.back {
width: 30rpx;
height: 30rpx;
margin-left: 20rpx;
position: absolute;
margin-top: 20rpx;
border-radius: 0rpx;
z-index: 101;
}
.header .navigation {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
color: #333333;
font-size: 32rpx;
position: relative;
z-index: 100;
}
.header .content {
margin: 160rpx 0 0 50rpx;
}
.header .content .h2 {
font-size: 44rpx;
font-family: PingFang SC;
font-weight: 800;
color: #333333;
margin-bottom: 28rpx;
}
.header .content .tag {
width: 200rpx;
height: 50rpx;
position: relative;
line-height: 48rpx;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #94a6c2;
padding-left: 15rpx;
}
.header .content .tag b {
color: #ff2a00;
}
.header .content .tag image {
width: 170rpx;
height: 50rpx;
position: absolute;
top: 0;
left: 0;
z-index: -888;
}
.content {
width: 100%;
height: auto;
padding: 0 20rpx;
box-sizing: border-box;
position: relative;
top: -30rpx;
}
.form_card {
background-color: #fff;
border-radius: 10rpx;
padding: 0 30rpx;
box-sizing: border-box;
height: auto;
}
.form_card > .title {
height: 90rpx;
line-height: 90rpx;
font-size: 34rpx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
position: relative;
}
.form_card .title .tag {
width: 10rpx;
height: 28rpx;
background: #3a80e7;
border-radius: 4rpx;
position: absolute;
left: -30rpx;
top: 50%;
transform: translateY(-14rpx);
}
.form_card .form_item {
display: flex;
align-items: center;
border-top: 1px solid #eaeaea;
height: 100rpx;
}
.form_card .form_house {
height: 139rpx;
display: flex;
flex-direction: column;
}
.form_card .form_house .form_bottom {
font-size: 24rpx;
color: #c1c1c1;
position: relative;
top: -10rpx;
}
.form_card .form_house .form_bottom text {
color: #3a80e7;
}
.form_card .form_item .label {
min-width: 130rpx;
height: 100%;
line-height: 100rpx;
font-size: 32rpx;
font-family: PingFang SC;
font-weight: 500;
color: #666666;
position: relative;
}
.form_card .form_item .label .must {
font-size: 32rpx;
font-weight: 500;
color: #ff2a00;
position: absolute;
left: -18rpx;
top: 50%;
transform: translateY(-50rpx);
}
.form_card .form_item .input {
flex: 1;
display: flex;
justify-content: space-around;
align-items: center;
margin-left: 51rpx;
overflow: hidden;
}
.form_card .form_item .input .residentCategorySty {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.form_card .form_item .input picker,
.form_card .form_item .input input {
flex: 1;
}
.form_card .form_item .input image {
height: 22rpx;
width: 22rpx;
}
.bottom_btn {
width: 600rpx;
height: 86rpx;
background: linear-gradient(87deg, #81b5fb 0%, #3e92ff 100%);
border-radius: 43rpx;
text-align: center;
color: #fff;
margin: 30rpx auto 0;
line-height: 86rpx;
}
.text-right {
text-align: right !important;
justify-content: flex-end !important;
}
</style>