IUploadVisit.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <template>
  2. <div>
  3. <upload-excel-component :on-success="handleSuccess" :before-upload="beforeUpload" :range="1"/>
  4. <div style="width: 220px; margin: 20px auto; ">
  5. <el-button @click="onSubmit" type="primary" class="p10" style="width: 200px;padding: 10px 20px;"> 提交</el-button>
  6. </div>
  7. <span>必须列 【姓名,职务,行程概要,陪同情况,机关单位,来文日期,莅临时间,返程时间,拟办意见】 </span>
  8. <el-table :data="tableData.slice( page*size-size, page*size)" border highlight-current-row style="width: 100%;margin-top:20px;">
  9. <el-table-column prop="username" label="姓名"></el-table-column>
  10. <el-table-column prop="post" label="职务"></el-table-column>
  11. <el-table-column prop="tripSummary" label="行程概要"></el-table-column>
  12. <el-table-column prop="accompany" label="陪同情况"></el-table-column>
  13. <el-table-column prop="organUnit" label="机关单位"></el-table-column>
  14. <el-table-column prop="recvDate" label="来文日期"></el-table-column>
  15. <el-table-column prop="fromDate" label="莅临时间"></el-table-column>
  16. <el-table-column prop="toDate" label="返程时间"></el-table-column>
  17. <el-table-column prop="proposed" label="拟办意见" ></el-table-column>
  18. <el-table-column
  19. align="center"
  20. width="160px"
  21. label="操作"
  22. class-name="small-padding fixed-width"
  23. >
  24. <template slot-scope="{row, $index}">
  25. <el-button
  26. type="primary"
  27. size="small"
  28. icon="el-icon-edit"
  29. @click="deleteRow($index)"
  30. >删除</el-button>
  31. </template>
  32. </el-table-column>
  33. </el-table>
  34. <el-pagination :current-page="page"
  35. :page-size="size"
  36. :page-sizes="[10,20, 50, 100]"
  37. :style="{ float: 'right', padding: '20px' }"
  38. :total="tableData.length"
  39. @current-change="(page)=>{this.page= page}"
  40. @size-change="(size)=>{this.size= size}"
  41. layout="total, sizes, prev, pager, next, jumper">
  42. </el-pagination>
  43. </div>
  44. </template>
  45. <script>
  46. import UploadExcelComponent from '@/components/UploadExcel/index.vue'
  47. import { importVisitList } from "@/api/importVisit.js";
  48. import {excelDate} from "@/utils/date.js"
  49. export default {
  50. name: 'UploadExcel',
  51. components: { UploadExcelComponent },
  52. data() {
  53. return {
  54. page:1,
  55. size:10,
  56. name:'',
  57. tableData: [],
  58. tableHeader: []
  59. }
  60. },
  61. methods: {
  62. beforeUpload(file) {
  63. this.name = file.name;
  64. const isLt1M = file.size / 1024 / 1024 < 1
  65. if (isLt1M) {
  66. return true
  67. }
  68. alert( "文件必须小于1M" )
  69. return false
  70. },
  71. onSubmit(){
  72. let that = this;
  73. for( let i in this.tableData){
  74. let item = this.tableData[i];
  75. let errmsg = that.checkData(item)
  76. if( errmsg ){
  77. alert( errmsg )
  78. return;
  79. }
  80. }
  81. if( this.tableData.length < 1){
  82. alert( "excel无内容" )
  83. return
  84. }
  85. let param = {}
  86. param.name = this.name
  87. param.list = this.tableData
  88. importVisitList( param ).then( res=>{
  89. if(res.code == 200){
  90. let logId = res.data.id;
  91. this.$router.push( {name:'import-visit-info', query:{logId}})
  92. }
  93. })
  94. },
  95. checkData( data ){
  96. return false
  97. },
  98. deleteRow(index){
  99. this.tableData.splice(index,1);
  100. },
  101. handleSuccess({ results }) {
  102. this.tableData = results.filter( (item) =>{
  103. return !!item["姓名"];
  104. }
  105. ).map( item=>{
  106. // 姓名,职务,行程概要,陪同情况,机关单位,来文日期,莅临时间,返程时间,拟办意见
  107. return {
  108. username: (''+item["姓名"]||'').trim(),
  109. post: (''+item["职务"]||'').trim(),
  110. tripSummary: (''+item["行程概要"]||'').trim(),
  111. accompany: (''+item["陪同情况"]||'').trim(),
  112. organUnit: (''+item["机关单位"]||'').trim(),
  113. recvDate: excelDate(item["来文日期"]),
  114. fromDate: excelDate(item["莅临时间"]),
  115. toDate: excelDate(item["返程时间"]),
  116. proposed: (''+(item["拟办意见"]||'')).trim(),
  117. edit: false,
  118. }
  119. })
  120. this.page =1;
  121. this.size = 10;
  122. }
  123. }
  124. }
  125. </script>
  126. <style scoped=""></style>
  127. <style>
  128. .message{ z-index: 1000 !important;}
  129. </style>