城阳pc工作端前端代码
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.
 
 
 

1146 lines
47 KiB

<template>
<div class='g-main' v-loading="loading" v-if="showFlag">
<div class="left">
<div class="user">
<img src="@/assets/images/index/nan.png" alt="">
<span v-if="resiDetailObj.baseInfoDto"> {{ resiDetailObj.baseInfoDto.name
}}({{ age }}岁)</span>
<span v-else> -- </span>
</div>
<div class="menu">
<div class="progress">
<div class="text"><span>信息完整度</span> <span>{{ score }}</span> </div>
<el-progress :percentage="70" :show-text="false"></el-progress>
</div>
<div class="list">
<div :class="{ 'item': true, 'active': index == active }" v-for="(item, index) in menuList"
@click="handelCLickMenu(item.id, index)" v-show="item.filledQty != 0">
<span>{{ item.name }}</span><span
:class="{ 'incomplete': item.filledQty != item.totalQty && index != active, 'full': item.filledQty == item.totalQty }">({{
item.filledQty }}/{{
item.totalQty }})</span>
</div>
</div>
</div>
</div>
<div class="right">
<div class="editBtn">
<el-button type="primary" size="small" @click="handelClickJumpEdit">编辑</el-button>
</div>
<div class="title-small">基础信息</div>
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="6" class="f-flex">
<div class="f-label "><b>国籍:</b></div>
<div class="f-left8 f-font-color">
{{ nationalityText }}
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label"><b>证件类型:</b></div>
<div class="f-left8 f-font-color">
{{ idTypeText }}
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label"><b>证件号:</b></div>
<div class="f-left8 f-font-color">
{{
resiDetailObj.baseInfoDto && resiDetailObj.baseInfoDto.idNum
? resiDetailObj.baseInfoDto.idNum
: "--"
}}
</div>
<img v-show="showFlagIdCardBtn" src="@/assets/img/yanjing1.png" alt="" width="14px"
style="margin-left: 10px" />
<img v-show="!showFlagIdCardBtn" src="@/assets/img/yanjing2.png" alt="" width="14px"
style="margin-left: 10px" />
<el-button type="text" class="div-table-button--blue" size="small"
@click="handelCLickShowCheckPassword('idCard')">{{ showFlagIdCardBtn ? "显示" : "隐藏"
}}</el-button>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label"><b>联系电话:</b></div>
<div class="f-left8 f-font-color">
{{
resiDetailObj.baseInfoDto && resiDetailObj.baseInfoDto.mobile
? resiDetailObj.baseInfoDto.mobile
: "--"
}}
</div>
<img v-show="showFlagMobileBtn" src="@/assets/img/yanjing1.png" alt="" width="14px"
style="margin-left: 10px" />
<img v-show="!showFlagMobileBtn" src="@/assets/img/yanjing2.png" alt="" width="14px"
style="margin-left: 10px" />
<el-button type="text" class="div-table-button--blue" size="small"
@click="handelCLickShowCheckPassword('mobile')">{{ showFlagMobileBtn ? "显示" : "隐藏"
}}</el-button>
</el-col>
</el-row>
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="6" class="f-flex">
<div class="f-label">性别:</div>
<div class="f-left8 f-font-color">
{{
resiDetailObj.baseInfoDto && resiDetailObj.baseInfoDto.genderName
? resiDetailObj.baseInfoDto.genderName : "--"
}}
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label">出生日期:</div>
<div class="f-left8 f-font-color">{{ resiDetailObj.baseInfoDto.birthday }}</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label">民族:</div>
<div class="f-left8 f-font-color">
{{ resiDetailObj.baseInfoDto && resiDetailObj.baseInfoDto.nationName ?
resiDetailObj.baseInfoDto.nationName : "--" }}
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label">文化程度:</div>
<span class="f-left8 f-font-color"> {{ resiDetailObj.eduInfoDto &&
resiDetailObj.eduInfoDto.cultureLevelName ?
resiDetailObj.eduInfoDto.cultureLevelName : "--" }}</span>
</el-col>
</el-row>
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label">婚姻状况:</div>
<span class="f-left8 f-font-color">{{ categoryDictText }}</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label">配偶情况:</div>
<span class="f-left8 f-font-color">{{ spouseText }}</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label">备注:</div>
<div class="f-left8 f-font-color">
{{ resiDetailObj.baseInfoDto.remark ? resiDetailObj.baseInfoDto.remark :
"--" }}
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label">创建日期:</div>
<span class="f-left8 f-font-color">
{{ resiDetailObj.baseInfoDto.createdTime ?
resiDetailObj.baseInfoDto.createdTime : "--" }}</span>
</el-col>
</el-row>
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="24" class="f-flex">
<div class="f-flex ">
<div class="f-label">更新时间:</div>
<span class="f-left8 f-font-color">
{{ resiDetailObj.baseInfoDto.updatedTime ?
resiDetailObj.baseInfoDto.updatedTime : "--" }}</span>
</div>
</el-col>
</el-row>
<div class="title-small">居住信息</div>
<section v-for="(item, indexK) in resiDetailObj.resideInfoDtos" :key="indexK">
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="12" class="f-flex">
<div class="f-flex ">
<div class="f-label"><b>所属网格:</b></div>
<span class="f-left8 f-font-color">
{{ item.gridName || '--' }}
</span>
</div>
</el-col>
<el-col :span="12" class="f-flex">
<div class="f-flex ">
<div class="f-label"><b>所属房屋:</b></div>
<span class="f-left8 f-font-color">
{{ item.gridName + '-' + item.homeName || '--' }}
</span>
</div>
</el-col>
</el-row>
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label"><b>人房关系:</b></div>
<span class="f-left8 f-font-color">
{{ item.resiHouseRel != null ? item.resiHouseRel === 0 ? '自住' : item.resiHouseRel ===
1 ? '租住' : '--' : '--' }}
</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label"><b>人户状况:</b></div>
<span class="f-left8 f-font-color">{{ householdSituationText(indexK) }}</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label"><b>户籍所在地:</b></div>
<div class="f-left8 f-font-color">
{{ item.placeOfDomicile || '--' }}
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label"><b>与户主关系:</b></div>
<span class="f-left8 f-font-color">{{ houseHolderRelText(indexK) }}</span>
</el-col>
</el-row>
</section>
<div class="title-small">拓展信息</div>
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label">宗教信仰:</div>
<span class="f-left8 f-font-color">{{
resiDetailObj.religionDto && resiDetailObj.religionDto.religion ?
resiDetailObj.religionDto.religion : "--"
}}</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label">籍贯:</div>
<span class="f-left8 f-font-color">{{
resiDetailObj.baseInfoDto
? resiDetailObj.baseInfoDto.nativePlace
? resiDetailObj.baseInfoDto.nativePlace
: "--"
: "--"
}}</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label"><b>就业状态:</b></div>
<div class="f-left8 f-font-color">
{{ careerStatusText }}
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label">工作单位:</div>
<span class="f-left8 f-font-color">{{
resiDetailObj.workInfoDto
? resiDetailObj.workInfoDto.workUnit
? resiDetailObj.workInfoDto.workUnit
: "--"
: "--"
}}</span>
</el-col>
</el-row>
<el-row type="flex" justify="" class="f-m-top23">
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label">职业:</div>
<span class="f-left8 f-font-color">{{
resiDetailObj.workInfoDto
? resiDetailObj.workInfoDto.occupation
? resiDetailObj.workInfoDto.occupation
: "--"
: "--"
}}</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-flex ">
<div class="f-label">月收入:</div>
<span class="f-left8 f-font-color">{{
resiDetailObj.economyDto
? resiDetailObj.economyDto.monthIncome
? resiDetailObj.economyDto.monthIncome
: "--"
: "--"
}}</span>
</div>
</el-col>
<el-col :span="6" class="f-flex">
<div class="f-label">有无赡养人:</div>
<div class="f-left8 f-font-color">
{{
resiDetailObj.familyInfoDto && resiDetailObj.familyInfoDto.elderlyFlag == 1
? "有"
: resiDetailObj.familyInfoDto && resiDetailObj.familyInfoDto.elderlyFlag == 0
? "无"
: "--"
}}
</div>
</el-col>
</el-row>
<div class="title-small">关系图谱</div>
<graph :userInfo="resiDetailObj.baseInfoDto" v-if="resiDetailObj.baseInfoDto" />
<div class="title-small">人员标签</div>
<staff-tag :userInfo="resiDetailObj" ref="staffTag" v-if="Object.keys(resiDetailObj).length !== 0"
:formType="'detail'"></staff-tag>
<section v-for="(sectionItem, sectionIndex) in expandList" :key="sectionIndex">
<div class="title-small" :id="sectionItem.id">{{ sectionItem.title }}</div>
<el-row type="flex" justify="" class="f-m-top23" v-for="(row, rowIndex) in sectionItem.rows"
:key="rowIndex + sectionItem.id">
<el-col :span="8" class="f-flex" v-for="(item, itemIndex) in row" :key="itemIndex">
<div class="f-flex">
<div class="f-label">{{ item.label }}:</div>
<span class="f-left8 f-font-color">{{ item.value ? item.value : "--" }}</span>
</div>
</el-col>
</el-row>
</section>
<div class="title-small">业务记录</div>
<business-record :userInfo="resiDetailObj"></business-record>
<div class="title-small">更新记录</div>
<change-record :tableData="changeRecordList"></change-record>
</div>
<el-dialog title="密码验证" :visible.sync="showCheckPassword">
<el-form :model="form" :rules="rules" ref="form">
<el-form-item label="密码" prop="password">
<el-input v-model="form.password" autocomplete="off" type="password"
placeholder="请输入当前账号密码"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="showCheckPassword = false">取 消</el-button>
<el-button type="primary" @click="handelClickCheckPassword"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { requestPost } from '@/js/dai/request'
import graph from './cpts/graph.vue'
import staffTag from './cpts/staffTag.vue'
import businessRecord from './cpts/businessRecord.vue'
import changeRecord from './cpts/table/changeRecord.vue'
import { idTypeList } from "@/js/columns/constants";
export default {
data() {
return {
loading: true,
checkType: 'edit',//edit或者view
changeRecordList: [],//更新记录
showFlag: true,
resiDetailObj: {},//居民详情
showFlagIdCardBtn: true,
showFlagMobileBtn: true,
active: 0,
menuList: [],
score: null,
age: null,
nationalityList: [],//国籍字典
marriageArr: [], //婚姻状况字典
spouseArr: [],//配偶情况字典
careerStatusArr: [],//就业状况字典
householdSituationArr: [],//户籍情况字典
houseHolderRelArr: [],//与户主关系字典
idTypeList,//证件类型字典
showCheckPassword: false,
originalExpandList: [{
id: 'healthDto',
title: '残疾信息',
children: [
{
label: "残疾类别",
itemType: "select1",
formName: "disabilityCategoryCode",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'disability_category_code' },
opction: []
},
{
label: "残疾等级",
itemType: "select1",
formName: "disabilityLevel",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'disability_level' },
opction: []
},
{
label: "残疾证号",
itemType: "input1",
formName: "disabilityNum",
},
{
label: "残疾说明",
itemType: "input1",
formName: "disabilityDesc",
},
{
label: "监护人",
itemType: "radio1",
formName: "guardianFlag",
opction: [
{ label: '有', formName: '', value: 1 },
{ label: '无', formName: '', value: 0 }
]
},
{
label: "监护人姓名",
itemType: "input1",
formName: "guardianName",
},
{
label: "监护人联系电话",
itemType: "input1",
formName: "guardianMobile",
},
{
label: "技能特长",
itemType: "radio1",
formName: "specialSkillFlag",
opction: [
{ label: '有', formName: '', value: 1 },
{ label: '无', formName: '', value: 0 }
]
},
{
label: "劳动能力",
itemType: "radio1",
formName: "workCapacityFlag",
opction: [
{ label: '有', formName: '', value: 1 },
{ label: '无', formName: '', value: 0 }
]
},
]
},
{
id: 'seriousIllnessDto',
title: '大病信息',
children: [
{
label: "所患大病",
itemType: "checkbox",
formName: "illnessCodes",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'illness_code' },
opction: []
},]
},
{
id: 'chronicDiseaseDto',
title: '慢病信息',
children: [
{
label: "所患慢病",
itemType: "checkbox",
formName: "chronicDiseaseCodes",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'chronic_disease_code' },
opction: []
},
]
},
{
id: 'deathDto',
title: '死亡信息',
children: [
{
label: "死亡时间",
itemType: "datepicker1",
formName: "deathTime",
},
]
},
{
id: 'oldPeopleDto',
title: '老年人信息',
children: [
{
label: "老年人分类",
itemType: "select1",
multiple: true,
formName: "oldPeopleCategories",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'oldPeople_categories' },
},
{
label: "居住情况",
itemType: "select1",
formName: "resideSituation",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'reside_situation' },
},
{
label: "高龄补助",
itemType: "inputNum",
formName: "oldSubsidy",
},
]
},
{
id: 'subsistenceAllowanceDto',
title: '低保信息',
children: [
{
label: "低保类别",
itemType: "select1",
formName: "category",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'subsistence_allowance_category' },
},
{
label: "低保享受原因",
itemType: "checkbox",
formName: "reasons",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'subsistence_allowance_reasons' },
opction: []
},
]
},
{
id: "parymemberInfoDto",
title: '党员信息',
children: [
{
label: "入党时间",
itemType: "datepicker1",
formName: "joinTime",
opction: [
]
},
{
label: "转正时间",
itemType: "datepicker1",
formName: "positiveTime",
opction: [
]
},
{
label: "所属党组织",
itemType: "cascader1",
formName: "partyOrgId",
opction: [
]
},
{
label: "流动党员",
itemType: "radio1",
formName: "flowFlag",
opction: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
]
},
{
label: "流动党员活动证号",
itemType: "input1",
formName: "flowActNum",
},
{
label: "职务",
itemType: "select1",
formName: "partyJob",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'party_job' },
opction: [
]
},
{
label: "工作职责",
itemType: "input1",
formName: "duty",
},
{
label: "是否退休",
itemType: "radio1",
formName: "retiredFlag",
opction: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
]
}, {
label: "党员中心户",
itemType: "radio1",
formName: "centerFlag",
opction: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
]
}, {
label: "免学习",
itemType: "radio1",
formName: "studyNotNeed",
opction: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
]
}, {
label: "入党时所在党支部",
itemType: "input1",
formName: "joinBranchName",
}, {
label: "组织关系转入社区时间",
itemType: "datepicker1",
formName: "joinCommunityTime",
opction: [
]
},
]
},
{
id: 'ensureHouseDto',
title: '保障房信息',
children: [
{
label: "所在社区",
itemType: "input1",
formName: "liveCommunity",
},
{
label: "住房性质",
itemType: "select1",
formName: "housingNature",
opctionUrl: 'sys/dict/data/house',
opctionParams: { formCode: "resi_base_info" },
opction: [
]
}
]
},
{
id: 'veteranDto',
title: '退役军人信息',
children: [
{
label: "入伍时间",
itemType: "datepicker1",
formName: "joinArmyTime",
opction: [
]
},
{
label: "退伍时间",
itemType: "datepicker1",
formName: "leaveArmyTime",
opction: [
]
},
{
label: "服役单位",
itemType: "input1",
formName: "serviceUnit",
},
{
label: "接收单位",
itemType: "input1",
formName: "receiveUnit",
},
{
label: "待安置补助金",
itemType: "inputNum",
formName: "settlementAmount",
opction: [
]
},
{
label: "培训状况",
itemType: "input1",
formName: "trainDesc",
},
{
label: "现就业情况",
itemType: "input1",
formName: "employmentSituation",
},
{
label: "是否办理公益性岗位",
itemType: "radio1",
formName: "pubWelfareJobFlag",
opction: [
{ label: '是', value: 1 },
{ label: '否', value: 0 },
]
}
]
},
{
id: 'unitedFrontDto',
title: '统战人员信息',
children: [{
label: "统战类型",
itemType: "input1",
formName: "unitedFrontType",
}]
},
{
id: 'volunteerDto',
title: '志愿者信息',
children: [
{
label: "志愿者类别",
itemType: "checkbox",
formName: "volunteerCategory",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: "VOLUNTEER_CATEGORY" },
opction: [
]
}
]
},
{
id: 'specialSupportDto',
title: '特扶人员信息',
children: [
{//0
label: "特扶类别",
itemType: "select1",
formName: "specialSupportType",
opction: [
{
value: '1',
label: '失独'
},
{
value: '2',
label: '伤残'
}
]
},
{//1
label: "子女姓名",
itemType: "input1",
formName: "childName",
opction: [
]
},
{//2
label: "子女性别",
itemType: "select1",
formName: "childGender",
opction: [
{
value: '1',
label: '男'
},
{
value: '2',
label: '女'
}
]
},
{
label: "子女死亡日期",
itemType: "datepicker1",
formName: "certificateDate",
opction: [],
},
{
label: "子女伤残类别",
itemType: "select1",
formName: "childDisabilityCategoryCode",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'disability_category_code' },
opction: []
},
{
label: "子女伤残等级",
itemType: "select1",
formName: "childDisabilityLevel",
opctionUrl: 'sys/dict/data/dictlist',
opctionParams: { dictType: 'disability_level' },
opction: []
}
]
},],
expandList: [],
form: {
password: ''//脱敏确认密码
},
rules: {
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
]
}
};
},
components: { graph, staffTag, businessRecord, changeRecord },
created() { },
mounted() {
},
activated() {
},
methods: {
// 更新记录
async getChangeRecordDetailById() {
try {
const { data } = await this.$http.post(
`/actual/base/residentChangeRecord/getChangeRecordsById/${this.resiId}`
);
if (data.data == null) {
this.changeRecordList = [];
} else {
this.changeRecordList = data.data;
}
} catch (error) {
console.log(error);
}
},
// 计算年龄
calculateAge(birthdayTimestamp) {
// 获取当前日期
const currentDate = new Date();
// 将生日时间戳转换为日期对象
const birthdayDate = new Date(birthdayTimestamp);
// 计算年龄
let age = currentDate.getFullYear() - birthdayDate.getFullYear();
// 检查是否已经过了生日
const currentMonth = currentDate.getMonth();
const birthMonth = birthdayDate.getMonth();
if (currentMonth < birthMonth || (currentMonth === birthMonth && currentDate.getDate() < birthdayDate.getDate())) {
age--;
}
return age;
},
async getNationalityList() {
try {
const { data } = await this.$http.post('sys/dict/data/dictlist', { 'dictType': 'nationality' });
this.nationalityList = data.data
} catch (error) {
console.log(error, `获取 ${dictType} 字典`);
}
},
getResiDetail() {
this.$http
.get(`/actual/base/residentIntegratedInfo/detail/masked/${this.resiId}`)
.then(async (res) => {
if (res.data.code === 0) {
this.showFlag = true;
this.resiDetailObj = res.data.data || {};
const nameMap = {
ext: '拓展信息',
united_front: '统战人员信息',
party_member: '党员信息',
death: '死亡信息',
disability: '残疾信息',
subsistence_allowance: '低保信息',
serious_illness: '大病信息',
veteran: '退役军人信息',
special_support: '特扶人员信息',
old_people: '老年人信息',
ensure_house: '保障房信息',
chronic_disease: '慢病信息',
base: '基本信息'
};
this.menuList = Object.entries(res.data.data.integrityData.integrityQtyMap).map(([key, value]) => ({
name: nameMap[key],
id: key,
filledQty: value.filledQty,
totalQty: value.totalQty
})).reverse();
let arr = this.menuList.filter(item => item.filledQty > 0 && item.name !== '基本信息' && item.name !== '拓展信息');
this.expandList = this.originalExpandList.filter(itemA => {
return arr.some(itemB => itemB.name === itemA.title);
});
await Promise.all(this.expandList.map(async item => {
await Promise.all(item.children.map(async child => {
const key = child.formName;
console.log(this.resiDetailObj[item.id]);
if (this.resiDetailObj[item.id].hasOwnProperty(key)) {
child.value = await this.getDictName(child.opctionUrl, child.opctionParams, this.resiDetailObj[item.id][key == 'partyOrgId' ? 'branchId' : key], child.itemType, child.opction);
}
}));
}));
this.expandList.forEach(item => {
const rows = [];
const chunkSize = 3;
for (let i = 0; i < item.children.length; i += chunkSize) {
rows.push(item.children.slice(i, i + chunkSize));
}
item.rows = rows;
});
this.menuList.push(
{
name: '业务记录',
filledQty: 1,
totalQty: 1
},
{
name: '更新纪录',
filledQty: 1,
totalQty: 1
}
);
this.score = res.data.data.integrityData.score;
const birthdayTimestamp = Date.parse(res.data.data.baseInfoDto.birthday);
this.age = this.calculateAge(birthdayTimestamp);
this.nationalityList.forEach(element => {
if (element.value === res.data.data.nationality) {
this.resiDetailObj.baseInfoDto.nationalityName = element.label;
}
});
} else if (res.data.code >= 8000) {
this.resiDetailObj = {};
this.showFlag = false
this.$message.error(res.data.msg);
}
})
.catch((err) => {
this.loading = false;
console.log(err);
});
},
handelClickJumpEdit() {
this.checkType = 'edit';
this.showCheckPassword = true;
},
async getDictName(url, params, value, itemType, opction) {
try {
if (url) {
const { data } = await this.$http.post(url, params);
const dictData = data.data;
if (itemType == 'checkbox') {
const matchedItem = dictData.find(item => value.includes(item.value.toString()));
return matchedItem ? matchedItem.label : '--';
} else if (itemType == 'select1') {
const matchedItem = dictData.find(item => item.value === value);
return matchedItem ? matchedItem.label : '--';
}
} else {
if (itemType == 'radio1') {
console.log(opction, value, '单元中心户');
const matchedItem = opction.find(item => item.value === value)
return matchedItem ? matchedItem.label : '--';
} else if (itemType == 'input1' || itemType == "datepicker1" || itemType == 'cascader1') {
return value ? value : '--';
}
}
} catch (error) {
console.log(error);
}
},
handelCLickMenu(id, index) {
this.active = index
if (index == 0) return
const bottomElement = document.getElementById('pane-jumin-huaxiang');
bottomElement.scrollIntoView({ behavior: 'smooth', block: 'end' });
},
handelCLickShowCheckPassword(type) {
this.form.password = '';
this.checkType = 'view';
if (type === 'idCard') {
if (this.showFlagIdCardBtn) {
this.showCheckPassword = true;
} else {
this.showFlagIdCardBtn = true;
this.$set(
this.resiDetailObj.baseInfoDto,
"idNum",
this.resiDetailObj.baseInfoDto.idNum.substr(0, 11) + "****" + this.resiDetailObj.baseInfoDto.idNum.substr(16, 2)
);
}
} else if (type === 'mobile') {
if (this.showFlagMobileBtn) {
this.showCheckPassword = true;
} else {
this.showFlagMobileBtn = true;
this.$set(
this.resiDetailObj.baseInfoDto,
"mobile",
this.resiDetailObj.baseInfoDto.mobile.substr(0, 3) + "****" + this.resiDetailObj.baseInfoDto.mobile.substr(7, 4)
);
}
}
this.tuominType = type;
},
handelClickCheckPassword() {
this.$refs.form.validate(vali => {
if (vali) {
this.handleSaveTuomin(this.form.password)
} else {
return false
}
})
},
async handleSaveTuomin(password) {
const url = `/actual/base/residentBaseInfo/getResiUserInfo/${this.resiId}`;
let parm = {
password
}
const { data, code, msg } = await requestPost(url, parm);
if (code === 0) {
if (this.checkType == 'view') {
if (this.tuominType === "mobile") {
this.$set(this.resiDetailObj.baseInfoDto, "mobile", data.mobile);
this.showFlagMobileBtn = !this.showFlagMobileBtn;
}
if (this.tuominType === "idCard") {
this.$set(this.resiDetailObj.baseInfoDto, "idNum", data.idNum);
this.showFlagIdCardBtn = !this.showFlagIdCardBtn;
}
this.showCheckPassword = false
} else if (this.checkType == 'edit') {
this.showCheckPassword = false
this.$router.push({ name: 'edit-resi', query: { id: data.id }, params: { idNum: data.idNum, mobile: data.mobile } });
}
} else {
this.$message.error(msg);
}
},
// 婚姻状况字典
async getMarriage() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "marriage",
});
this.marriageArr = data.data;
} catch (error) {
console.log(error, "获取婚姻状况字典");
}
},
// 就业状态字典
async getCareerStatus() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "career_status",
});
this.careerStatusArr = data.data;
} catch (error) {
console.log(error, "获取就业状态字典");
}
},
// 人户状况
async getHouseholdSituation() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "household_situation",
});
this.householdSituationArr = data.data;
} catch (error) {
console.log(error, "获取人户状况");
}
},
// 配偶情况
async getSpouse() {
try {
const { data } = await this.$http.post("sys/dict/data/dictlist", {
dictType: "spouse_situation",
});
this.spouseArr = data.data;
} catch (error) {
console.log(error, "获取配偶情况字典");
}
},
// 与户主关系
async gethouseHolderRel() {
try {
const { data } = await this.$http.post("sys/dict/data/relationship", {
formCode: "resi_base_info",
});
this.houseHolderRelArr = data.data;
} catch (error) {
console.log(error, "获取与户主关系");
}
},
houseHolderRelText(index) {
let text = "--";
this.houseHolderRelArr.forEach((item) => {
if (item.value == this.resiDetailObj.resideInfoDtos[index].houseHolderRel) {
text = item.label;
}
});
return text;
},
householdSituationText(index) {
let text = "--";
this.householdSituationArr.forEach((item) => {
if (item.value == this.resiDetailObj.resideInfoDtos[index].householdSituation) {
text = item.label;
}
});
return text;
}
},
computed: {
categoryDictText() {
let text = "--";
this.marriageArr.forEach((item) => {
if (item.value == this.resiDetailObj.familyInfoDto.marriage) {
text = item.label;
}
});
return text;
},
spouseText() {
let text = "--";
this.spouseArr.forEach((item) => {
if (item.value == this.resiDetailObj.familyInfoDto.spouseSituation) {
text = item.label;
}
});
return text;
},
nationalityText() {
let text = "--";
this.nationalityList.forEach((item) => {
if (item.value == this.resiDetailObj.baseInfoDto.nationality) {
text = item.label;
}
});
return text;
},
idTypeText() {
let text = "--";
this.idTypeList.forEach((item) => {
if (item.value == this.resiDetailObj.baseInfoDto.idType) {
text = item.label;
}
});
return text;
},
careerStatusText() {
let text = "--";
this.careerStatusArr.forEach((item) => {
if (item.value == this.resiDetailObj.workInfoDto.careerStatus) {
text = item.label;
}
});
return text;
}
},
watch: {
'$store.state.huaXiang.userInfo.resiId': {
handler(newValue, oldValue) {
this.resiId = newValue;
this.resiDetailObj = {};
this.getNationalityList();
this.getResiDetail();
this.getMarriage()
this.getSpouse()
this.getCareerStatus()
this.getChangeRecordDetailById()
this.getHouseholdSituation()
this.gethouseHolderRel()
this.loading = false;
},
deep: true, // 开启深度监听
immediate: true // 立即触发一次handler
}
}
}
</script>
<style lang="scss" scoped>
@import "@/assets/scss/pages/resiInfo.scss";
@import "@/assets/scss/modules/management/list-main.scss";
</style>