目录代码整合
This commit is contained in:
		| @@ -1,70 +0,0 @@ | |||||||
| <template> |  | ||||||
|   <div class="AppMonitoringObject"> |  | ||||||
|     <keep-alive :include="['List']"> |  | ||||||
|       <component |  | ||||||
|         ref="component" |  | ||||||
|         :is="component" |  | ||||||
|         @change="onChange" |  | ||||||
|         :params="params" |  | ||||||
|         :instance="instance" |  | ||||||
|         :dict="dict" |  | ||||||
|       ></component> |  | ||||||
|     </keep-alive> |  | ||||||
|   </div> |  | ||||||
| </template> |  | ||||||
|  |  | ||||||
| <script> |  | ||||||
| import List from "./components/list"; |  | ||||||
| import Add from "./components/add"; |  | ||||||
| export default { |  | ||||||
|   name: "AppMonitoringObject", |  | ||||||
|   label: "监测对象", |  | ||||||
|  |  | ||||||
|   props: { |  | ||||||
|     instance: Function, |  | ||||||
|     dict: Object, |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   data() { |  | ||||||
|     return { |  | ||||||
|       component: "List", |  | ||||||
|       params: {}, |  | ||||||
|       include: [], |  | ||||||
|     }; |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   components: { |  | ||||||
|     List, Add  |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   mounted() {}, |  | ||||||
|  |  | ||||||
|   methods: { |  | ||||||
|     onChange(data) { |  | ||||||
|       if (data.type === "Add") { |  | ||||||
|         this.component = "Add"; |  | ||||||
|         this.params = data.params; |  | ||||||
|       } |  | ||||||
|  |  | ||||||
|       if (data.type === "List") { |  | ||||||
|         this.component = "List"; |  | ||||||
|         this.params = data.params; |  | ||||||
|  |  | ||||||
|         this.$nextTick(() => { |  | ||||||
|           if (data.isRefresh) { |  | ||||||
|             this.$refs.component.getTableData(); |  | ||||||
|           } |  | ||||||
|         }); |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <style lang="scss"> |  | ||||||
| .AppMonitoringObject { |  | ||||||
|   height: 100%; |  | ||||||
|   background: #f3f6f9; |  | ||||||
|   overflow: auto; |  | ||||||
| } |  | ||||||
| </style> |  | ||||||
| @@ -1,797 +0,0 @@ | |||||||
| <template> |  | ||||||
|   <section style="height: 100%"> |  | ||||||
|     <ai-detail class="add"> |  | ||||||
|       <template #title> |  | ||||||
|         <ai-title :title="params.id ? '监测对象详情' : '新增监测对象'" :isShowBack="true" :isShowBottomBorder="true" @onBackClick="cancel(false)"> |  | ||||||
|           <template slot="rightBtn" v-if="params.id && navIndex != 1"> |  | ||||||
|             <el-button size="small" icon="iconfont iconEdit" type="primary" v-if="!isEdit" @click="isEdit=true">编辑</el-button> |  | ||||||
|             <el-button size="small" icon="iconfont" type="primary" v-if="isEdit" @click="save">保存</el-button> |  | ||||||
|             <el-button size="small" icon="iconfont" v-if="isEdit" @click="getDetail(),isEdit=false">取消</el-button> |  | ||||||
|           </template> |  | ||||||
|         </ai-title> |  | ||||||
|       </template> |  | ||||||
|       <template #content> |  | ||||||
|         <el-form ref="rules" :model="forms" :rules="formRules" size="small" label-suffix=":" label-width="136px">    |  | ||||||
|           <div class="nav-list" v-if="params.id"> |  | ||||||
|             <div class="nav-item" :class="navIndex != 1 ? 'active' : ''" @click="navIndex=0">基本信息</div> |  | ||||||
|             <div class="nav-item" :class="navIndex == 1 ? 'active' : ''" @click="navIndex=1;getLogList()">帮扶日志</div> |  | ||||||
|           </div> |  | ||||||
|           <div v-if="navIndex != 1"> |  | ||||||
|             <ai-card title="基础信息"> |  | ||||||
|               <template slot="content"> |  | ||||||
|                 <div v-if="isEdit"> |  | ||||||
|                   <div class="above"> |  | ||||||
|                     <div class="left"> |  | ||||||
|                       <el-form-item label="监测对象类型" prop="type" > |  | ||||||
|                         <ai-select v-model="forms.type" placeholder="请选择" clearable :selectList="$dict.getDict('fpType')"></ai-select> |  | ||||||
|                       </el-form-item> |  | ||||||
|                       <el-form-item label="联系方式" prop="phone" > |  | ||||||
|                         <el-input v-model="forms.phone" placeholder="请输入" maxlength="20" show-word-limit></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                     </div> |  | ||||||
|                     <div class="right"> |  | ||||||
|                       <el-form-item label="是否搬迁" prop="move" > |  | ||||||
|                         <ai-select v-model="forms.move" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                       </el-form-item> |  | ||||||
|                     </div>              |  | ||||||
|                   </div> |  | ||||||
|                   <el-form-item label="所属区域" prop="addressAreaId"> |  | ||||||
|                     <ai-area-select |  | ||||||
|                       clearable |  | ||||||
|                       always-show |  | ||||||
|                       :instance="instance" |  | ||||||
|                       v-model="forms.addressAreaId" |  | ||||||
|                       @fullname="v=>forms.addressArea=v" |  | ||||||
|                       :disabled-level="user.info.areaList.length" |  | ||||||
|                     /> |  | ||||||
|                   </el-form-item> |  | ||||||
|                   <el-form-item label="家庭住址" prop="address"> |  | ||||||
|                     <el-input v-model="forms.address" placeholder="请输入" maxlength="50" show-word-limit></el-input> |  | ||||||
|                   </el-form-item> |  | ||||||
|                   <el-form-item label="安置地区" prop="placeAreaId" v-if="forms.move == '01'"> |  | ||||||
|                     <ai-area-select |  | ||||||
|                       clearable |  | ||||||
|                       always-show |  | ||||||
|                       :instance="instance" |  | ||||||
|                       v-model="forms.placeAreaId" |  | ||||||
|                       @fullname="v=>forms.placeArea=v" |  | ||||||
|                       :disabled-level="user.info.areaList.length" |  | ||||||
|                     /> |  | ||||||
|                   </el-form-item> |  | ||||||
|                   <el-form-item label="安置详细地址" prop="place" v-if="forms.move == '01'"> |  | ||||||
|                     <el-input v-model="forms.place" placeholder="请输入" maxlength="50" show-word-limit></el-input> |  | ||||||
|                   </el-form-item> |  | ||||||
|                 </div> |  | ||||||
|                 <template v-else> |  | ||||||
|                   <div class="above"> |  | ||||||
|                     <div class="left"> |  | ||||||
|                       <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                         <ai-info-item label="监测对象类型:"><span >{{dict.getLabel('fpType', forms.type)}}</span></ai-info-item> |  | ||||||
|                         <ai-info-item label="联系方式:"><span >{{forms.phone}}</span></ai-info-item> |  | ||||||
|                       </ai-wrapper> |  | ||||||
|                     </div> |  | ||||||
|                     <div class="right"> |  | ||||||
|                       <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                         <ai-info-item label="是否搬迁:"><span >{{dict.getLabel('fpYesOrNo', forms.move)}}</span></ai-info-item> |  | ||||||
|                       </ai-wrapper> |  | ||||||
|                     </div> |  | ||||||
|                   </div> |  | ||||||
|                   <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                     <ai-info-item label="所属区域:"><span >{{forms.addressArea}}</span></ai-info-item> |  | ||||||
|                     <ai-info-item label="家庭住址:"><span >{{forms.address}}</span></ai-info-item> |  | ||||||
|                     <ai-info-item label="安置地区:"  v-if="forms.move == '01'"><span >{{forms.placeArea}}</span></ai-info-item> |  | ||||||
|                     <ai-info-item label="安置详细地址:"  v-if="forms.move == '01'"><span >{{forms.place}}</span></ai-info-item> |  | ||||||
|                   </ai-wrapper> |  | ||||||
|                 </template> |  | ||||||
|               </template> |  | ||||||
|             </ai-card> |  | ||||||
|  |  | ||||||
|             <ai-card title="家庭成员"> |  | ||||||
|               <template slot="content"> |  | ||||||
|                 <ai-search-bar v-if="isEdit"> |  | ||||||
|                   <template #right><el-button type="primary" icon="iconfont iconAdd" @click="showAddFamily=true">添加</el-button></template> |  | ||||||
|                 </ai-search-bar> |  | ||||||
|                 <ai-table :tableData="forms.familyList" :colConfigs="colConfigs" :dict="dict" :isShowPagination="false"> |  | ||||||
|                   <el-table-column slot="age" label="年龄" align="center" width="200"> |  | ||||||
|                     <template v-slot="{ row }"> |  | ||||||
|                       <span>{{getAge(row.idNumber)}}</span> |  | ||||||
|                     </template> |  | ||||||
|                   </el-table-column> |  | ||||||
|                   <el-table-column slot="options" label="操作" align="center" fixed="right" width="200" v-if="isEdit"> |  | ||||||
|                     <template v-slot="{ row, $index }"> |  | ||||||
|                       <el-button type="text" @click="editFamily(row, $index)">编辑</el-button> |  | ||||||
|                       <el-button type="text" @click="delFamily(row, $index)">删除</el-button> |  | ||||||
|                     </template> |  | ||||||
|                   </el-table-column> |  | ||||||
|                 </ai-table> |  | ||||||
|               </template> |  | ||||||
|             </ai-card> |  | ||||||
|  |  | ||||||
|             <ai-card title="家庭情况"> |  | ||||||
|               <template slot="content"> |  | ||||||
|                 <div class="above" v-if="isEdit"> |  | ||||||
|                   <div class="left"> |  | ||||||
|                     <el-form-item label="是否危房" prop="dilapidatedHouse" > |  | ||||||
|                       <ai-select v-model="forms.dilapidatedHouse" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="风险类型" prop="riskType" > |  | ||||||
|                       <ai-select v-model="forms.riskType" placeholder="请选择" clearable :selectList="$dict.getDict('fpRiskType')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                   </div> |  | ||||||
|                   <div class="right"> |  | ||||||
|                     <el-form-item label="是否饮水安全" prop="waterSecurity" > |  | ||||||
|                       <ai-select v-model="forms.waterSecurity" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                   </div>              |  | ||||||
|                 </div> |  | ||||||
|                 <div class="above" v-else> |  | ||||||
|                   <div class="left"> |  | ||||||
|                     <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                       <ai-info-item label="是否危房:"><span >{{dict.getLabel('fpYesOrNo', forms.dilapidatedHouse)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="风险类型:"><span >{{dict.getLabel('fpRiskType', forms.riskType)}}</span></ai-info-item> |  | ||||||
|                     </ai-wrapper> |  | ||||||
|                   </div> |  | ||||||
|                   <div class="right"> |  | ||||||
|                     <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                       <ai-info-item label="是否饮水安全:"><span >{{dict.getLabel('fpYesOrNo', forms.waterSecurity)}}</span></ai-info-item> |  | ||||||
|                     </ai-wrapper> |  | ||||||
|                   </div> |  | ||||||
|                 </div> |  | ||||||
|               </template> |  | ||||||
|             </ai-card> |  | ||||||
|  |  | ||||||
|             <ai-card title="收入情况(单位:元)"> |  | ||||||
|               <template slot="content"> |  | ||||||
|                 <div v-if="isEdit"> |  | ||||||
|                   <div class="above"> |  | ||||||
|                     <div class="left"> |  | ||||||
|                       <el-form-item label="工资收入"> |  | ||||||
|                         <el-input v-model.number="forms.income1" placeholder="请输入" maxlength="10"></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                       <el-form-item label="财产性收入"> |  | ||||||
|                         <el-input v-model.number="forms.income3" placeholder="请输入" maxlength="10"></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                       <el-form-item label="理赔收入"> |  | ||||||
|                         <el-input v-model.number="forms.income8" placeholder="请输入" maxlength="10"></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                       <el-form-item label="合规自然支出"> |  | ||||||
|                         <el-input v-model.number="forms.income9" placeholder="请输入" maxlength="10"></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                     </div> |  | ||||||
|                     <div class="right"> |  | ||||||
|                       <el-form-item label="生存经营收入"> |  | ||||||
|                         <el-input v-model.number="forms.income2" placeholder="请输入" maxlength="10"></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                       <el-form-item label="转移性收入"> |  | ||||||
|                         <el-input v-model.number="forms.income4" placeholder="请输入" maxlength="10"></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                       <el-form-item label="生产经营支出"> |  | ||||||
|                         <el-input v-model.number="forms.income5" placeholder="请输入" maxlength="10"></el-input> |  | ||||||
|                       </el-form-item> |  | ||||||
|                     </div>           |  | ||||||
|                   </div> |  | ||||||
|                   <p style="font-size:14px;">备注:不填写时默认为0元</p>   |  | ||||||
|                 </div> |  | ||||||
|                 <div class="above" v-else> |  | ||||||
|                   <div class="left"> |  | ||||||
|                     <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                       <ai-info-item label="工资收入:"><span >{{forms.income1 || 0}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="财产性收入:"><span >{{forms.income3 || 0}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="理赔收入:"><span >{{forms.income8 || 0}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="合规自然支出:"><span >{{forms.income9 || 0}}</span></ai-info-item> |  | ||||||
|                     </ai-wrapper> |  | ||||||
|                   </div> |  | ||||||
|                   <div class="right"> |  | ||||||
|                     <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                       <ai-info-item label="生存经营收入:"><span >{{forms.income2 || 0}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="转移性收入:"><span >{{forms.income4 || 0}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="生产经营支出:"><span >{{forms.income5 || 0}}</span></ai-info-item> |  | ||||||
|                     </ai-wrapper> |  | ||||||
|                   </div> |  | ||||||
|                 </div> |  | ||||||
|               </template> |  | ||||||
|             </ai-card> |  | ||||||
|  |  | ||||||
|             <ai-card title="帮扶情况"> |  | ||||||
|               <template slot="content"> |  | ||||||
|                 <div class="above" v-if="isEdit"> |  | ||||||
|                   <div class="left"> |  | ||||||
|                     <el-form-item label="产业帮扶" prop="industrialAssistance" > |  | ||||||
|                       <ai-select v-model="forms.industrialAssistance" placeholder="请选择" clearable :selectList="$dict.getDict('fpIndustrialAssistance')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="就业帮扶" prop="employmentAssistance" > |  | ||||||
|                       <ai-select v-model="forms.employmentAssistance" placeholder="请选择" clearable :selectList="$dict.getDict('fpEmploymentAssistance')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="金融帮扶" prop="financialAssistance" > |  | ||||||
|                       <ai-select v-model="forms.financialAssistance" placeholder="请选择" clearable :selectList="$dict.getDict('fpFinancialAssistance')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="公益岗位帮扶" prop="publicWelfarePostAssistance" > |  | ||||||
|                       <ai-select v-model="forms.publicWelfarePostAssistance" placeholder="请选择" clearable :selectList="$dict.getDict('fpPublicWelfarePostAssistance')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="风险消除时间" prop="riskEliminationDate" v-if="forms.isRisk == 1"> |  | ||||||
|                       <el-date-picker |  | ||||||
|                         v-model="forms.riskEliminationDate" |  | ||||||
|                         type="date" |  | ||||||
|                         value-format="yyyy-MM-dd" |  | ||||||
|                         size="small" |  | ||||||
|                         placeholder="选择日期"> |  | ||||||
|                       </el-date-picker> |  | ||||||
|                     </el-form-item> |  | ||||||
|                   </div> |  | ||||||
|                   <div class="right"> |  | ||||||
|                      <el-form-item label="健康帮扶" prop="healthAssistance" > |  | ||||||
|                       <ai-select v-model="forms.healthAssistance" placeholder="请选择" clearable :selectList="$dict.getDict('fpHealthAssistance')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="教育帮扶" prop="educationalAssistance" > |  | ||||||
|                       <ai-select v-model="forms.educationalAssistance" placeholder="请选择" clearable :selectList="$dict.getDict('fpEducationalAssistance')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="社会帮扶" prop="socialAssistance" > |  | ||||||
|                       <ai-select v-model="forms.socialAssistance" placeholder="请选择" clearable :selectList="$dict.getDict('fpSocialAssistance')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="是否风险消除"> |  | ||||||
|                       <ai-select v-model="forms.isRisk" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                     <el-form-item label="风险消除方式" prop="riskEliminationMethod"  v-if="forms.isRisk == 1"> |  | ||||||
|                       <ai-select v-model="forms.riskEliminationMethod" placeholder="请选择" clearable :selectList="$dict.getDict('fpRiskEliminationMethod')"></ai-select> |  | ||||||
|                     </el-form-item> |  | ||||||
|                   </div>           |  | ||||||
|                 </div> |  | ||||||
|                 <div class="above" v-else> |  | ||||||
|                   <div class="left"> |  | ||||||
|                     <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                       <ai-info-item label="产业帮扶:"><span >{{dict.getLabel('fpIndustrialAssistance', forms.industrialAssistance)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="就业帮扶:"><span >{{dict.getLabel('fpEmploymentAssistance', forms.employmentAssistance)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="金融帮扶:"><span >{{dict.getLabel('fpFinancialAssistance', forms.financialAssistance)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="公益岗位帮扶:"><span >{{dict.getLabel('fpPublicWelfarePostAssistance', forms.publicWelfarePostAssistance)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="风险消除时间:" v-if="forms.isRisk == 1"><span >{{forms.riskEliminationDate}}</span></ai-info-item> |  | ||||||
|                     </ai-wrapper> |  | ||||||
|                   </div> |  | ||||||
|                   <div class="right"> |  | ||||||
|                     <ai-wrapper label-width="120px"  :columnsNumber="1"  style="margin-top: 16px;"> |  | ||||||
|                       <ai-info-item label="健康帮扶:"><span >{{dict.getLabel('fpHealthAssistance', forms.healthAssistance)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="教育帮扶:"><span >{{dict.getLabel('fpEducationalAssistance', forms.educationalAssistance)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="社会帮扶:"><span >{{dict.getLabel('fpSocialAssistance', forms.socialAssistance)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="是否风险消除:"><span >{{dict.getLabel('fpYesOrNo', forms.isRisk)}}</span></ai-info-item> |  | ||||||
|                       <ai-info-item label="风险消除方式:" v-if="forms.isRisk == 1"><span >{{dict.getLabel('fpRiskEliminationMethod', forms.riskEliminationMethod)}}</span></ai-info-item> |  | ||||||
|                     </ai-wrapper> |  | ||||||
|                   </div> |  | ||||||
|                 </div> |  | ||||||
|               </template> |  | ||||||
|             </ai-card> |  | ||||||
|           </div> |  | ||||||
|           <ai-card title="帮扶日志" v-if="navIndex == 1"> |  | ||||||
|             <template #right> |  | ||||||
|               <span class="edit-text" @click="showAddLog=true">新增日志</span> |  | ||||||
|             </template> |  | ||||||
|             <template slot="content"> |  | ||||||
|               <div class="log-list" v-if="logList.length"> |  | ||||||
|                 <div class="log-item" v-for="(item, index) in logList" :key="index"> |  | ||||||
|                   <img src="https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132" alt=""> |  | ||||||
|                   <div class="content"> |  | ||||||
|                     <div class="heade-info"> |  | ||||||
|                       <h2>{{item.createUserName}}</h2> |  | ||||||
|                       <p>{{item.createTime}}</p> |  | ||||||
|                     </div> |  | ||||||
|                     <p class="text">{{item.detail}}</p> |  | ||||||
|                     <div class="img-list"> |  | ||||||
|                       <ai-uploader :disabled="true"  :instance="instance"  v-model="item.file" :limit="9"></ai-uploader> |  | ||||||
|                     </div> |  | ||||||
|                     <div class="footer-btn"> |  | ||||||
|                       <span class="edit-text" @click="editLog(item)">编辑</span> |  | ||||||
|                       <span class="edit-text" @click="delLog(item)">删除</span> |  | ||||||
|                     </div> |  | ||||||
|                   </div> |  | ||||||
|                 </div> |  | ||||||
|               </div> |  | ||||||
|               <ai-empty v-else></ai-empty> |  | ||||||
|             </template> |  | ||||||
|           </ai-card> |  | ||||||
|         </el-form> |  | ||||||
|         <ai-dialog title="新增帮扶日志" :visible.sync="showAddLog" :customFooter="true"  :destroyOnClose="true"  border  width="900px"> |  | ||||||
|           <el-form ref="logrules" :model="logInfo" :rules="formRules" size="small" label-suffix=":" label-width="150px"> |  | ||||||
|             <el-form-item label="帮扶内容" prop="detail"> |  | ||||||
|               <el-input v-model="logInfo.detail" type="textarea" placeholder="请输入" maxlength="500" show-word-limit></el-input> |  | ||||||
|             </el-form-item> |  | ||||||
|             <el-form-item label="图片(最多9张)" > |  | ||||||
|               <ai-uploader |  | ||||||
|                 :isShowTip="true" |  | ||||||
|                 :instance="instance" |  | ||||||
|                 v-model="logInfo.file" |  | ||||||
|                 fileType="img" |  | ||||||
|                 acceptType=".png,.jpg,.jpeg" |  | ||||||
|                 :limit="9"> |  | ||||||
|                 <template slot="tips">最多上传9张图片,单张图片最大10MB<br/>支持.png,.jpg,.jpeg格式</template> |  | ||||||
|               </ai-uploader> |  | ||||||
|             </el-form-item> |  | ||||||
|           </el-form> |  | ||||||
|           <div class="dialog-footer" slot="footer" > |  | ||||||
|             <el-button size="medium" @click="showAddLog=false">取消</el-button> |  | ||||||
|             <el-button type="primary" size="medium" @click="addLog()">确认</el-button> |  | ||||||
|           </div> |  | ||||||
|         </ai-dialog> |  | ||||||
|         <ai-dialog title="新增家庭成员" :visible.sync="showAddFamily" :customFooter="true"  :destroyOnClose="true"  border  width="900px"> |  | ||||||
|           <el-form ref="addrules" :model="familyInfo" :rules="formRules" size="small" label-suffix=":" label-width="150px"> |  | ||||||
|             <div class="above"> |  | ||||||
|               <div class="left"> |  | ||||||
|                 <el-form-item label="与户主关系" prop="relationship" > |  | ||||||
|                   <ai-select v-model="familyInfo.relationship" placeholder="请选择" clearable :selectList="$dict.getDict('fpRelationship')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="性别" prop="sex" > |  | ||||||
|                   <ai-select v-model="familyInfo.sex" placeholder="请选择" clearable :selectList="$dict.getDict('sex')" disabled></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="政治面貌" prop="politicalOutlook" > |  | ||||||
|                   <ai-select v-model="familyInfo.politicalOutlook" placeholder="请选择" clearable :selectList="$dict.getDict('fpPoliticalOutlook')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="在校情况" prop="studentsInSchool" > |  | ||||||
|                   <ai-select v-model="familyInfo.studentsInSchool" placeholder="请选择" clearable :selectList="$dict.getDict('fpStudentsInSchool')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="劳动技能" prop="laborSkills" > |  | ||||||
|                   <ai-select v-model="familyInfo.laborSkills" placeholder="请选择" clearable :selectList="$dict.getDict('fpLaborSkills')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="务工时间" prop="workingMonths" > |  | ||||||
|                    <el-input v-model.number="familyInfo.workingMonths" placeholder="请输入(月数)" maxlength="30" show-word-limit></el-input> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="是否参加大病医保" prop="sicknessInsurance" > |  | ||||||
|                   <ai-select v-model="familyInfo.sicknessInsurance" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="享受最低生活保障" prop="subsistenceAllowance" > |  | ||||||
|                   <ai-select v-model="familyInfo.subsistenceAllowance" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|               </div> |  | ||||||
|               <div class="right"> |  | ||||||
|                 <el-form-item label="姓名" prop="name" > |  | ||||||
|                   <el-input v-model.number="familyInfo.name" placeholder="请输入" maxlength="11" show-word-limit></el-input> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="身份证号" prop="idNumber" > |  | ||||||
|                   <ai-id size="small" v-model="familyInfo.idNumber" @change="getSex(familyInfo.idNumber)"/> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="民族" prop="nation" > |  | ||||||
|                   <ai-select v-model="familyInfo.nation" placeholder="请选择" clearable :selectList="$dict.getDict('fpNation')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="文化程度" prop="education" > |  | ||||||
|                   <ai-select v-model="familyInfo.education" placeholder="请选择" clearable :selectList="$dict.getDict('fpEducation')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="健康状况" prop="health" > |  | ||||||
|                   <ai-select v-model="familyInfo.health" placeholder="请选择" clearable :selectList="$dict.getDict('fpHealth')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="务工区域" prop="workArea" > |  | ||||||
|                   <el-input v-model="familyInfo.workArea" placeholder="请输入" maxlength="30" show-word-limit></el-input> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="是否参加医保" prop="medicalInsurance" > |  | ||||||
|                   <ai-select v-model="familyInfo.medicalInsurance" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="是否参加养老保险" prop="endowmentInsurance" > |  | ||||||
|                   <ai-select v-model="familyInfo.endowmentInsurance" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|                 <el-form-item label="是否特困供养" prop="destitute" > |  | ||||||
|                   <ai-select v-model="familyInfo.destitute" placeholder="请选择" clearable :selectList="$dict.getDict('fpYesOrNo')"></ai-select> |  | ||||||
|                 </el-form-item> |  | ||||||
|               </div> |  | ||||||
|             </div> |  | ||||||
|           </el-form> |  | ||||||
|           <div class="dialog-footer" slot="footer" > |  | ||||||
|             <el-button  size="medium" @click="showAddFamily=false">取消</el-button> |  | ||||||
|             <el-button  type="primary" size="medium" @click="addFamily()">确认</el-button> |  | ||||||
|           </div> |  | ||||||
|         </ai-dialog> |  | ||||||
|       </template> |  | ||||||
|       <template #footer v-if="!params.id"> |  | ||||||
|         <el-button @click="cancel(false)" class="delete-btn footer-btn" >取 消</el-button> |  | ||||||
|         <el-button type="primary" @click="save()"  class="footer-btn">提 交</el-button> |  | ||||||
|       </template> |  | ||||||
|     </ai-detail> |  | ||||||
|   </section> |  | ||||||
| </template> |  | ||||||
|  |  | ||||||
| <script> |  | ||||||
| import {mapState} from "vuex"; |  | ||||||
| export default { |  | ||||||
|   name: "add", |  | ||||||
|   props: { |  | ||||||
|     instance: Function, |  | ||||||
|     dict: Object, |  | ||||||
|     permissions: Function, |  | ||||||
|     params: Object, |  | ||||||
|   }, |  | ||||||
|   data() { |  | ||||||
|     return { |  | ||||||
|       forms: { |  | ||||||
|         type: '', |  | ||||||
|         phone: '', |  | ||||||
|         move: '', |  | ||||||
|         addressAreaId: '', |  | ||||||
|         address: '', |  | ||||||
|         placeAreaId: '', |  | ||||||
|         dilapidatedHouse: '', |  | ||||||
|         riskType: '', |  | ||||||
|         waterSecurity: '', |  | ||||||
|         income1: '', |  | ||||||
|         income2: '', |  | ||||||
|         income3: '', |  | ||||||
|         income4: '', |  | ||||||
|         income5: '', |  | ||||||
|         income8: '', |  | ||||||
|         income9: '', |  | ||||||
|         isRisk: '', |  | ||||||
|         riskEliminationDate: '', |  | ||||||
|         riskEliminationMethod: '', |  | ||||||
|         industrialAssistance: '', |  | ||||||
|         employmentAssistance: '', |  | ||||||
|         financialAssistance: '', |  | ||||||
|         publicWelfarePostAssistance: '', |  | ||||||
|         healthAssistance: '', |  | ||||||
|         educationalAssistance: '', |  | ||||||
|         socialAssistance: '', |  | ||||||
|         familyList: [] |  | ||||||
|       }, |  | ||||||
|       navIndex: 0, |  | ||||||
|       showAddFamily: false, |  | ||||||
|       isEdit: false, |  | ||||||
|       familyInfo: { |  | ||||||
|         relationship: '', |  | ||||||
|         sex: '', |  | ||||||
|         politicalOutlook: '', |  | ||||||
|         studentsInSchool: '', |  | ||||||
|         laborSkills: '', |  | ||||||
|         workingMonths: '', |  | ||||||
|         sicknessInsurance: '', |  | ||||||
|         subsistenceAllowance: '', |  | ||||||
|         name: '', |  | ||||||
|         idNumber: '', |  | ||||||
|         nation: '', |  | ||||||
|         education: '', |  | ||||||
|         health: '', |  | ||||||
|         workArea: '', |  | ||||||
|         medicalInsurance: '', |  | ||||||
|         endowmentInsurance: '', |  | ||||||
|         destitute: '', |  | ||||||
|       }, |  | ||||||
|       editFamilyIndex: '', |  | ||||||
|       showAddLog: false, |  | ||||||
|       logList: [], |  | ||||||
|       logInfo: { |  | ||||||
|         detail: '', |  | ||||||
|         file: [], |  | ||||||
|         picture: '' |  | ||||||
|       } |  | ||||||
|     }; |  | ||||||
|   }, |  | ||||||
|   created() { |  | ||||||
|     this.dict.load('fpType', 'fpYesOrNo', 'fpRiskType', 'fpRiskEliminationMethod', 'fpIndustrialAssistance', 'fpEmploymentAssistance', 'fpFinancialAssistance', |  | ||||||
|     'fpPublicWelfarePostAssistance', 'fpHealthAssistance', 'fpEducationalAssistance', 'fpSocialAssistance', 'fpRelationship', 'sex', 'fpPoliticalOutlook',  |  | ||||||
|     'fpStudentsInSchool', 'fpLaborSkills', 'fpNation', 'fpEducation', 'fpHealth') |  | ||||||
|     if (this.params.id) { |  | ||||||
|       this.getDetail() |  | ||||||
|       this.isEdit = false |  | ||||||
|     } else { |  | ||||||
|       this.isEdit = true |  | ||||||
|       this.forms.addressAreaId = this.user.info.areaId |  | ||||||
|       this.forms.placeAreaId = this.user.info.areaId |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   computed: { |  | ||||||
|     formRules() { |  | ||||||
|       return { |  | ||||||
|         type: [{ required: true, message: "请选择监测对象类型", trigger: "change" }], |  | ||||||
|         move: [{ required: true, message: "请选择是否搬迁", trigger: "change" }], |  | ||||||
|         phone: [{ required: true, message: "请输入联系方式", trigger: "change" }], |  | ||||||
|         addressAreaId: [ |  | ||||||
|           {required: true, message: "请选择所属区域"}, |  | ||||||
|           {trigger:'blur',validator: (r, v, cb) => /0{3}$/g.test(v) ? cb('请选择到村/社区') : cb()} |  | ||||||
|         ], |  | ||||||
|         address: [{ required: true, message: "请输入家庭住址", trigger: "change" }], |  | ||||||
|         placeAreaId: [ |  | ||||||
|           {required: true, message: "请选择安置地区"}, |  | ||||||
|           {trigger:'blur',validator: (r, v, cb) => /0{3}$/g.test(v) ? cb('请选择到村/社区') : cb()} |  | ||||||
|         ], |  | ||||||
|         place: [{ required: true, message: "请输入安置详细住址", trigger: "change" }], |  | ||||||
|         riskEliminationMethod: [{ required: true, message: "请选择风险消除方式", trigger: "change" }], |  | ||||||
|         riskEliminationDate: [{ required: true, message: "请选择风险消除时间", trigger: "change" }], |  | ||||||
|  |  | ||||||
|         relationship: [{ required: true, message: "请选择与户主关系", trigger: "change" }], |  | ||||||
|         name: [{ required: true, message: "请输入姓名", trigger: "change" }], |  | ||||||
|         idNumber: [{ required: true, message: "请输入证件号码", trigger: "change" }], |  | ||||||
|         studentsInSchool: [{ required: true, message: "请选择在校情况", trigger: "change" }], |  | ||||||
|         health: [{ required: true, message: "请选择健康情况", trigger: "change" }],  |  | ||||||
|         sicknessInsurance: [{ required: true, message: "请选择是否大病医保", trigger: "change" }], |  | ||||||
|         subsistenceAllowance: [{ required: true, message: "请选择享受最低生活保障", trigger: "change" }], |  | ||||||
|         medicalInsurance: [{ required: true, message: "请选择是否参加医保", trigger: "change" }], |  | ||||||
|         endowmentInsurance: [{ required: true, message: "请选择是否参加养老保险", trigger: "change" }], |  | ||||||
|         destitute: [{ required: true, message: "请选择是否特困供养", trigger: "change" }], |  | ||||||
|         detail: [{ required: true, message: "请输入帮扶内容", trigger: "change" }], |  | ||||||
|       }; |  | ||||||
|     }, |  | ||||||
|     ...mapState(['user']), |  | ||||||
|     colConfigs() { |  | ||||||
|       return [ |  | ||||||
|         {label: "与户主关系", prop: "relationship", dict: 'fpRelationship', align: 'center'}, |  | ||||||
|         {label: "姓名", prop: "name", align: 'center'}, |  | ||||||
|         {label: "性别", prop: "sex", dict: 'sex', align: 'center'}, |  | ||||||
|         {slot: 'age'}, |  | ||||||
|         { |  | ||||||
|           label: "身份证号", width: "160px", align: 'center', |  | ||||||
|           render: (h, {row}) => h('span', null, this.idCardNoUtil.hideId(row.idNumber)) |  | ||||||
|         }, |  | ||||||
|         {slot: "options"}, |  | ||||||
|       ] |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   methods: { |  | ||||||
|     save() { |  | ||||||
|       this.$refs["rules"].validate((valid) => { |  | ||||||
|         if (valid) { |  | ||||||
|           this.confirmSave() |  | ||||||
|         } else { |  | ||||||
|           return false; |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     confirmSave() { |  | ||||||
|       var isHolder = false  //家庭成员必须有户主 |  | ||||||
|       if(this.forms.familyList.length) { |  | ||||||
|         this.forms.familyList.map((item) => { |  | ||||||
|           if(item.relationship == '01') { |  | ||||||
|             isHolder = true |  | ||||||
|           } |  | ||||||
|         }) |  | ||||||
|       } |  | ||||||
|       if(!isHolder) { |  | ||||||
|         return this.$message.error('家庭成员必须添加户主信息'); |  | ||||||
|       } |  | ||||||
|       if(this.forms.isRisk == '01') { |  | ||||||
|         this.forms.status = 1 |  | ||||||
|       } |  | ||||||
|       this.instance .post( `/app/apppreventionreturntopoverty/addOrUpdate`, { ...this.forms}).then((res) => { |  | ||||||
|         if (res.code == 0) { |  | ||||||
|           if (!this.params.id) { |  | ||||||
|             this.cancel(true) |  | ||||||
|           } else { |  | ||||||
|             this.isEdit = false |  | ||||||
|             this.getDetail() |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     getDetail() { |  | ||||||
|       this.instance.post(`/app/apppreventionreturntopoverty/queryDetailById?id=${this.params.id}`).then((res) => { |  | ||||||
|         if (res.code == 0) { |  | ||||||
|           this.forms = { ...this.forms, ...res.data } |  | ||||||
|           if(this.forms.riskEliminationDate) { |  | ||||||
|             this.forms.isRisk = '01' |  | ||||||
|           }else { |  | ||||||
|             this.forms.isRisk = '02' |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     addFamily() { |  | ||||||
|       this.$refs["addrules"].validate((valid) => { |  | ||||||
|         if (valid) { |  | ||||||
|           if(this.editFamilyIndex === '') { |  | ||||||
|             this.forms.familyList.push(this.familyInfo) |  | ||||||
|           }else { |  | ||||||
|             this.$set(this.forms.familyList, this.editFamilyIndex, this.familyInfo) |  | ||||||
|           } |  | ||||||
|  |  | ||||||
|           if(this.forms.isRisk == '02') { |  | ||||||
|             this.forms.riskEliminationDate = '' |  | ||||||
|             this.forms.riskEliminationMethod = '' |  | ||||||
|           } |  | ||||||
|            |  | ||||||
|           this.showAddFamily = false |  | ||||||
|           this.editFamilyIndex = '' |  | ||||||
|           this.familyInfo = Object.assign({},this.$options.data().familyInfo); |  | ||||||
|         } else { |  | ||||||
|           return false; |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     editFamily(item, index) { |  | ||||||
|       this.showAddFamily = true |  | ||||||
|       this.editFamilyIndex = index |  | ||||||
|       this.familyInfo = {...item} |  | ||||||
|     }, |  | ||||||
|     delFamily(item, index) { |  | ||||||
|       this.$confirm("是否要删除该家庭成员", { |  | ||||||
|         type: 'error' |  | ||||||
|       }).then(() => { |  | ||||||
|           this.$message({message: '家庭成员删除成功', type: 'success'}); |  | ||||||
|           this.forms.familyList.splice(index, 1) |  | ||||||
|       }).catch(() => 0) |  | ||||||
|     }, |  | ||||||
|     getAge(UUserCard) { |  | ||||||
|       const myDate = new Date(); |  | ||||||
|       const month = myDate.getMonth() + 1; |  | ||||||
|       const day = myDate.getDate(); |  | ||||||
|       let age = myDate.getFullYear() - UUserCard.substring(6, 10) - 1; |  | ||||||
|       if ( UUserCard.substring(10, 12) < month ||  (UUserCard.substring(10, 12) == month &&  UUserCard.substring(12, 14) <= day)) { |  | ||||||
|         age++; |  | ||||||
|       } |  | ||||||
|       return age |  | ||||||
|     }, |  | ||||||
|     getSex(UUserCard) { |  | ||||||
|       if (UUserCard) { |  | ||||||
|         if (parseInt(UUserCard.substr(16, 1)) % 2 == 1) { |  | ||||||
|           this.familyInfo.sex = '1' |  | ||||||
|         } else { |  | ||||||
|           this.familyInfo.sex = '0' |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     cancel (isRefresh) { |  | ||||||
|       this.$emit('change', { |  | ||||||
|         type: 'List', |  | ||||||
|         isRefresh: isRefresh ? true : false, |  | ||||||
|       }) |  | ||||||
|     }, |  | ||||||
|     getLogList() { |  | ||||||
|       this.instance.post(`/app/apppreventionreturntopovertylog/list?pid=${this.params.id}`).then((res) => { |  | ||||||
|         if (res.code == 0) { |  | ||||||
|           res.data.records.map((item) => { |  | ||||||
|             item.file = JSON.parse(item.picture) |  | ||||||
|           }) |  | ||||||
|           this.logList = res.data.records |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     addLog() { |  | ||||||
|       this.$refs["logrules"].validate((valid) => { |  | ||||||
|         if (valid) { |  | ||||||
|           this.logInfo.picture = JSON.stringify(this.logInfo.file) |  | ||||||
|           this.logInfo.pid = this.params.id |  | ||||||
|           this.logInfo.createUserName = this.user.info.name |  | ||||||
|           this.instance .post( `/app/apppreventionreturntopovertylog/addOrUpdate`, { ...this.logInfo}).then((res) => { |  | ||||||
|             if (res.code == 0) { |  | ||||||
|               this.$message({message: this.logInfo.id ? '编辑帮扶日志成功' : '新增帮扶日志成功', type: 'success'}); |  | ||||||
|               this.getLogList() |  | ||||||
|               this.logInfo = Object.assign({},this.$options.data().logInfo) |  | ||||||
|               this.showAddLog = false |  | ||||||
|             } |  | ||||||
|           }); |  | ||||||
|         } else { |  | ||||||
|           return false; |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     delLog(row) { |  | ||||||
|       this.$confirm("是否要删除该帮扶日志", { |  | ||||||
|         type: 'error' |  | ||||||
|       }).then(() => { |  | ||||||
|         this.instance.post(`/app/apppreventionreturntopovertylog/delete?ids=${row.id}`).then((res) => { |  | ||||||
|           if (res.code == 0) { |  | ||||||
|             this.$message({message: '帮扶日志删除成功', type: 'success'}); |  | ||||||
|             this.getLogList() |  | ||||||
|           } |  | ||||||
|         }); |  | ||||||
|       }).catch(() => 0) |  | ||||||
|     }, |  | ||||||
|     editLog(row) { |  | ||||||
|       this.logInfo = {...row} |  | ||||||
|       this.logInfo.file = JSON.parse(row.picture) |  | ||||||
|       this.showAddLog = true |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
| }; |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <style lang="scss" scoped> |  | ||||||
| .add { |  | ||||||
|   height: 100%; |  | ||||||
|   .log-list{ |  | ||||||
|     .log-item{ |  | ||||||
|       display: flex; |  | ||||||
|       border-bottom: 1px solid #ddd; |  | ||||||
|       padding-top: 16px; |  | ||||||
|       img{ |  | ||||||
|         width: 48px; |  | ||||||
|         height: 48px; |  | ||||||
|         border-radius: 50%; |  | ||||||
|         margin-right: 16px; |  | ||||||
|       } |  | ||||||
|       .content{ |  | ||||||
|         width: calc(100% - 64px); |  | ||||||
|         color: #000; |  | ||||||
|         .heade-info{ |  | ||||||
|           display: flex; |  | ||||||
|           justify-content: space-between; |  | ||||||
|           height: 36px; |  | ||||||
|           line-height: 36px; |  | ||||||
|           h2{ |  | ||||||
|             font-size: 16px; |  | ||||||
|             font-weight: 400; |  | ||||||
|           } |  | ||||||
|           p{ |  | ||||||
|             font-size: 14px; |  | ||||||
|             color: #333; |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|         .text{ |  | ||||||
|           font-size: 14px; |  | ||||||
|           word-break: break-all; |  | ||||||
|           margin-bottom: 8px; |  | ||||||
|         } |  | ||||||
|         .img-list{ |  | ||||||
|           img{ |  | ||||||
|             width: 150px; |  | ||||||
|             height: 150px; |  | ||||||
|             margin: 0 16px 16px 0; |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|         .footer-btn{ |  | ||||||
|           width: 100%; |  | ||||||
|           text-align: right; |  | ||||||
|           padding-bottom: 16px; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     .log-item:nth-last-of-type(1) { |  | ||||||
|       border-bottom: 0; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   .ai-detail__title { |  | ||||||
|     background-color: #fff; |  | ||||||
|   } |  | ||||||
|   .ai-detail__content { |  | ||||||
|     .ai-detail__content--wrapper { |  | ||||||
|       .el-form { |  | ||||||
|         // background-color: #fff; |  | ||||||
|         // padding: 0 60px; |  | ||||||
|         .flex { |  | ||||||
|           display: flex; |  | ||||||
|           flex-wrap: wrap; |  | ||||||
|           justify-content: space-between; |  | ||||||
|           .el-form-item { |  | ||||||
|             width: 48%; |  | ||||||
|           } |  | ||||||
|           .buildingTypes { |  | ||||||
|             width: 100%; |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   ::v-deep .el-tag { |  | ||||||
|     margin-right: 8px; |  | ||||||
|     color: #333333; |  | ||||||
|   } |  | ||||||
|   .footer-btn { |  | ||||||
|     width: 92px; |  | ||||||
|   } |  | ||||||
|   .above{ |  | ||||||
|     display: flex; |  | ||||||
|     .left, .right{ |  | ||||||
|       flex: 1; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   .nav-list{ |  | ||||||
|     position: absolute; |  | ||||||
|     top: 100px; |  | ||||||
|     left: -152px; |  | ||||||
|     .nav-item{ |  | ||||||
|       width: 120px; |  | ||||||
|       height: 50px; |  | ||||||
|       text-align: center; |  | ||||||
|       line-height: 50px; |  | ||||||
|       background-color: #fff; |  | ||||||
|       cursor: pointer; |  | ||||||
|       font-size: 16px; |  | ||||||
|       color: #666; |  | ||||||
|     } |  | ||||||
|     .active{ |  | ||||||
|       font-weight: 700; |  | ||||||
|       color: #26f; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   ::v-deep .el-date-editor.el-input, .el-date-editor.el-input__inner{ |  | ||||||
|     width: 100%; |  | ||||||
|   } |  | ||||||
|   .edit-text{ |  | ||||||
|     color:#2266FF; |  | ||||||
|     margin-left: 16px; |  | ||||||
|     cursor: pointer; |  | ||||||
|     font-size: 12px; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| </style> |  | ||||||
| @@ -1,296 +0,0 @@ | |||||||
| <template> |  | ||||||
|   <section class="list"> |  | ||||||
|     <ai-list> |  | ||||||
|       <ai-title slot="title" title="监测对象" isShowBottomBorder isShowArea v-if="areaId" v-model="areaId" :instance="instance" @change="page.current=1,getTableData()"> |  | ||||||
|         <template #rightBtn> |  | ||||||
|           <el-button size="small" icon="iconfont iconSetting" type="primary" @click="showSet = true">预警规则</el-button> |  | ||||||
|         </template> |  | ||||||
|       </ai-title> |  | ||||||
|       <template #blank> |  | ||||||
|         <div class="statistics-top"> |  | ||||||
|           <div class="statistics-top__item" v-for="(item, index) in dataPanes" :key="index"> |  | ||||||
|             <span>{{ item.label }}</span> |  | ||||||
|             <h2 style="color: #2266FF;">{{ item.v }}</h2> |  | ||||||
|           </div> |  | ||||||
|         </div> |  | ||||||
|         <div class="mainPane"> |  | ||||||
|           <ai-search-bar> |  | ||||||
|             <template #left> |  | ||||||
|               <ai-select v-model="status" placeholder="请选择" clearable :selectList="$dict.getDict('fpStatus')" @change="page.current=1,getTableData()"></ai-select> |  | ||||||
|             </template> |  | ||||||
|             <template #right> |  | ||||||
|               <el-input placeholder="姓名/身份证/户主联系方式"  v-model="search.name" size="small" @clear="page.current = 1,search.name = '', getTableData()"  clearable v-throttle="() => {page.current = 1, getTableData()}" suffix-icon="iconfont iconSearch"/> |  | ||||||
|             </template> |  | ||||||
|           </ai-search-bar> |  | ||||||
|           <ai-search-bar> |  | ||||||
|             <template #left> |  | ||||||
|               <el-button type="primary" icon="iconfont iconAdd" @click="toAdd('')">添加</el-button> |  | ||||||
|               <el-button icon="iconfont iconDelete" :disabled="!ids.length" @click="handleDelete(ids)">删除</el-button> |  | ||||||
|             </template> |  | ||||||
|           </ai-search-bar> |  | ||||||
|           <ai-table :tableData="tableData" :colConfigs="colConfigs" :total="page.total" :current.sync="page.current" |  | ||||||
|             :size.sync="page.size" @getList="getTableData" :dict="dict" @selection-change="v=>ids=v.map(e=>e.id)"> |  | ||||||
|             <el-table-column slot="options" label="操作" align="center" fixed="right" width="120"> |  | ||||||
|               <template slot-scope="{ row }"> |  | ||||||
|                 <div class="table-options"> |  | ||||||
|                   <el-button type="text" @click="toAdd(row.id)">详情</el-button> |  | ||||||
|                   <el-button type="text" @click="handleDelete(row.id)">删除</el-button> |  | ||||||
|                 </div> |  | ||||||
|               </template> |  | ||||||
|             </el-table-column> |  | ||||||
|             <el-table-column slot="options" label="状态" align="center"> |  | ||||||
|               <template v-slot="{ row }"> |  | ||||||
|                 <span :class="{'status1': row.status == 1, 'status0': row.status == 2}">{{dict.getLabel('fpStatus', row.status)}}</span> |  | ||||||
|               </template> |  | ||||||
|             </el-table-column> |  | ||||||
|           </ai-table> |  | ||||||
|         </div> |  | ||||||
|         <ai-dialog title="预警规则设置" :visible.sync="showSet" :customFooter="true"  :destroyOnClose="true"  border  width="900px"> |  | ||||||
|           <el-form ref="rules" :model="setInfo" :rules="formRules" size="small" label-suffix=":" label-width="200px"> |  | ||||||
|             <el-form-item label="家庭纯收入标准" prop="type0"> |  | ||||||
|               <el-input v-model.number="setInfo.type0" placeholder="请输入" maxlength="8" show-word-limit></el-input> |  | ||||||
|             </el-form-item> |  | ||||||
|             <el-form-item label="家庭人均纯收入标准" prop="type1"> |  | ||||||
|               <el-input v-model.number="setInfo.type1" placeholder="请输入" maxlength="8" show-word-limit></el-input> |  | ||||||
|             </el-form-item> |  | ||||||
|           </el-form> |  | ||||||
|           <div class="dialog-footer" slot="footer" > |  | ||||||
|             <el-button size="medium" @click="showSet=false">取消</el-button> |  | ||||||
|             <el-button type="primary" size="medium" @click="addSet()">确认</el-button> |  | ||||||
|           </div> |  | ||||||
|         </ai-dialog> |  | ||||||
|       </template> |  | ||||||
|     </ai-list> |  | ||||||
|   </section> |  | ||||||
| </template> |  | ||||||
|  |  | ||||||
| <script> |  | ||||||
| import {mapState} from "vuex"; |  | ||||||
|  |  | ||||||
| export default { |  | ||||||
|   props: { |  | ||||||
|     instance: Function, |  | ||||||
|     dict: Object, |  | ||||||
|     permissions: Function, |  | ||||||
|   }, |  | ||||||
|   data() { |  | ||||||
|     return { |  | ||||||
|       areaId: "", |  | ||||||
|       page: {current: 1, size: 10, total: 0}, |  | ||||||
|       search: {inoculationType: "", name: ""}, |  | ||||||
|       ids: [], |  | ||||||
|       tableData: [], |  | ||||||
|       staData: {}, |  | ||||||
|       currIndex: 0, |  | ||||||
|       options: [{ value: '0', label: '无风险'},{ value: '2', label: '未解除'}, { value: '1',  label: '已解除'}], |  | ||||||
|       status: '', |  | ||||||
|       showSet: false, |  | ||||||
|       setInfo: { |  | ||||||
|         type0: '', |  | ||||||
|         type1: '' |  | ||||||
|       }, |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   computed: { |  | ||||||
|     ...mapState(['user']), |  | ||||||
|     showDetail() { |  | ||||||
|       return this.$route.hash == "#add" |  | ||||||
|     }, |  | ||||||
|     dataPanes() { |  | ||||||
|       return [ |  | ||||||
|         {label: "监测家庭户数", v: this.staData.jths || 0}, |  | ||||||
|         {label: "监测对象总人数", v: this.staData.zrs || 0}, |  | ||||||
|         {label: "解除风险人数", v: this.staData.fxxcrs || 0}, |  | ||||||
|         {label: "风险解除率", v: this.staData.jcl || 0}, |  | ||||||
|       ] |  | ||||||
|     }, |  | ||||||
|     colConfigs() { |  | ||||||
|       return [ |  | ||||||
|         {type: "selection", align: 'center'}, |  | ||||||
|         {label: "户主姓名", prop: "name", align: 'center'}, |  | ||||||
|         {label: "性别", prop: "sex", dict: 'sex', align: 'center'}, |  | ||||||
|         { |  | ||||||
|           label: "身份证号", width: "160px", align: 'center', |  | ||||||
|           render: (h, {row}) => h('span', null, this.idCardNoUtil.hideId(row.idNumber)) |  | ||||||
|         }, |  | ||||||
|         {label: "户主联系方式", prop: "phone", align: 'center'}, |  | ||||||
|         { |  | ||||||
|           label: "家庭住址", width: "160px", align: 'center', |  | ||||||
|           render: (h, {row}) => h('span', null, row.addressArea+row.address) |  | ||||||
|         }, |  | ||||||
|         {label: "风险类型", prop: "riskType", dict: 'fpRiskType', align: 'center'}, |  | ||||||
|         {label: "最后更新时间", prop: "createTime", align: 'center'}, |  | ||||||
|         {slot: "status"}, |  | ||||||
|         {label: "操作人", prop: "createUserName", align: 'center'}, |  | ||||||
|         {slot: "options"}, |  | ||||||
|       ] |  | ||||||
|     }, |  | ||||||
|     formRules() { |  | ||||||
|       return { |  | ||||||
|         type0: [{ required: true, message: "请输入家庭纯收入标准", trigger: "change" }], |  | ||||||
|         type1: [{ required: true, message: "请输入家庭人均纯收入标准", trigger: "change" }], |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   created() { |  | ||||||
|     this.areaId = JSON.parse(JSON.stringify(this.user.info.areaId)) |  | ||||||
|     this.dict.load('sex', 'fpRiskType', 'fpStatus').then(() => { |  | ||||||
|       this.getTableData() |  | ||||||
|       this.getSetInfo() |  | ||||||
|     }) |  | ||||||
|   }, |  | ||||||
|   methods: { |  | ||||||
|     getNum() { |  | ||||||
|       this.instance.post(`/app/apppreventionreturntopoverty/statistics-list`).then(res => { |  | ||||||
|         if (res?.data) { |  | ||||||
|           this.staData = res.data |  | ||||||
|           this.staData.jcl = !this.staData.jths ? '0%' : ((this.staData.fxxcrs / this.staData.jths) * 100).toFixed(2) + '%' |  | ||||||
|         } |  | ||||||
|       }) |  | ||||||
|     }, |  | ||||||
|     toAdd(id) { |  | ||||||
|       this.$emit('change', { |  | ||||||
|         type: 'Add', |  | ||||||
|         params: { |  | ||||||
|           id: id || '' |  | ||||||
|         } |  | ||||||
|       }) |  | ||||||
|     }, |  | ||||||
|     addSet() { |  | ||||||
|       this.$refs["rules"].validate((valid) => { |  | ||||||
|         if (valid) { |  | ||||||
|           this.instance.post(`/app/apppreventionreturntopovertyalarmconfig/addOrUpdate`, this.setInfo).then((res) => { |  | ||||||
|             if (res.code == 0) { |  | ||||||
|               this.$message({message: '预警规则设置成功', type: 'success'}); |  | ||||||
|               this.getSetInfo() |  | ||||||
|               this.showSet = false |  | ||||||
|             } |  | ||||||
|           }); |  | ||||||
|         } else { |  | ||||||
|           return false; |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     getSetInfo() { |  | ||||||
|       this.instance.post(`/app/apppreventionreturntopovertyalarmconfig/query`).then((res) => { |  | ||||||
|         if (res.code == 0) { |  | ||||||
|           this.setInfo = {...res.data} |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     getTableData() { |  | ||||||
|       this.instance.post(`/app/apppreventionreturntopoverty/list`, null, { |  | ||||||
|         params: {...this.search, ...this.page, addressAreaId: this.areaId, status: this.status} |  | ||||||
|       }).then(res => { |  | ||||||
|         if (res?.data) { |  | ||||||
|           this.tableData = res.data.records |  | ||||||
|           this.page.total = res.data.total |  | ||||||
|           this.tableData.map((item) => { |  | ||||||
|             item.createTime = item.createTime.substring(0, 10) |  | ||||||
|           }) |  | ||||||
|           this.getNum() |  | ||||||
|         } |  | ||||||
|       }) |  | ||||||
|     }, |  | ||||||
|     handleDelete(ids) { |  | ||||||
|       ids = ids?.toString() |  | ||||||
|       this.$confirm("确定要删除该条数据吗?").then(() => { |  | ||||||
|         this.instance.post(`/app/apppreventionreturntopoverty/delete`, null, { |  | ||||||
|           params: {ids} |  | ||||||
|         }).then(res => { |  | ||||||
|           if (res?.code == 0) { |  | ||||||
|             this.$message.success("删除成功!"); |  | ||||||
|             this.getTableData(); |  | ||||||
|           } |  | ||||||
|         }) |  | ||||||
|       }).catch(() => 0) |  | ||||||
|     }, |  | ||||||
|     resetSearch() { |  | ||||||
|       this.page.current = 1 |  | ||||||
|       this.search = {} |  | ||||||
|       this.getTableData() |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| </script> |  | ||||||
|  |  | ||||||
| <style lang="scss" scoped> |  | ||||||
| .list { |  | ||||||
|   height: 100%; |  | ||||||
|     .statistics-top { |  | ||||||
|       display: flex; |  | ||||||
|       align-items: center; |  | ||||||
|       margin-bottom: 20px; |  | ||||||
|  |  | ||||||
|       & > div { |  | ||||||
|         flex: 1; |  | ||||||
|         height: 96px; |  | ||||||
|         line-height: 1; |  | ||||||
|         margin-right: 20px; |  | ||||||
|         padding: 16px 24px; |  | ||||||
|         background: #FFFFFF; |  | ||||||
|         box-shadow: 0px 4px 6px -2px rgba(15, 15, 21, 0.15); |  | ||||||
|         border-radius: 4px; |  | ||||||
|  |  | ||||||
|         &:last-child { |  | ||||||
|           margin-right: 0; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         h3 { |  | ||||||
|           font-size: 24px; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         span { |  | ||||||
|           display: block; |  | ||||||
|           margin-bottom: 16px; |  | ||||||
|           color: #888888; |  | ||||||
|           font-size: 16px; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|   ::v-deep .dataPane { |  | ||||||
|     flex: 1; |  | ||||||
|     min-width: 0; |  | ||||||
|     background: #FFFFFF; |  | ||||||
|     box-shadow: 0 4px 6px -2px rgba(15, 15, 21, 0.15); |  | ||||||
|     border-radius: 2px; |  | ||||||
|     margin-bottom: 16px; |  | ||||||
|     margin-right: 16px; |  | ||||||
|     display: flex; |  | ||||||
|     align-items: center; |  | ||||||
|     justify-content: center; |  | ||||||
|     height: 60px; |  | ||||||
|  |  | ||||||
|     &:last-of-type { |  | ||||||
|       margin-right: 0; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|  |  | ||||||
|   ::v-deep .mainPane { |  | ||||||
|     background: #fff; |  | ||||||
|     padding: 12px 16px; |  | ||||||
|     .ai-table__header { |  | ||||||
|       padding: 2px 0; |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   .tab-text{ |  | ||||||
|     display: inline-block; |  | ||||||
|     font-size: 14px; |  | ||||||
|     width: 150px; |  | ||||||
|     height: 32px; |  | ||||||
|     line-height: 32px; |  | ||||||
|     color: #333; |  | ||||||
|     cursor: pointer; |  | ||||||
|   } |  | ||||||
|   .active-tab{ |  | ||||||
|     color: #26f; |  | ||||||
|   } |  | ||||||
|   .status0{ |  | ||||||
|     color: rgb(255, 136, 34); |  | ||||||
|   } |  | ||||||
|   .status1{ |  | ||||||
|     color: rgb(46, 162, 34); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| </style> |  | ||||||
| @@ -45,7 +45,7 @@ | |||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
| import {mapState} from 'vuex' | import {mapState} from 'vuex' | ||||||
| import LocateDialog from "../../../monitor/components/locateDialog"; | import LocateDialog from "../../monitor/components/locateDialog"; | ||||||
| 
 | 
 | ||||||
| export default { | export default { | ||||||
|   name: 'List', |   name: 'List', | ||||||
| @@ -36,7 +36,7 @@ | |||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
|   import { mapState } from 'vuex' |   import { mapState } from 'vuex' | ||||||
|   import Visit from './../app/visit/Visit' |   import Visit from '../app/visit/Visit' | ||||||
| 
 | 
 | ||||||
|   export default { |   export default { | ||||||
|     name: 'Detail', |     name: 'Detail', | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user