uploadResidentInfo
This commit is contained in:
		
							parent
							
								
									be08fa25ba
								
							
						
					
					
						commit
						026cf8edfb
					
				| 
						 | 
				
			
			@ -0,0 +1,154 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <el-upload
 | 
			
		||||
      class="upload-demo"
 | 
			
		||||
      ref="upload"
 | 
			
		||||
      drag
 | 
			
		||||
      action="#"
 | 
			
		||||
      :auto-upload="false"
 | 
			
		||||
      :on-change="handleExcelChange"
 | 
			
		||||
      multiple
 | 
			
		||||
    >
 | 
			
		||||
      <i class="el-icon-upload"></i>
 | 
			
		||||
      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
 | 
			
		||||
      <div class="el-upload__tip" slot="tip">只能上传xls/xlsx文件</div>
 | 
			
		||||
    </el-upload>
 | 
			
		||||
 | 
			
		||||
    <el-button type="primary" @click="emitData" style="margin-top: 10px;"
 | 
			
		||||
      >确认</el-button
 | 
			
		||||
    >
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: "ReadExcel",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      excelData: undefined,
 | 
			
		||||
      fileList: undefined
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {},
 | 
			
		||||
  methods: {
 | 
			
		||||
    handleExcelChange(file, fileList) {
 | 
			
		||||
      console.log(file);
 | 
			
		||||
      let _this = this;
 | 
			
		||||
      let inputDOM = this.$refs.inputer;
 | 
			
		||||
      // 通过DOM取文件数据
 | 
			
		||||
 | 
			
		||||
      this.file = event.currentTarget.files[0];
 | 
			
		||||
 | 
			
		||||
      var rABS = false; //是否将文件读取为二进制字符串
 | 
			
		||||
      var f = this.file;
 | 
			
		||||
 | 
			
		||||
      var reader = new FileReader();
 | 
			
		||||
      //if (!FileReader.prototype.readAsBinaryString) {
 | 
			
		||||
      FileReader.prototype.readAsBinaryString = function(f) {
 | 
			
		||||
        var binary = "";
 | 
			
		||||
        var rABS = false; //是否将文件读取为二进制字符串
 | 
			
		||||
        var pt = this;
 | 
			
		||||
        var wb; //读取完成的数据
 | 
			
		||||
        var outdata;
 | 
			
		||||
        var reader = new FileReader();
 | 
			
		||||
        reader.onload = function(e) {
 | 
			
		||||
          var bytes = new Uint8Array(reader.result);
 | 
			
		||||
          var length = bytes.byteLength;
 | 
			
		||||
          for (var i = 0; i < length; i++) {
 | 
			
		||||
            binary += String.fromCharCode(bytes[i]);
 | 
			
		||||
          }
 | 
			
		||||
          var XLSX = require("xlsx");
 | 
			
		||||
          if (rABS) {
 | 
			
		||||
            wb = XLSX.read(btoa(fixdata(binary)), {
 | 
			
		||||
              //手动转化
 | 
			
		||||
              type: "base64"
 | 
			
		||||
            });
 | 
			
		||||
          } else {
 | 
			
		||||
            wb = XLSX.read(binary, {
 | 
			
		||||
              type: "binary"
 | 
			
		||||
            });
 | 
			
		||||
          }
 | 
			
		||||
          outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); //outdata就是你想要的东西
 | 
			
		||||
          _this.excelData = outdata;
 | 
			
		||||
        };
 | 
			
		||||
        reader.readAsArrayBuffer(f);
 | 
			
		||||
      };
 | 
			
		||||
      if (rABS) {
 | 
			
		||||
        reader.readAsArrayBuffer(f);
 | 
			
		||||
      } else {
 | 
			
		||||
        reader.readAsBinaryString(f);
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    emitData() {
 | 
			
		||||
      let excelData = this.excelData;
 | 
			
		||||
      // let keys = [];
 | 
			
		||||
      // let total = [];
 | 
			
		||||
 | 
			
		||||
      let obj = {
 | 
			
		||||
        avatar:
 | 
			
		||||
          "http://rangtang-1.oss-cn-chengdu.aliyuncs.com/ce1e99bf-40df-49cd-a77f-05849b662859.png",
 | 
			
		||||
        description: "zz",
 | 
			
		||||
        descriptionZ: "zzzw",
 | 
			
		||||
        duty: "zw",
 | 
			
		||||
        dutyZ: "zwzw",
 | 
			
		||||
        idCard: "510105198807190533",
 | 
			
		||||
        idCardAddress: "32323",
 | 
			
		||||
        isConvenience: true,
 | 
			
		||||
        isConvenienceLeader: false,
 | 
			
		||||
        isNews: false,
 | 
			
		||||
        isNewsLeader: false,
 | 
			
		||||
        isResidentsAdministrator: [],
 | 
			
		||||
        name: "abc",
 | 
			
		||||
        nameZ: "bbc",
 | 
			
		||||
        permanentResidenceRegion: "壤塘县",
 | 
			
		||||
        permanentResidenceTown: "石里乡",
 | 
			
		||||
        permanentResidenceTownShip: "阿斗村",
 | 
			
		||||
        phone: "13408085719",
 | 
			
		||||
        sex: 1,
 | 
			
		||||
        sort: "1"
 | 
			
		||||
      };
 | 
			
		||||
      let residentList = [];
 | 
			
		||||
      excelData.map(item => {
 | 
			
		||||
        let resident = {
 | 
			
		||||
          avatar: item["头像"],
 | 
			
		||||
          description: item["职责"],
 | 
			
		||||
          descriptionZ: item["职责(藏文)"],
 | 
			
		||||
          duty: item["职务"],
 | 
			
		||||
          dutyZ: item["职务(藏文)"],
 | 
			
		||||
          idCard: item["身份证号"],
 | 
			
		||||
          idCardAddress: item["身份证地址"],
 | 
			
		||||
          isConvenience: item["是否是便民工作人员"] === "是" ? true : false,
 | 
			
		||||
          isConvenienceLeader: item["是否是便民领导"] === "是" ? true : false,
 | 
			
		||||
          isNews: false,
 | 
			
		||||
          isNewsLeader: false,
 | 
			
		||||
          isResidentsAdministrator: [],
 | 
			
		||||
          name: item["姓名"],
 | 
			
		||||
          nameZ: item["姓名(藏文)"],
 | 
			
		||||
          permanentResidenceRegion: item["县"],
 | 
			
		||||
          permanentResidenceTown: item["乡镇"],
 | 
			
		||||
          permanentResidenceTownShip: item["村"],
 | 
			
		||||
          phone: item["手机号"],
 | 
			
		||||
          sex: item["性别"] === "女" ? 0 : item["性别"] === "男" ? 1 : 2,
 | 
			
		||||
          sort: item["序号"]
 | 
			
		||||
        };
 | 
			
		||||
        residentList.push(resident);
 | 
			
		||||
        // keys.push(item["手机号"]);
 | 
			
		||||
        // total.push(item["数量"]);
 | 
			
		||||
      });
 | 
			
		||||
      // const payload = {
 | 
			
		||||
      //   // batchId: this.$route.query.id,
 | 
			
		||||
      //   keys,
 | 
			
		||||
      //   total
 | 
			
		||||
      // };
 | 
			
		||||
      // console.log(residentList);
 | 
			
		||||
      this.$emit("listenToChildEvent", residentList);
 | 
			
		||||
    },
 | 
			
		||||
    clearFileList() {
 | 
			
		||||
      this.excelData = undefined;
 | 
			
		||||
      this.$refs.upload.clearFiles();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped></style>
 | 
			
		||||
| 
						 | 
				
			
			@ -126,10 +126,10 @@ export default {
 | 
			
		|||
      //   password: '111111'
 | 
			
		||||
      // },
 | 
			
		||||
      loginForm: {
 | 
			
		||||
        username: "", //18882564006
 | 
			
		||||
        captcha: "",
 | 
			
		||||
        // username: "18882564006", //18882564006
 | 
			
		||||
        // captcha: "111111",
 | 
			
		||||
        // username: "", //18882564006
 | 
			
		||||
        // captcha: "",
 | 
			
		||||
        username: "18882564006", //18882564006
 | 
			
		||||
        captcha: "111111",
 | 
			
		||||
        appVersion: "1.0.0",
 | 
			
		||||
        system: "IOS",
 | 
			
		||||
        device: navigator.userAgent,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,6 +72,15 @@
 | 
			
		|||
      style="font-size:12px;padding:10px 20px;margin-bottom:20px"
 | 
			
		||||
      >新增</el-button
 | 
			
		||||
    >
 | 
			
		||||
    <el-button
 | 
			
		||||
      :loading="excelUploading"
 | 
			
		||||
      v-has="'RESIDENT_IMPORT'"
 | 
			
		||||
      @click="handleExcelImport"
 | 
			
		||||
      type="primary"
 | 
			
		||||
      size="mini"
 | 
			
		||||
      style="font-size:12px;padding:10px 20px;margin-bottom:20px"
 | 
			
		||||
      >导入</el-button
 | 
			
		||||
    >
 | 
			
		||||
    <el-table :data="list" style="width: 100%" border v-loading="listLoading">
 | 
			
		||||
      <el-table-column prop="name" label="姓名" width="100">
 | 
			
		||||
        <template slot-scope="scope">
 | 
			
		||||
| 
						 | 
				
			
			@ -281,6 +290,16 @@
 | 
			
		|||
        <el-button type="primary" @click="deleteData">确 定</el-button>
 | 
			
		||||
      </span>
 | 
			
		||||
    </el-dialog>
 | 
			
		||||
 | 
			
		||||
    <el-dialog title="提示" :visible.sync="dialogExcelImport" width="30%">
 | 
			
		||||
      <ReadExcel @listenToChildEvent="getExcelData" ref="readExcel"></ReadExcel>
 | 
			
		||||
      <span slot="footer" class="dialog-footer">
 | 
			
		||||
        <el-button @click="dialogExcelImport = false">取 消</el-button>
 | 
			
		||||
        <el-button type="primary" @click="dialogExcelImport = false"
 | 
			
		||||
          >确 定</el-button
 | 
			
		||||
        >
 | 
			
		||||
      </span>
 | 
			
		||||
    </el-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -295,9 +314,10 @@ import RegionSelect from "@/components/RegionSelect";
 | 
			
		|||
import { getRegions } from "@/api/region";
 | 
			
		||||
import Pagination from "@/components/Pagination";
 | 
			
		||||
import CutUpload from "@/components/cutUploadImage/index.vue";
 | 
			
		||||
import ReadExcel from "@/components/ReadExcel/index";
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
  components: { Pagination, CutUpload, RegionSelect },
 | 
			
		||||
  components: { Pagination, CutUpload, RegionSelect, ReadExcel },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      listLoading: false,
 | 
			
		||||
| 
						 | 
				
			
			@ -335,7 +355,9 @@ export default {
 | 
			
		|||
      },
 | 
			
		||||
      regionSearchVal: undefined,
 | 
			
		||||
      dialogDeleteConfirm: false,
 | 
			
		||||
      isStaff: false
 | 
			
		||||
      isStaff: false,
 | 
			
		||||
      excelUploading: false,
 | 
			
		||||
      dialogExcelImport: false
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
| 
						 | 
				
			
			@ -537,6 +559,31 @@ export default {
 | 
			
		|||
      //   this.listQuery.params.isConvenience === undefined;
 | 
			
		||||
      //   console.log(this.listQuery.params);
 | 
			
		||||
      // }
 | 
			
		||||
    },
 | 
			
		||||
    handleExcelImport() {
 | 
			
		||||
      this.dialogExcelImport = true;
 | 
			
		||||
    },
 | 
			
		||||
    getExcelData(data) {
 | 
			
		||||
      this.excelUploading = true;
 | 
			
		||||
      addResidentInfoList(data)
 | 
			
		||||
        .then(res => {
 | 
			
		||||
          if (res.c === 200) {
 | 
			
		||||
            this.$notify.success("导入成功");
 | 
			
		||||
            setTimeout(() => {
 | 
			
		||||
              this.excelUploading = false;
 | 
			
		||||
            }, 3000);
 | 
			
		||||
            this.dialogExcelImport = false;
 | 
			
		||||
            this.getList();
 | 
			
		||||
          } else {
 | 
			
		||||
            setTimeout(() => {
 | 
			
		||||
              this.excelUploading = false;
 | 
			
		||||
            }, 3000);
 | 
			
		||||
            this.dialogExcelImport = false;
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        .catch(error => {
 | 
			
		||||
          this.$notify.error(error);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue