314 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			314 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | ||
|   <section class="detail">
 | ||
|     <ai-detail>
 | ||
|       <template #title>
 | ||
|         <ai-title title="帮扶申请详情" isShowBottomBorder isShowBack @onBackClick="cancel(true)">
 | ||
|           <template #rightBtn>
 | ||
|             <el-button type="primary" @click="changeStatus('转交事件')" size="small" v-if="$permissions('app_apphelpdeclarationinfo_forward') && form.status != 2 && form.status != 3">转交事件</el-button>
 | ||
|             <el-button type="primary" @click="changeStatus('审核处理')" size="small" v-if="$permissions('app_apphelpdeclarationinfo_audit') && form.status != 2 && form.status != 3"> 审核处理</el-button>
 | ||
|           </template>
 | ||
|         </ai-title>
 | ||
|         
 | ||
|       </template>
 | ||
|       <template #content>
 | ||
|         <div style="display:flex;">
 | ||
|           <ai-card title="申请信息" style="flex:2;margin-right:32px;">
 | ||
|             <template slot="content">
 | ||
|               <ai-wrapper class="mar-t16" label-width="100px" :columnsNumber="2">
 | ||
|                 <ai-info-item label="申请人姓名:"><span>{{form.name || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="身份证号:"><span>{{form.idNumber || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="联系方式:"><span>{{form.phone || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="申报方式:"><span>{{$dict.getLabel("helpDeclarationType", form.declareType) || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="家庭人口数:"><span>{{form.householdNumber || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="排查人员:"><span>{{form.createUserName || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="申请帮扶原因:"><span>{{form.reason || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="上报时间:"><span>{{form.declareTime || '-'}}</span></ai-info-item>
 | ||
|               </ai-wrapper>
 | ||
|               <ai-wrapper label-width="100px" :columnsNumber="1">
 | ||
|                 <ai-info-item label="所在地区:"><span>{{form.areaName}}{{form.address || ''}}</span></ai-info-item>
 | ||
|               </ai-wrapper>
 | ||
|               <ai-wrapper label-width="100px" :columnsNumber="1">
 | ||
|                 <ai-info-item label="风险说明:"><span>{{form.riskDescription || '-'}}</span></ai-info-item>
 | ||
|               </ai-wrapper>
 | ||
|               <ai-uploader :instance="instance" disabled v-model="form.files"></ai-uploader>
 | ||
|             </template>
 | ||
|           </ai-card>
 | ||
|           <ai-card title="办理进度" style="flex:1;">
 | ||
|             <template #right>
 | ||
|               <p style="color:#666;font-size:14px;">当前状态:<span :class="'color'+form.status">{{$dict.getLabel("helpDeclarationStatus", form.status) || '-'}}</span></p>
 | ||
|             </template>
 | ||
|             <template #content>
 | ||
|               <div class="ai-steps">
 | ||
|                 <div class="ai-steps__item" v-for="(item, index) in form.processList" :key="index">
 | ||
|                   <div class="ai-steps__item--left">
 | ||
|                     <div class="ai-steps__item--index">{{index+1}}</div>
 | ||
|                   </div>
 | ||
|                   <div class="ai-steps__item--right">
 | ||
|                     <div class="ai-steps__item__avatar">
 | ||
|                       <img :src="item.avatar" v-if="item.avatar">
 | ||
|                       <h2 v-else>{{ formatName(item.doUsername) }}</h2>
 | ||
|                     </div>
 | ||
|                     <div class="ai-steps__item--content">
 | ||
|                       <h2>{{item.doUsername}}</h2>
 | ||
|                       <h2>{{item.description}}</h2>
 | ||
|                       <p>{{ item.doTime }}</p>
 | ||
|                     </div>
 | ||
|                   </div>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </template>
 | ||
|           </ai-card>
 | ||
|         </div>
 | ||
|         <ai-dialog :title="dialogTitle" :visible.sync="showDialog" @onConfirm="statusConfirm()" @onCancel="showDialog=false;" @close="$refs.dialogInfo.resetFields()"  width="750px">
 | ||
|           <div class="addother_main" style="width:100%;">
 | ||
|             <el-form :model="dialogInfo" status-icon ref="dialogInfo" label-width="100px" class="demo-ruleForm">
 | ||
|               <el-form-item label="转交" prop="name" style="width: 100%;" autocomplete="off" :rules="[{ required: true, message: '请选择转交人员', trigger: 'blur' }]" v-if="dialogTitle == '转交事件'">
 | ||
|                 <el-input disabled size="small" v-model="dialogInfo.name" placeholder="请选择转交人员">
 | ||
|                   <template slot="append">
 | ||
|                     <ai-wechat-selecter :instance="instance" v-model="addUser" :isMultiple="false" @change="onChange" v-if="dialogTitle == '转交事件'">
 | ||
|                       <el-button size="small">选择</el-button>
 | ||
|                     </ai-wechat-selecter>
 | ||
|                   </template>
 | ||
|                 </el-input>
 | ||
|               </el-form-item>
 | ||
|               <el-form-item label="处理结果:" required v-else>
 | ||
|                 <el-radio-group v-model="dialogInfo.auditStatus">
 | ||
|                   <el-radio label="1">通过审核</el-radio>
 | ||
|                   <el-radio label="0">驳回申请</el-radio>
 | ||
|                 </el-radio-group>
 | ||
|               </el-form-item>
 | ||
|               <el-form-item label="办理意见:" prop="description" autocomplete="off" :rules="{ required: true, message: '办理意见不能为空', trigger: 'blur' }">
 | ||
|                 <el-input v-model="dialogInfo.description" autocomplete="off" size="mini" placeholder="请输入..." type="textarea" :rows="4" :maxlength="100" show-word-limit></el-input>
 | ||
|               </el-form-item>
 | ||
|               <el-form-item label="图片" style="width: 100%;" >
 | ||
|                 <ai-uploader
 | ||
|                     :instance="instance"
 | ||
|                     v-model="dialogInfo.files"
 | ||
|                     :limit="9">
 | ||
|                     <template slot="tips">
 | ||
|                       <p>最多上传9张图片,单个文件最大10MB,支持jpg、jpeg、png格式</p>
 | ||
|                     </template>
 | ||
|                 </ai-uploader>
 | ||
|               </el-form-item>
 | ||
|             </el-form>
 | ||
|           </div>
 | ||
|         </ai-dialog>
 | ||
|       </template>
 | ||
|     </ai-detail>
 | ||
|   </section>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| export default {
 | ||
|   name: "detail",
 | ||
|   props: {
 | ||
|     instance: Function,
 | ||
|     dict: Object,
 | ||
|     permissions: Function,
 | ||
|     params: Object
 | ||
|   },
 | ||
|   data() {
 | ||
|     return {
 | ||
|       form: {},
 | ||
|       showDialog: false,
 | ||
|       dialogTitle: '',
 | ||
|       dialogInfo: {auditStatus: '1', description: '', files: [], name: ''},
 | ||
|       addUser: [],
 | ||
|     };
 | ||
|   },
 | ||
|   computed: {
 | ||
|     
 | ||
|   },
 | ||
|   created() {
 | ||
|     this.dict.load('helpDeclarationType', 'helpDeclarationStatus', 'helpDeclarationReason');
 | ||
|   },
 | ||
|   mounted() {
 | ||
|     this.form = this.params
 | ||
|     this.getDetail()
 | ||
|   },
 | ||
|   methods: { 
 | ||
|     formatName (name) {
 | ||
|       if(name == undefined){
 | ||
|         return
 | ||
|       }
 | ||
|       return name.substr(name.length - 2, name.length > 2 ? (name.length - 1) : name.length)
 | ||
|     },
 | ||
|     getDetail() {
 | ||
|       this.instance.post(`/app/apphelpdeclarationinfo/queryDetailById?id=${this.params.id}`).then((res) => {
 | ||
|         if (res.code == 0) {
 | ||
|           this.form = {...res.data}
 | ||
|           this.form.files = this.form.files || []
 | ||
|         }
 | ||
|       });
 | ||
|     },
 | ||
|     cancel(isRefresh) {
 | ||
|       this.$emit('change', {
 | ||
|         type: 'list',
 | ||
|         isRefresh: !!isRefresh
 | ||
|       })
 | ||
|     },
 | ||
|     changeStatus(title) {
 | ||
|       this.dialogTitle = title
 | ||
|       this.showDialog = true
 | ||
|     },
 | ||
|     onChange() {
 | ||
|       if (!this.addUser.length) {
 | ||
|         return this.$message.error('请选择转交人员')
 | ||
|       }
 | ||
|       this.dialogInfo.name = this.addUser[0].name
 | ||
|       this.dialogInfo.wxUserId = this.addUser[0].id
 | ||
|     },
 | ||
|     statusConfirm() {
 | ||
|       this.$refs["dialogInfo"].validate((valid) => {
 | ||
|         if (valid) {
 | ||
|           var url = '/app/apphelpdeclarationinfo/forward'  //转交人员
 | ||
|           if(this.dialogTitle == '审核处理') {
 | ||
|             url = '/app/apphelpdeclarationinfo/audit'
 | ||
|           }
 | ||
|           this.dialogInfo.declarationId = this.form.id
 | ||
|           this.instance.post(url, {
 | ||
|             ...this.dialogInfo,
 | ||
|           }).then(res => {
 | ||
|             if (res.code == 0) {
 | ||
|               this.showDialog = false
 | ||
|               this.$message.success("操作成功")
 | ||
|               this.getDetail()
 | ||
|             }
 | ||
|           });
 | ||
|         }
 | ||
|       })
 | ||
|     }
 | ||
|   },
 | ||
| };
 | ||
| </script>
 | ||
| 
 | ||
| <style lang="scss" scoped>
 | ||
| .detail {
 | ||
|   height: 100%;
 | ||
|   overflow: auto;
 | ||
|   background: #f3f6f9;
 | ||
|   .above{
 | ||
|     overflow: hidden;
 | ||
|     width: 100%;
 | ||
|     .left{
 | ||
|       width: 50%;
 | ||
|       float: left;
 | ||
|     }
 | ||
|     .right{
 | ||
|       width: 50%;
 | ||
|       float: right;
 | ||
|     }
 | ||
|     .el-select{
 | ||
|       width: 100%;
 | ||
|     }
 | ||
|     .el-date-editor.el-input{
 | ||
|       width: 100%;
 | ||
|     }
 | ||
|   }
 | ||
|   .iconEdit,.Edit{
 | ||
|     color:#5088FF;
 | ||
|     font-size: 12px;
 | ||
|     cursor: pointer;
 | ||
|     padding-left: 8px;
 | ||
|   }
 | ||
|   .color0 {
 | ||
|     color: #f82;
 | ||
|   }
 | ||
| 
 | ||
|   .color1 {
 | ||
|     color: #26f;
 | ||
|   }
 | ||
| 
 | ||
|   .color2 {
 | ||
|     color: #f46;
 | ||
|   }
 | ||
| 
 | ||
|   .color3 {
 | ||
|     color: #2EA222;
 | ||
|   }
 | ||
| }
 | ||
| .ai-steps {
 | ||
|   padding-bottom: 40px;
 | ||
|   .ai-steps__item {
 | ||
|     display: flex;
 | ||
|     position: relative;
 | ||
|     padding-bottom: 44px;
 | ||
| 
 | ||
|     &:after {
 | ||
|       position: absolute;
 | ||
|       left: 12px;
 | ||
|       top: 26px;
 | ||
|       width: 1px;
 | ||
|       height: calc(100% - 30px);
 | ||
|       background: #DDDDDD;
 | ||
|       content: " ";
 | ||
|     }
 | ||
| 
 | ||
|     &:last-child {
 | ||
|       padding-bottom: 0;
 | ||
| 
 | ||
|       &:after {
 | ||
|         display: none;
 | ||
|       }
 | ||
|     }
 | ||
| 
 | ||
|     .ai-steps__item--left {
 | ||
|       position: relative;
 | ||
|       margin-right: 16px;
 | ||
|       .ai-steps__item--index{
 | ||
|         width: 24px;
 | ||
|         height: 24px;
 | ||
|         line-height: 24px;
 | ||
|         border-radius: 50%;
 | ||
|         border: 1px solid #ddd;
 | ||
|         text-align: center;
 | ||
|         color: #ddd;
 | ||
|         font-size: 12px;
 | ||
|       }
 | ||
|       
 | ||
|     }
 | ||
| 
 | ||
|     .ai-steps__item--right {
 | ||
|       flex-shrink: 0;
 | ||
|       color: #666;
 | ||
|       font-size: 14px;
 | ||
|       display: flex;
 | ||
|       width: calc(100% - 40px);
 | ||
|       .ai-steps__item--content {
 | ||
|         span {
 | ||
|           color: #333;
 | ||
|           font-size: 16px;
 | ||
|         }
 | ||
| 
 | ||
|         h2 {
 | ||
|           color: #666666;
 | ||
|           font-size: 14px;
 | ||
|           word-break: break-all;
 | ||
|         }
 | ||
| 
 | ||
|         p {
 | ||
|           margin-top: 8px;
 | ||
|           color: #666666;
 | ||
|           font-size: 14px;
 | ||
|         }
 | ||
|       }
 | ||
| 
 | ||
|       .ai-steps__item__avatar {
 | ||
|         width: 40px;
 | ||
|         height: 40px;
 | ||
|         margin-right: 8px;
 | ||
| 
 | ||
|         img, h2 {
 | ||
|           width: 40px;
 | ||
|           height: 40px;
 | ||
|           line-height: 40px;
 | ||
|           text-align: center;
 | ||
|           color: #fff;
 | ||
|           font-size: 14px;
 | ||
|           background: #2266FF;
 | ||
|         }
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| </style> |