1106 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			1106 lines
		
	
	
		
			41 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <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">编辑</el-button>
 | |
|           <template v-if="isGridAdmin">
 | |
|             <el-button type="primary" @click="applyMonitor('纳入监测', 1)" v-if="detail.status === null">纳入监测</el-button>
 | |
|             <el-button type="primary" @click="examine('纳入监测审批', 2)" v-if="detail.status == 0">纳入监测审批</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 == 0">申请纳入监测</el-button>
 | |
|             <el-button type="primary" @click="applyMonitor('申请解除风险', 3)" v-if="detail.status == 2">申请解除风险</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="/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">
 | |
|               <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" /></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以内的jpg、jpeg、png格式照片
 | |
|                 </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:60px;" />
 | |
|           </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以内的jpg、jpeg、png格式照片
 | |
|                   </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">
 | |
|             <el-button @click="cancelExamine">{{examineStep == 2 ? '上一步' : '取消'}}</el-button>
 | |
|             <el-button type="primary" @click="examineNext">{{examineStep == 3 ? '确定' : '下一步'}}</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:解除风险审批
 | |
|     };
 | |
|   },
 | |
|   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(',')
 | |
|               }
 | |
|             }
 | |
|           });
 | |
|     },
 | |
|     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 .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, .is-wait{
 | |
|     color: #666!important;
 | |
|   }
 | |
|   ::v-deep .is-finish{
 | |
|     color: #26f!important;
 | |
|   }
 | |
|   ::v-deep .is-finish .el-step__icon{
 | |
|     border-color: #26f!important;
 | |
|   }
 | |
| }
 | |
| </style>
 |