302 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			302 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | ||
|   <section class="detail">
 | ||
|     <ai-detail>
 | ||
|       <template #title>
 | ||
|         <ai-title title="帮扶申请详情" isShowBottomBorder isShowBack @onBackClick="cancel(true)">
 | ||
|           <template #rightBtn>
 | ||
|             <!-- <ai-wechat-selecter :instance="instance" v-model="addUser" :isMultiple="form.readType == '0' ? false : true" @change="onChange" v-if="form.status === '2' && form.readType == '0'">
 | ||
|               <el-button
 | ||
|                 size="small"
 | ||
|                 type="primary"
 | ||
|                 icon="iconfont iconResetting">
 | ||
|                 再次流转
 | ||
|               </el-button>
 | ||
|             </ai-wechat-selecter> -->
 | ||
|             <el-button type="primary" @click="changeStatus('转交事件')" size="small"> 转交事件</el-button>
 | ||
|             <el-button type="primary" @click="changeStatus('审核处理')" size="small"> 审核处理</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.documentCode || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="身份证号:"><span>{{$dict.getLabel("officialDocumentName", form.documentType) || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="联系方式:"><span>{{$dict.getLabel("officialDocumentConfidentialityLevel", form.confidentialityLevel) || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="申报方式:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="家庭人口数:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="排查人员:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="申请帮扶原因:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
 | ||
|                 <ai-info-item label="上报时间:"><span>{{form.documentCode || '-'}}</span></ai-info-item>
 | ||
|               </ai-wrapper>
 | ||
|               <ai-wrapper label-width="100px" :columnsNumber="1">
 | ||
|                 <ai-info-item label="风险说明:"><span>{{$dict.getLabel("officialDocumentReadType", form.readType) || '-'}}</span></ai-info-item>
 | ||
|               </ai-wrapper>
 | ||
|               <ai-file-list v-if="form.files && form.files.length"
 | ||
|                 :fileList="form.files"
 | ||
|                 :fileOps="{ name: 'name', size: 'fileSizeStr' }"
 | ||
|               ></ai-file-list>
 | ||
|             </template>
 | ||
|           </ai-card>
 | ||
|           <ai-card title="办理进度" style="flex:1;">
 | ||
|             <template #right>
 | ||
|               <p style="color:#666;font-size:14px;">当前状态:待处理</p>
 | ||
|             </template>
 | ||
|             <template #content>
 | ||
|               <div class="ai-steps">
 | ||
|                 <div class="ai-steps__item" v-for="(item, index) in form.flowUsers" :key="index">
 | ||
|                   <div class="ai-steps__item--left">
 | ||
|                     <div class="ai-steps__item--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.flowUserName) }}</h2>
 | ||
|                     </div>
 | ||
|                     <div class="ai-steps__item--content">
 | ||
|                       <h2>李四发起排查上报,等待处理</h2>
 | ||
|                       <p>{{ item.flowTime }}</p>
 | ||
|                     </div>
 | ||
|                   </div>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </template>
 | ||
|           </ai-card>
 | ||
|         </div>
 | ||
|         <ai-dialog :title="dialogTitie" :visible.sync="showDialog" @onConfirm="queMeeting('writeInfo')" @onCancel="showDialog=false;" @close="$refs.dialogInfo.resetFields()"  width="520px">
 | ||
|           <div class="addother_main" style="width:400px;margin:auto;">
 | ||
|             <el-form :model="dialogInfo" status-icon ref="writeInfo" label-width="100px" class="demo-ruleForm">
 | ||
|               <el-form-item label="请假原因:" prop="reason" autocomplete="off" :rules="{ required: true, message: '请假原因不能为空', trigger: 'blur' }">
 | ||
|                 <el-input v-model.trim="dialogInfo.reason" autocomplete="off" size="mini" placeholder="请输入..." type="textarea" :rows="4" :maxlength="100" show-word-limit></el-input>
 | ||
|               </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: {}
 | ||
|     };
 | ||
|   },
 | ||
|   computed: {
 | ||
|     
 | ||
|   },
 | ||
|   created() {
 | ||
|     this.dict.load('issuingUnit','officialDocumentEmergencyLevel', 'officialDocumentReadType', 'officialDocumentConfidentialityLevel', 'officialDocumentName', 'documentFlowStatus', 'readingStatus');
 | ||
|   },
 | ||
|   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)
 | ||
|     },
 | ||
|     onChange() {
 | ||
|       if (!this.addUser.length) {
 | ||
|         return this.$message.error('请选择流转人员')
 | ||
|       }
 | ||
| 
 | ||
|       if (this.form.readType === '0' && this.form.status === '0') {
 | ||
|         // 开始流转
 | ||
|         let data = this.form
 | ||
|         const flowUsers = [...this.addUser].map(item => {
 | ||
|           return {
 | ||
|             flowUserId: item.id,
 | ||
|             flowUserName: item.name,
 | ||
|             avatar: item.avatar
 | ||
|           }
 | ||
|         })
 | ||
|         const fileIds = data.files.length ? data.files.map(item => item.id) : []
 | ||
|         delete data.files
 | ||
|         this.instance.post(`/app/appofficialdocumentinfo/addOrUpdate`, {
 | ||
|           id: this.form.id,
 | ||
|           ...data,
 | ||
|           status: '1',
 | ||
|           flowUsers: flowUsers,
 | ||
|           fileIds
 | ||
|         }).then(res => {
 | ||
|           if (res.code == 0) {
 | ||
|             this.$message.success('流转成功')
 | ||
|             this.getDetail()
 | ||
|           }
 | ||
|         })
 | ||
|       } else {
 | ||
|         // 再次流转
 | ||
|         this.instance.post(`/app/appofficialdocumentinfo/flowById`, null, {
 | ||
|           params: {
 | ||
|             flag: '1',
 | ||
|             flowUserId: this.addUser[0].id,
 | ||
|             flowUserName: this.addUser[0].name,
 | ||
|             avatar: this.addUser[0].avatar,
 | ||
|             id: this.form.id
 | ||
|           }
 | ||
|         }).then(res => {
 | ||
|           if (res.code == 0) {
 | ||
|             this.$message.success('添加成功')
 | ||
|             this.getDetail(this.id)
 | ||
|           }
 | ||
|         })
 | ||
|       }
 | ||
|     },
 | ||
|     getDetail() {
 | ||
|       this.instance.post(`/app/appofficialdocumentinfo/queryDetailById?id=${this.params.id}&flag=0`, null).then((res) => {
 | ||
|         if (res.code == 0) {
 | ||
|           this.form = {...res.data}
 | ||
|           this.form.files = this.form.files || []
 | ||
|           if (res.data.readType === '1') {
 | ||
|             this.tableData = res.data.flowUsers
 | ||
|             this.total = res.data.flowUsers.length
 | ||
|           }
 | ||
|         }
 | ||
|       });
 | ||
|     },
 | ||
|     cancel(isRefresh) {
 | ||
|       this.$emit('change', {
 | ||
|         type: 'list',
 | ||
|         isRefresh: !!isRefresh
 | ||
|       })
 | ||
|     },
 | ||
|     changeStatus(title) {
 | ||
|       this.dialogTitle = title
 | ||
|       this.showDialog = true
 | ||
|     }
 | ||
|   },
 | ||
| };
 | ||
| </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;
 | ||
|   }
 | ||
| }
 | ||
|   .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;
 | ||
|         .ai-steps__item--content {
 | ||
|           span {
 | ||
|             color: #333;
 | ||
|             font-size: 16px;
 | ||
|           }
 | ||
| 
 | ||
|           h2 {
 | ||
|             color: #666666;
 | ||
|             font-size: 14px;
 | ||
|           }
 | ||
| 
 | ||
|           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> |