Files
dvcp_v2_webapp/packages/jianping/AppHelpedResident/hrDetail.vue
2022-04-27 09:48:09 +08:00

1122 lines
42 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<section class="hrDetail">
<ai-detail>
<ai-title
slot="title"
title="监测对象详情"
isShowBottomBorder
isShowBack
@onBackClick="back"
>
<template #rightBtn>
<el-button type="primary" icon="iconfont iconEdit" @click="gotoEdit" v-if="$permissions('app_apppreventionreturntopoverty_edit')">编辑</el-button>
<template v-if="isGridAdmin">
<el-button type="primary" @click="applyMonitor('纳入监测', 1)" v-if="detail.status == 0 && girdAdminApplyStatus != 1">纳入监测</el-button>
<el-button type="primary" @click="examine('纳入监测审批', 2)" v-if="detail.status == 0 && girdAdminApplyStatus == 1">纳入监测审批</el-button>
<el-button type="primary" @click="applyMonitor('解除风险', 4)" v-if="detail.status == 1">解除风险</el-button>
<el-button type="primary" @click="examine('解除风险审批', 5)" v-if="detail.status == 2">解除风险审批</el-button>
<el-button type="primary" @click="applyMonitor('纳入监测', 1)" v-if="detail.status == 3">纳入监测</el-button>
<el-button icon="iconfont iconDelete" @click="handleDelete(detail.id)">删除</el-button>
</template>
<template v-else>
<el-button type="primary" @click="applyMonitor('申请纳入监测', 0)" v-if="detail.status == 3">申请纳入监测</el-button>
<el-button type="primary" @click="applyMonitor('申请解除风险', 3)" v-if="detail.status == 1">申请解除风险</el-button>
</template>
<!-- <template v-if="/2/.test(detail.status) && isGridAdmin">
<el-button type="primary" @click="applyMonitor('解除风险', 4)">解除风险</el-button>
<el-button type="primary" @click="handleRelieve(0)">继续监测</el-button>
</template>
<template v-if="/3/.test(detail.status) && isGridAdmin">
<el-button type="primary" @click="handleAccept(1)"
>纳入监测</el-button
>
<el-button
v-if="isGridAdmin"
icon="iconfont iconDelete"
@click="handleDelete(detail.id)"
>删除</el-button
>
</template>
<template v-if="/1/.test(detail.status)">
<el-button
type="primary"
@click="handleRelieve(1)"
v-if="isGridAdmin"
>解除风险</el-button
>
<el-button type="primary" @click="handleRelieve()" v-else
>申请解除风险</el-button
>
<el-button type="primary" icon="iconfont iconEdit" @click="gotoEdit"
>编辑</el-button
>
<el-button
v-if="isGridAdmin"
icon="iconfont iconDelete"
@click="handleDelete(detail.id)"
>删除</el-button
>
</template>
<template v-if="/5/.test(detail.status)">
<el-button
v-if="isGridAdmin"
type="primary"
@click="handleAccept(1)"
>纳入监测</el-button
>
<el-button v-else type="primary" @click="applyMonitor('申请纳入监测')"
>申请纳入监测</el-button
>
<el-button
v-if="isGridAdmin"
icon="iconfont iconDelete"
@click="handleDelete(detail.id)"
>删除</el-button
>
</template> -->
<el-button
v-if="$permissions('app_apppreventionreturntopoverty_del') && /4/g.test(detail.status)"
icon="iconfont iconDelete"
@click="handleDelete(detail.id)"
>
删除
</el-button>
</template>
</ai-title>
<template #content>
<el-form
:model="detail"
label-width="130px"
label-position="right"
size="small"
>
<el-tabs tabPosition="left" v-model="currentTab">
<el-tab-pane label="基本信息" lazy>
<ai-card :title="detail.name || '无名氏'">
<template #content>
<div flex class="flex-start">
<div flex class="half wrap fill">
<el-form-item label="身份证号" prop="name">{{
detail.idNumber
}}</el-form-item>
<el-form-item label="性别" prop="sex">{{
dict.getLabel("sex", detail.sex)
}}</el-form-item>
<el-form-item label="出生日期">{{
detail.birthDate
}}</el-form-item>
<el-form-item label="年龄" prop="age">{{
detail.age
}}</el-form-item>
<el-form-item label="文化程度">{{
dict.getLabel("fpEducation", detail.education)
}}</el-form-item>
<el-form-item label="民族">{{
dict.getLabel("fpNation", detail.nation)
}}</el-form-item>
<el-form-item label="政治面貌"
>{{
dict.getLabel(
"fpPoliticalOutlook",
detail.politicsStatus
)
}}
</el-form-item>
<el-form-item label="在校生状况"
>{{
dict.getLabel(
"fpStudentsInSchool",
detail.schoolStatus
)
}}
</el-form-item>
<!-- <el-form-item label="健康状况">{{ dict.getLabel('fpHealth', detail.healthyStatus) }}</el-form-item> -->
<el-form-item label="务工时间(月)" prop="idNumber">{{
detail.workeMonths
}}</el-form-item>
<el-form-item label="劳动技能"
>{{
dict.getLabel("fpLaborSkills", detail.labourStatus)
}}
</el-form-item>
<el-form-item label="务工区域" prop="idNumber">{{
detail.workArea
}}</el-form-item>
<el-form-item label="是否参加大病保险"
>{{
dict.getLabel(
"fpYesOrNo",
detail.seriousIllnessInsurance
)
}}
</el-form-item>
<el-form-item label="是否参加基本医保"
>{{
dict.getLabel(
"fpYesOrNo",
detail.basicMedicalTreatment
)
}}
</el-form-item>
<el-form-item label="享受最低生活保障"
>{{
dict.getLabel(
"fpYesOrNo",
detail.subsistenceAllowance
)
}}
</el-form-item>
<el-form-item label="是否参加养老保险"
>{{
dict.getLabel("fpYesOrNo", detail.endowmentInsurance)
}}
</el-form-item>
<el-form-item label="是否特困供养"
>{{
dict.getLabel(
"fpYesOrNo",
detail.specialPovertySupport
)
}}
</el-form-item>
</div>
<ai-avatar
:instance="instance"
v-model="detail.photo"
:editable="false"
/>
</div>
<el-form-item label="健康状况">
<span v-for="(item, index) in detail.healthyStatusList" :key="index"><span v-if="index > 0">,</span>{{dict.getLabel("fpHealth", item)}}</span>
</el-form-item>
</template>
</ai-card>
<ai-card title="联络信息">
<template slot="content">
<el-form-item label="联系方式" prop="phone">{{
detail.phone
}}</el-form-item>
<el-form-item label="现住址">{{
currentFullAddress
}}</el-form-item>
</template>
</ai-card>
<ai-card title="家庭情况">
<template slot="content">
<div flex class="half wrap">
<el-form-item label="档案状态">{{
dict.getLabel("fpPrtpStatus", detail.status)
}}</el-form-item>
<el-form-item label="监测对象类型">{{
dict.getLabel("fpType", detail.objectType)
}}</el-form-item>
<el-form-item label="是否危房">
{{
dict.getLabel("fpYesOrNo", detail.dilapidatedHousehold)
}}
</el-form-item>
<el-form-item label="是否饮用水安全">
{{
dict.getLabel("fpYesOrNo", detail.drinkingWaterSafety)
}}
</el-form-item>
<el-form-item label="是否搬迁">{{
dict.getLabel("fpYesOrNo", detail.move)
}}</el-form-item>
<el-form-item label="风险因素">{{
dict.getLabel("fpYesOrNo", detail.move)
}}</el-form-item>
<el-form-item label="风险消除方式">{{
dict.getLabel("fpYesOrNo", detail.move)
}}</el-form-item>
</div>
</template>
</ai-card>
<template>
<ai-card title="收入情况(单位:元)">
<template slot="content">
<div flex class="half wrap">
<el-form-item label="工资收入">{{
detail.income1
}}</el-form-item>
<el-form-item label="生产经营收入">{{
detail.income2
}}</el-form-item>
<el-form-item label="财产性收入">{{
detail.income3
}}</el-form-item>
<el-form-item label="转移性收入">{{
detail.income4
}}</el-form-item>
<el-form-item label="理赔收入">{{
detail.income5
}}</el-form-item>
<el-form-item label="生产经营支出">{{
detail.income6
}}</el-form-item>
<el-form-item label="合规自然支出">{{
detail.income7
}}</el-form-item>
<el-form-item label="家庭人均纯收入">{{
detail.income8
}}</el-form-item>
</div>
</template>
</ai-card>
<ai-card title="家庭成员">
<template #right>
<span
style="
color: #2266ff;
margin-left: 16px;
cursor: pointer;
font-size: 12px;
"
@click="addFamily({})"
>添加</span
>
</template>
<template #content>
<ai-table
:tableData="detail.family"
:colConfigs="colConfigs"
:dict="dict"
:isShowPagination="false"
>
<el-table-column
slot="options"
label="操作"
align="center"
width="200px"
>
<template slot-scope="{ row }">
<el-button type="text" @click="viewFamily(row)"
>详情</el-button
>
<el-button type="text" @click="addFamily(row)"
>编辑</el-button
>
<el-button type="text" @click="delFamily(row)"
>删除</el-button
>
</template>
</el-table-column>
</ai-table>
</template>
</ai-card>
</template>
</el-tab-pane>
<el-tab-pane label="走访日志" lazy name="HrLog" v-if="$permissions('app_apppreventionreturntopovertylog_detail')">
<hr-log
v-if="currentTab == 'HrLog'"
:instance="instance"
:dict="dict"
:permissions="permissions"
/>
</el-tab-pane>
<el-tab-pane label="帮扶措施" lazy name="HrMeasure">
<hr-measure
v-if="currentTab == 'HrMeasure'"
:instance="instance"
:dict="dict"
:permissions="permissions"
/>
</el-tab-pane>
</el-tabs>
</el-form>
<ai-dialog
:visible.sync="isShowAdd"
width="1000px"
height="500px"
title="添加家庭成员"
@close="onClose"
@onConfirm="onConfirm"
>
<el-form
:model="form"
ref="ruleForm"
:rules="rules"
label-width="130px"
label-position="right"
size="small"
>
<div flex class="half wrap">
<div flex class="column">
<el-form-item label="姓名" prop="name">
<el-input
size="small"
class="user-selecter"
v-model="form.name"
placeholder="请输入姓名"
clearable
:disabled="isEdit || isSelectUser"
>
<template slot="append">
<ai-person-select
:instance="instance"
@selectPerson="checkName"
:url="'/app/appresident/list?auditStatus=1&areaId='+user.info.areaId"
>
</ai-person-select>
</template>
</el-input>
</el-form-item>
<el-form-item label="身份证号" prop="idNumber">
<el-input
v-model="form.idNumber"
placeholder="请输入身份证号"
:maxlength="18"
:disabled="isEdit || isSelectUser"
@change="handleIdNumberAutocomplete"
/>
</el-form-item>
<el-form-item label="性别" prop="sex">
<ai-select
v-model="form.sex"
:selectList="dict.getDict('sex')"
disabled
/>
</el-form-item>
</div>
<el-form-item label="个人照片" prop="photo">
<ai-avatar :instance="instance" v-model="form.photo" />
</el-form-item>
<el-form-item label="出生日期" prop="birthDate">
<el-date-picker
disabled
value-format="yyyy-MM-dd HH:mm:ss"
format="yyyy-MM-dd"
v-model="form.birthDate"
type="date"
placeholder="选择日期"
/>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input
disabled
v-model="form.age"
placeholder="请输入年龄"
type="number"
/>
</el-form-item>
<el-form-item label="联系方式" prop="phone">
<el-input
v-model="form.phone"
placeholder="请输入联系方式"
:maxlength="11"
show-word-limit
/>
</el-form-item>
<el-form-item label="与户主关系" prop="householdRelation">
<ai-select
v-model="form.householdRelation"
:selectList="dict.getDict('fpRelationship')"
/>
</el-form-item>
<el-form-item label="文化程度" prop="education">
<ai-select
v-model="form.education"
:selectList="dict.getDict('fpEducation')"
/>
</el-form-item>
<el-form-item label="民族" prop="nation">
<ai-select
v-model="form.nation"
:selectList="dict.getDict('fpNation')"
/>
</el-form-item>
<el-form-item label="政治面貌" prop="politicsStatus">
<ai-select
v-model="form.politicsStatus"
:selectList="dict.getDict('fpPoliticalOutlook')"
/>
</el-form-item>
<el-form-item label="在校生状况" prop="schoolStatus">
<ai-select
v-model="form.schoolStatus"
:selectList="dict.getDict('fpStudentsInSchool')"
/>
</el-form-item>
<el-form-item label="务工时间(月)" prop="workeMonths">
<el-input
v-model="form.workeMonths"
placeholder="请输入"
clearable
/>
</el-form-item>
<el-form-item label="劳动技能" prop="labourStatus">
<ai-select
v-model="form.labourStatus"
:selectList="dict.getDict('fpLaborSkills')"
/>
</el-form-item>
<el-form-item label="务工区域" prop="workArea">
<el-input
v-model="form.workArea"
placeholder="请输入"
clearable
maxlength="30"
show-word-limit
/>
</el-form-item>
<el-form-item
label="是否参加大病保险"
prop="seriousIllnessInsurance"
>
<ai-select
v-model="form.seriousIllnessInsurance"
:selectList="dict.getDict('fpYesOrNo')"
/>
</el-form-item>
<el-form-item
label="是否参加基本医保"
prop="basicMedicalTreatment"
>
<ai-select
v-model="form.basicMedicalTreatment"
:selectList="dict.getDict('fpYesOrNo')"
/>
</el-form-item>
<el-form-item
label="享受最低生活保障"
prop="subsistenceAllowance"
>
<ai-select
v-model="form.subsistenceAllowance"
:selectList="dict.getDict('fpYesOrNo')"
/>
</el-form-item>
<el-form-item label="是否参加养老保险" prop="endowmentInsurance">
<ai-select
v-model="form.endowmentInsurance"
:selectList="dict.getDict('fpYesOrNo')"
/>
</el-form-item>
<el-form-item label="是否特困供养" prop="specialPovertySupport">
<ai-select
v-model="form.specialPovertySupport"
:selectList="dict.getDict('fpYesOrNo')"
/>
</el-form-item>
</div>
<el-form-item label="现住址" prop="currentAreaId">
<ai-area-get
:instance="instance"
v-model="form.currentAreaId"
:root="rootArea"
valueLevel="5"
/>
<el-form-item prop="currentAddress">
<el-input
v-model="form.currentAddress"
placeholder="详细地址"
maxlength="30"
show-word-limit
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item label="健康状况" prop="healthyStatusList">
<el-checkbox-group v-model="form.healthyStatusList">
<el-checkbox :label="item.dictValue" v-for="(item, index) in dict.getDict('fpHealth')" :key="index">{{item.dictName}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
</ai-dialog>
<ai-dialog customFooter
:visible.sync="isShowDetail"
width="1000px"
height="500px"
title="家庭成员详情"
>
<el-form
:model="detail"
label-width="130px"
label-position="right"
size="small"
>
<div flex class="flex-start">
<div flex class="half wrap fill">
<el-form-item label="身份证号" prop="name">{{
familyInfo.name
}}</el-form-item>
<el-form-item label="身份证号" prop="name"><ai-id mode="show" :value="familyInfo.idNumber" right-btn /></el-form-item>
<el-form-item label="性别" prop="sex">{{
dict.getLabel("sex", familyInfo.sex)
}}</el-form-item>
<el-form-item label="出生日期">{{
familyInfo.birthDate
}}</el-form-item>
<el-form-item label="年龄" prop="age">{{
familyInfo.age
}}</el-form-item>
<el-form-item label="联系方式">{{familyInfo.phone}}</el-form-item>
<el-form-item label="与户主关系">{{
dict.getLabel("fpRelationship", familyInfo.householdRelation)
}}</el-form-item>
<el-form-item label="文化程度">{{
dict.getLabel("fpEducation", familyInfo.education)
}}</el-form-item>
<el-form-item label="民族">{{
dict.getLabel("fpNation", familyInfo.nation)
}}</el-form-item>
<el-form-item label="政治面貌"
>{{
dict.getLabel("fpPoliticalOutlook", familyInfo.politicsStatus)
}}
</el-form-item>
<el-form-item label="在校生状况"
>{{ dict.getLabel("fpStudentsInSchool", familyInfo.schoolStatus) }}
</el-form-item>
<el-form-item label="务工时间(月)" prop="idNumber">{{
familyInfo.workeMonths
}}</el-form-item>
<el-form-item label="劳动技能"
>{{ dict.getLabel("fpLaborSkills", familyInfo.labourStatus) }}
</el-form-item>
<el-form-item label="务工区域" prop="idNumber">{{
familyInfo.workArea
}}</el-form-item>
<el-form-item label="是否参加大病保险"
>{{
dict.getLabel("fpYesOrNo", familyInfo.seriousIllnessInsurance)
}}
</el-form-item>
<el-form-item label="是否参加基本医保"
>{{ dict.getLabel("fpYesOrNo", familyInfo.basicMedicalTreatment) }}
</el-form-item>
<el-form-item label="享受最低生活保障"
>{{ dict.getLabel("fpYesOrNo", familyInfo.subsistenceAllowance) }}
</el-form-item>
<el-form-item label="是否参加养老保险"
>{{ dict.getLabel("fpYesOrNo", familyInfo.endowmentInsurance) }}
</el-form-item>
<el-form-item label="是否特困供养"
>{{ dict.getLabel("fpYesOrNo", familyInfo.specialPovertySupport) }}
</el-form-item>
</div>
<ai-avatar
:instance="instance"
v-model="familyInfo.photo"
:editable="false"
/>
</div>
<el-form-item label="现住址">{{
currentFullAddressFamily
}}</el-form-item>
<el-form-item label="健康状况">
<span v-for="(item, index) in familyInfo.healthyStatusList" :key="index"><span v-if="index > 0">,</span>{{dict.getLabel("fpHealth", item)}}</span>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="isShowDetail=false">关闭</el-button>
</template>
</ai-dialog>
<ai-dialog :visible.sync="isShowApply" :title="dialogTitle" @closed="applyInfo={},applyFileList=[]" @onConfirm="submitApply" width="600px">
<el-form :model="applyInfo" :rules="rulesApply" ref="dialogApplyInfo" size="small" label-width="120px">
<el-form-item label="风险因素" prop="riskType" v-if="changeStatus == 0 || changeStatus == 1">
<ai-select
v-model="applyInfo.riskType"
:selectList="dict.getDict('fpRiskType')"
/>
</el-form-item>
<el-form-item label="风险消除方式" prop="riskEliminationMethod" v-if="changeStatus == 3 || changeStatus == 4">
<ai-select
v-model="applyInfo.riskEliminationMethod"
:selectList="dict.getDict('fpRiskEliminationMethod')"
/>
</el-form-item>
<el-form-item label="备注说明">
<el-input type="textarea" v-model="applyInfo.opinion" placeholder="请输入" maxlength="500" show-word-limit rows="5"/>
</el-form-item>
<el-form-item label="图片">
<ai-uploader v-model="applyFileList" :instance="instance" acceptType=".jpg,.jpeg,.png">
<template #tips>
最多9张,仅支持10M以内的jpgjpegpng格式照片
</template>
</ai-uploader>
</el-form-item>
</el-form>
</ai-dialog>
<ai-dialog :visible.sync="isShowExamine" :title="dialogTitle" width="800px" customFooter>
<el-steps :active="examineStep" align-center>
<el-step title="申请信息"></el-step>
<el-step title="处理意见"></el-step>
<el-step title="完成"></el-step>
</el-steps>
<div class="info" v-if="examineStep == 1">
<ai-wrapper label-width="120px" :columnsNumber="2" style="margin-top: 16px;">
<ai-info-item label="操作类型" :value="changeStatus == 2 ? '申请纳入监测' : '申请解除风险' "/>
<ai-info-item label="风险因素" :value="dict.getLabel('fpRiskType', examineInfo.bizDictValue)" v-if="changeStatus == 2"/>
<ai-info-item label="风险消除方式" :value="dict.getLabel('fpRiskEliminationMethod', examineInfo.bizDictValue)" v-if="changeStatus == 5"/>
<ai-info-item label="申请人" :value="examineInfo.operationUserName"/>
<ai-info-item label="申请时间" :value="examineInfo.createTime"/>
</ai-wrapper>
<ai-wrapper label-width="120px" :columnsNumber="1">
<ai-info-item label="备注说明" :value="examineInfo.detail"/>
</ai-wrapper>
<ai-uploader v-model="examineInfo.files" disabled style="padding-left:150px;" />
</div>
<div class="form" v-if="examineStep == 2">
<el-form :model="examineFrom" size="small" label-width="80px">
<el-form-item label="审核结果" required>
<el-radio-group v-model="examineFrom.pass">
<el-radio :label="1" v-if="changeStatus == 5">解除风险</el-radio>
<el-radio :label="1" v-if="changeStatus == 2">纳入监测</el-radio>
<el-radio :label="0">驳回申请</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="备注说明">
<el-input type="textarea" v-model="examineFrom.opinion" placeholder="请输入" maxlength="500" show-word-limit rows="5"/>
</el-form-item>
<el-form-item label="图片">
<ai-uploader v-model="examineFileList" :instance="instance" acceptType=".jpg,.jpeg,.png">
<template #tips>
最多9张,仅支持10M以内的jpgjpegpng格式照片
</template>
</ai-uploader>
</el-form-item>
</el-form>
</div>
<div class="success" v-if="examineStep == 3">
<i class="el-icon-success"></i>
<p>审核成功</p>
</div>
<template slot="footer" v-if="examineStep != 3">
<el-button @click="cancelExamine">{{examineStep == 2 ? '上一步' : '取消'}}</el-button>
<el-button type="primary" @click="examineNext">下一步</el-button>
</template>
<template slot="footer" v-if="examineStep == 3">
<el-button @click="back">关闭</el-button>
</template>
</ai-dialog>
</template>
</ai-detail>
</section>
</template>
<script>
import { mapState } from "vuex";
import HrMeasure from "./detail/hrMeasure";
import HrLog from "./detail/hrLog";
export default {
name: "hrDetail",
components: { HrLog, HrMeasure },
props: {
instance: Function,
dict: Object,
permissions: Function,
},
computed: {
...mapState(["user"]),
colConfigs() {
return [
{
label: "与户主关系",
prop: "householdRelation",
dict: "fpRelationship",
},
{ label: "姓名", prop: "name" },
{ label: "性别", prop: "sex", dict: "sex" },
{ label: "年龄", prop: "age" },
{
label: "身份证号",
render: (h, { row }) =>
h("p", null, this.idCardNoUtil.hideId(row.idNumber)),
},
{ slot: "options" },
];
},
isGridAdmin() {
return this.user.info.girdCheckType == 2;
},
currentFullAddress() {
let { countyName, townName, villageName, currentAddress } = this.detail;
return [countyName, townName, villageName, currentAddress].join("");
},
currentFullAddressFamily() {
let { countyName, townName, villageName, currentAddress } = this.familyInfo;
return [countyName, townName, villageName, currentAddress].join("");
},
rules() {
return {
idNumber: [{ required: true, message: "请输入身份证号" }],
name: [{ required: true, message: "请输入姓名" }],
sex: [{ required: true, message: "请选择性别" }],
phone: [{ required: true, message: "请输入联系方式" }],
currentAreaId: [
{ required: true, message: "请选择现住址" },
{ pattern: /[^0]0{0,2}$/, message: "请选择到村/社区" },
],
isHousehold: [{ required: true, message: "请选择是否户主" }],
householdRelation: [{ required: true, message: "请选择与户主关系" }],
householdIdNumber: [{ required: true, message: "请选择户主身份证号" }],
};
},
rulesApply() {
return {
riskType: [{ required: true, message: "请选择风险因素" }],
riskEliminationMethod: [{ required: true, message: "请选择风险消除方式" }],
};
},
rootArea() {
return this.user.info?.areaId?.replace(/(\d{6})\d+/g, '$1' + Array(7).join("0")) || ""
}
},
data() {
return {
detail: {},
currentTab: "",
isShowAdd: false,
form: {healthyStatusList: []},
isEdit: false,
isShowDetail: false,
familyInfo: {},
isSelectUser: false,
isShowApply: false,
dialogTitle: '',
applyInfo: {},
isShowExamine: false,
examineInfo: {},
examineStep: 1, //审批步骤
examineFrom: {pass: 1},
applyFileList: [],
examineFileList: [],
changeStatus: 0, //操作状态 0:申请纳入监测 1:纳入监测 2:纳入监测审批 3:申请解除风险 4:解除风险 5:解除风险审批
girdAdminApplyStatus: 0, //网格长纳入监测状态 0纳入监测 1纳入监测审批
};
},
methods: {
checkName(e) {
if(!e) {
this.isSelectUser = false
this.form.name = ''
this.form.idNumber = ''
this.form.phone =''
this.form.areaId = ''
this.form.birthDate = ''
this.form.sex = ''
this.form.age = ''
this.form.currentAreaId = ''
this.form.currentAddress = ''
return
}
this.form.name = e.name
this.form.idNumber = e.idNumber
this.form.phone = e.phone
this.form.currentAreaId = e.currentAreaId
this.form.currentAddress = e.currentAddress
this.handleIdNumberAutocomplete(e.idNumber)
this.isSelectUser = true
},
addFamily(row) {
if(row && row.id) {
this.isEdit = true
}
row.healthyStatusList = []
if(row && row.healthyStatus) {
row.healthyStatusList = row.healthyStatus.split(',')
}
this.form = { ...row }
this.isShowAdd = true
},
viewFamily(row) {
row.healthyStatusList = []
if(row.healthyStatus) {
row.healthyStatusList = row.healthyStatus.split(',')
}
this.familyInfo = {...row}
this.isShowDetail = true
},
delFamily(row) {
if(row.isHousehold == 1) {
return this.$message.error('户主信息不允许删除');
}
this.$confirm("是否删除该家庭成员").then(() => {
this.instance.post(`/app/apppreventionreturntopoverty/delete?ids=${row.id}`).then(res => {
if (res.code == 0) {
this.getDetail()
this.$message.success('删除成功!');
}
})
})
},
handleIdNumberAutocomplete(v) {
let { birthday: birthDate, sex } = this.idCardNoUtil.getIdCardInfo(v);
this.form = { ...this.form, birthDate, sex, age: this.$calcAge(v) };
},
onConfirm() {
this.$refs.ruleForm.validate((v) => {
if (v) {
this.form.isHousehold = 0
this.form.householdIdNumber = this.detail.idNumber
if (this.form.healthyStatusList.length) {
this.form.healthyStatus = this.form.healthyStatusList.join(',')
}
this.instance.post(`/app/apppreventionreturntopoverty/addOrUpdate`, this.form).then(res => {
if (res.code == 0) {
this.getDetail()
this.$message.success('提交成功!');
this.isShowAdd = false
}
})
}
});
},
onClose() {
this.isShowAdd = false;
},
back() {
this.$router.push({});
},
getDetail() {
let { id } = this.$route.query;
id &&
this.instance
.post("/app/apppreventionreturntopoverty/queryDetailById", null, {
params: { id },
})
.then((res) => {
if (res?.data) {
this.detail = res.data;
this.detail.family?.map((e) => {
e.householdRelation = e.householdRelation || "户主";
});
if(this.detail.healthyStatus) {
this.detail.healthyStatusList = this.detail.healthyStatus.split(',')
}
if(this.detail.status == 0 && this.isGridAdmin) {
this.instance.post(`/app/apppreventionreturntopoverty/popup?id=${this.detail.id}`).then(res => {
if (res.code == 0 && res.data) { //纳入监测审批
this.girdAdminApplyStatus = 1
}
})
}
}
});
},
gotoEdit() {
let { query } = this.$route;
this.$router.push({ query, hash: "#add" });
},
applyMonitor(title, status) {
this.dialogTitle = title
this.changeStatus = status
this.isShowApply = true
},
submitApply() {
this.$refs.dialogApplyInfo.validate((v) => {
if (v) {
this.applyInfo.id = this.detail.id
if(this.changeStatus == 1 || this.changeStatus == 4) { //网格长直接纳入监测/解除风险
this.applyInfo.pass = 1
}
var url = ''
if(this.changeStatus == 0 || this.changeStatus == 1) { //纳入监测
url = `/app/apppreventionreturntopoverty/examine`
}
if(this.changeStatus == 3 || this.changeStatus == 4) { //解除风险
url = `/app/apppreventionreturntopoverty/relieve`
}
if(this.applyFileList.length) {
var ids = this.applyFileList.map((item) => {
return item.id
})
this.applyInfo.files = ids.join(',')
}
this.instance.post(url, null, {params: this.applyInfo}).then(res => {
if (res.code == 0) {
this.getDetail()
this.$message.success('提交成功!');
this.isShowApply = false
}
})
}
});
},
examine(title, status) {
this.dialogTitle = title
this.changeStatus = status
this.instance.post(`/app/apppreventionreturntopoverty/popup?id=${this.detail.id}`).then(res => {
if (res.code == 0) {
this.examineInfo = res.data
this.isShowExamine = true
}
})
},
examineNext() {
if(this.examineStep == 2) { //审批操作
if(this.examineFileList.length) {
var ids = this.examineFileList.map((item) => {
return item.id
})
this.examineFrom.files = ids.join(',')
}
this.examineFrom.id = this.detail.id
this.instance.post(`/app/apppreventionreturntopoverty/relieve`, null, {params: this.examineFrom}).then(res => {
if (res.code == 0) {
this.getDetail()
this.$message.success('提交成功!');
}
})
}
if(this.examineStep == 3) {
this.isShowExamine = false
this.examineFrom = {pass: 1}
return
}
this.examineStep ++
},
cancelExamine() {
if(this.examineStep == 2) {
return this.examineStep --
}
this.isShowExamine = false
},
handleDelete(ids) {
this.$confirm("是否要删除监测对象")
.then(() => {
this.instance
.post("/app/apppreventionreturntopoverty/delete", null, {
params: { ids: ids?.toString() },
})
.then((res) => {
if (res?.code == 0) {
this.$message.success("删除成功!");
this.back();
}
});
})
.catch(() => 0);
},
handleAccept(pass) {
let msg =
pass == 0
? "是否驳回纳入监测对象申请?"
: `是否${isNaN(pass) ? "(申请)" : ""}纳入监测对象?`,
{ id } = this.detail;
this.$confirm(msg)
.then(() => {
this.instance
.post("/app/apppreventionreturntopoverty/examine", null, {
params: { pass, id },
})
.then((res) => {
if (res?.code == 0) {
this.$message.success("审批提交成功!");
this.back();
}
});
})
.catch(() => 0);
},
handleRelieve(pass) {
let { id } = this.detail,
msg =
pass == 0
? `是否继续监测对象`
: `是否${isNaN(pass) ? "(申请)" : ""}解除监测对象`;
this.$confirm(msg)
.then(() => {
this.instance
.post("/app/apppreventionreturntopoverty/relieve", null, {
params: { pass, id },
})
.then((res) => {
if (res?.code == 0) {
this.$message.success("审批提交成功!");
this.back();
}
});
})
.catch(() => 0);
},
},
created() {
this.getDetail();
},
};
</script>
<style lang="scss" scoped>
.hrDetail {
height: 100%;
.flex-start {
align-items: flex-start;
.AiAvatar {
margin-left: 20px;
}
}
.half {
align-items: flex-start;
& > .el-form-item,
& > div {
width: 50%;
.el-form-item {
width: 100%;
}
}
}
.success {
text-align: center;
padding-top: 20px;
.el-icon-success{
color: rgb(46, 162, 34);
font-size: 100px;
}
p{
font-size: 16px;
padding-top: 20px;
color: #000;
}
}
::v-deep .ai-dialog__content--wrapper{
overflow-y: hidden!important;
}
::v-deep .AiPersonSelect .el-button {
color: #fff;
}
::v-deep.el-tabs__content {
max-height: calc(100vh - 136px);
overflow-y: auto;
}
::v-deep .el-step__icon{
border-color: #ccc!important;
}
::v-deep .el-step__line{
background-color: #ccc!important;
}
::v-deep .el-step__title, ::v-deep .is-wait{
color: #666!important;
}
::v-deep .is-finish{
color: #26f!important;
}
::v-deep .is-finish .el-step__icon{
border-color: #26f!important;
}
}
</style>