You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							325 lines
						
					
					
						
							8.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							325 lines
						
					
					
						
							8.3 KiB
						
					
					
				| <template> | |
|   <div class="dialog-h-content scroll-h"> | |
|     <div class="div_dialog_table"> | |
|       <el-button size="small" | |
|                  class="diy-button--add" | |
|                  @click="handleAdd">新增</el-button> | |
|       <el-button size="small" | |
|                  class="diy-button--reset" | |
|                  @click="handleExport">导出</el-button> | |
| 
 | |
|       <el-table class="table" | |
|                 :data="tableData" | |
|                 border | |
|                 :height="tableHeight" | |
|                 v-loading="tableLoading" | |
|                 :header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" | |
|                 style="width: 100%"> | |
|         <el-table-column label="序号" | |
|                          header-align="center" | |
|                          align="center" | |
|                          type="index" | |
|                          width="50"> | |
|         </el-table-column> | |
|  | |
|         <el-table-column prop="visitTime" | |
|                          header-align="center" | |
|                          align="center" | |
|                          label="随访时间" | |
|                          width="150"> | |
|  | |
|         </el-table-column> | |
|         <el-table-column prop="content" | |
|                          header-align="center" | |
|                          align="center" | |
|                          label="随访内容" | |
|                          min-width="280"> | |
|  | |
|         </el-table-column> | |
|  | |
|       </el-table> | |
|       <div> | |
|         <el-pagination @size-change="handleSizeChange" | |
|                        @current-change="handleCurrentChange" | |
|                        :current-page.sync="pageNo" | |
|                        :page-sizes="[20, 50, 100, 200]" | |
|                        :page-size="pageSize" | |
|                        layout="sizes, prev, pager, next, total" | |
|                        :total="total"> | |
|         </el-pagination> | |
|       </div> | |
|     </div> | |
|     <el-dialog :visible.sync="dialogVisible" | |
|                width="850px" | |
|                top="5vh" | |
|                title="新增" | |
|                append-to-body | |
|                @closed="handleCancle"> | |
|       <div class="epidemic-form"> | |
|         <el-form ref="ref_form" | |
|                  :inline="true" | |
|                  :model="formData" | |
|                  :rules="dataRule" | |
|                  class="form"> | |
| 
 | |
|           <el-form-item label="随访时间" | |
|                         style="display: block" | |
|                         prop="visitTime" | |
|                         label-width="150px"> | |
|             <el-date-picker class="item_width_2" | |
|                             v-model="formData.visitTime" | |
|                             format="yyyy-MM-dd HH:mm" | |
|                             value-format="yyyy-MM-dd HH:mm" | |
|                             type="datetime" | |
|                             :picker-options="pickerOptions" | |
|                             clearable | |
|                             placeholder="选择时间"> | |
|             </el-date-picker> | |
|           </el-form-item> | |
|  | |
|           <el-form-item label="随访内容" | |
|                         prop="content" | |
|                         label-width="150px" | |
|                         style="display: block"> | |
|             <el-input class="item_width_1" | |
|                       type="textarea" | |
|                       maxlength="1000" | |
|                       show-word-limit | |
|                       :autosize="{ minRows: 4, maxRows: 10 }" | |
|                       clearable | |
|                       placeholder="请输入随访内容" | |
|                       v-model="formData.content"></el-input> | |
|           </el-form-item> | |
|  | |
|         </el-form> | |
|  | |
|         <div class="form_div_btn"> | |
|           <el-button size="small" | |
|                      @click="handleCancle">取 消</el-button> | |
|           <el-button size="small" | |
|                      type="primary" | |
|                      @click="handleComfirm">确 定</el-button> | |
|         </div> | |
|       </div> | |
|     </el-dialog> | |
|   </div> | |
| </template> | |
| 
 | |
| <script> | |
| import { mapGetters } from 'vuex' | |
| import { Loading } from 'element-ui' // 引入Loading服务 | |
| import { requestPost } from '@/js/dai/request' | |
| 
 | |
| let loading // 加载动画 | |
| export default { | |
|   data () { | |
|     return { | |
|       tableLoading: false, | |
| 
 | |
|       tableData: [], | |
|       total: 0, | |
|       pageSize: 20, | |
|       pageNo: 1, | |
| 
 | |
|       pickerOptions: { //控制时间范围 | |
|         disabledDate (time) { | |
|           return time.getTime() > (Date.now()) | |
|         } | |
|       }, | |
| 
 | |
|       formData: { | |
|         visitTime: '',//随访时间 | |
|         content: '',//内容 | |
|         idCard: '', | |
|         name: '', | |
|         mobile: '', | |
|         origin: '2' | |
|       }, | |
| 
 | |
|       dialogVisible: false, | |
| 
 | |
|     } | |
|   }, | |
|   components: {}, | |
|   mounted () { | |
| 
 | |
|   }, | |
| 
 | |
|   methods: { | |
| 
 | |
|     async initTable (row, origin) { | |
| 
 | |
|       this.formData.idCard = row.idCard | |
|       this.formData.name = row.name | |
|       this.formData.mobile = row.mobile | |
|       this.formData.origin = origin | |
| 
 | |
|       await this.loadTable() | |
| 
 | |
|     }, | |
| 
 | |
|     //加载form | |
|     async loadTable () { | |
| 
 | |
|       this.tableLoading = true | |
|       const url = '/epmetuser/followup/page' | |
|       // const url = 'http://yapi.elinkservice.cn/mock/245/epmetuser/followup/page' | |
|       let params = { | |
|         name: this.formData.name, | |
|         idCard: this.formData.idCard, | |
|         pageNo: this.pageNo, | |
|         pageSize: this.pageSize, | |
|         origin: '2' | |
|       } | |
| 
 | |
|       const { data, code, msg } = await requestPost(url, params) | |
|       this.tableLoading = false | |
|       if (code === 0) { | |
|         this.total = data.total | |
|         this.tableData = data.list | |
|         this.tableData.forEach(element => { | |
|           element.visitTime = element.visitTime.slice(0, element.visitTime.length - 3) | |
|         }); | |
| 
 | |
|       } else { | |
|         this.$message.error(msg) | |
|       } | |
|     }, | |
| 
 | |
|     handleAdd () { | |
|       this.dialogVisible = true | |
|     }, | |
| 
 | |
| 
 | |
|     async handleComfirm () { | |
|       this.formData.visitTime = this.formData.visitTime + ':00' | |
|       let url = "/epmetuser/followup/save" | |
|       // let url = "http://yapi.elinkservice.cn/mock/245/epmetuser/followup/save" | |
|  | |
|       const { data, code, msg } = await requestPost(url, this.formData) | |
| 
 | |
|       if (code === 0) { | |
|         this.loadTable() | |
|         this.handleCancle() | |
|       } else { | |
|         this.$message.error(msg) | |
|       } | |
| 
 | |
|     }, | |
| 
 | |
|     handleCancle () { | |
|       this.dialogVisible = false | |
| 
 | |
|     }, | |
| 
 | |
|     //导出表格 | |
|     async handleExport () { | |
|       let today = new Date() | |
| 
 | |
| 
 | |
|       console.log(today.getMonth() + 1, today.getDate()) | |
|       let title = this.formData.name + (today.getMonth() + 1) + '月' + today.getDate() + '日' + '随访记录' | |
| 
 | |
|       const url = "/epmetuser/followup/export" | |
|       let params = { | |
|         idCard: this.formData.idCard, | |
|         name: this.formData.name, | |
|         origin: '2' | |
|       } | |
| 
 | |
|       app.ajax.exportFilePost( | |
|         url, | |
|         params, | |
|         (data, rspMsg) => { | |
| 
 | |
|           this.download(data, title + '.xlsx') | |
|         }, | |
|         (rspMsg, data) => { | |
|           this.$message.error(rspMsg); | |
|         } | |
|       ); | |
| 
 | |
|     }, | |
| 
 | |
|     // 下载文件 | |
|     download (data, fileName) { | |
|       if (!data) { | |
|         return | |
|       } | |
| 
 | |
|       var csvData = new Blob([data]) | |
| 
 | |
|       if (window.navigator && window.navigator.msSaveOrOpenBlob) { | |
|         window.navigator.msSaveOrOpenBlob(csvData, fileName); | |
|       } | |
|       // for Non-IE (chrome, firefox etc.) | |
|       else { | |
|         var a = document.createElement('a'); | |
|         document.body.appendChild(a); | |
|         a.style = 'display: none'; | |
|         var url = window.URL.createObjectURL(csvData); | |
|         a.href = url; | |
|         a.download = fileName; | |
|         a.click(); | |
|         a.remove(); | |
|         window.URL.revokeObjectURL(url); | |
|       } | |
| 
 | |
|     }, | |
| 
 | |
|     handleSizeChange (val) { | |
|       this.pageSize = val | |
|       this.pageNo = 1 | |
|       this.loadTable() | |
|     }, | |
|     handleCurrentChange (val) { | |
|       this.pageNo = val | |
|       this.loadTable() | |
|     }, | |
| 
 | |
| 
 | |
|     // 开启加载动画 | |
|     startLoading () { | |
|       loading = Loading.service({ | |
|         lock: true, // 是否锁定 | |
|         text: '正在加载……', // 加载中需要显示的文字 | |
|         background: 'rgba(0,0,0,.7)' // 背景颜色 | |
|       }) | |
|     }, | |
|     // 结束加载动画 | |
|     endLoading () { | |
|       // clearTimeout(timer); | |
|       if (loading) { | |
|         loading.close() | |
|       } | |
|     } | |
|   }, | |
|   computed: { | |
|     tableHeight () { | |
|       return (this.clientHeight - 360) | |
|     }, | |
| 
 | |
|     ...mapGetters(['clientHeight']), | |
|     dataRule () { | |
|       return { | |
|         visitTime: [ | |
|           { required: true, message: '随访时间不能为空', trigger: 'blur' } | |
|         ], | |
|         content: [ | |
|           { required: true, message: '随访内容不能为空', trigger: 'blur' } | |
|         ], | |
|       } | |
|     } | |
| 
 | |
| 
 | |
|   }, | |
|   props: { | |
| 
 | |
|   } | |
| } | |
| </script> | |
| 
 | |
| 
 | |
| <style lang="scss" scoped > | |
| @import "@/assets/scss/modules/management/epidemic.scss"; | |
| </style> |