马宇豪
2024-07-19 5bb5c0c4cc1227b0a3f7f4ae926a3e8324022bf9
src/views/Admin/contactBook/contactors.vue
@@ -53,6 +53,18 @@
      </a-col>
      <contactors-mod ref="contactMod" @refresh="getUserList()"></contactors-mod>
    </a-row>
    <a-modal v-model="visible" title="导入通讯录" ok-text="导入通讯录" :confirmLoading="uploadLoading" cancel-text="取消" @ok="uploadFile" centered :afterClose="clearMod">
      <a-form-model ref="ruleForm" :label-col="labelCol" :wrapper-col="wrapperCol" :colon="false">
        <a-form-model-item label="通讯录表格模板" extra="导入通讯录须依据此模板">
          <a-button type="primary" @click="downloadFile">下载模板</a-button>
        </a-form-model-item>
        <a-form-model-item label="通讯录表格文件">
          <a-upload :file-list="fileList" :remove="handleRemove" :before-upload="beforeUpload" accept=".xlsx,.xls">
            <a-button> <a-icon type="upload"/> 点击上传 </a-button>
          </a-upload>
        </a-form-model-item>
      </a-form-model>
    </a-modal>
  </div>
</template>
@@ -68,6 +80,9 @@
} from "@/api/contactBook";
import subMenu from "@/views/Admin/contactBook/subMenu";
import contactorsMod from "@/views/Admin/components/contactorsMod"
import {importUser} from "@/api/user";
import importNew from "@/assets/importNew.xlsx";
import exampleFile from "@/assets/example.xlsx";
export default {
  name: 'sameLevel',
@@ -77,6 +92,12 @@
  },
  data () {
    return {
      visible: false,
      uploadLoading: false,
      fileList: [],
      labelCol: { span: 8 },
      wrapperCol: { span: 14 },
      importNew,
      openKeys: [],
      areaVal: [],
      unittype: null,
@@ -184,6 +205,59 @@
    }
  },
  methods:{
    downloadFile(){
      const link = document.createElement('a')
      link.href = exampleFile
      link.target = '_blank'
      link.download = '通讯录导入模板.xlsx'
      link.click()
    },
    handleRemove(file) {
      const index = this.fileList.indexOf(file)
      const newFileList = this.fileList.slice()
      newFileList.splice(index, 1)
      this.fileList = newFileList;
    },
    beforeUpload(file) {
      this.fileList = [...this.fileList, file]
      this.fileList = this.fileList.slice(-1)
      return false;
    },
    async uploadFile(){
      if(!this.currentId || !this.search.searchParams.orgStructureId){
        this.$message.warning('请先在页面左侧单位架构处选择需要导入人员的单位')
        return
      }
      if(this.fileList.length == 0){
        this.$message.warning('请先上传通讯录表格');
        return
      }else{
        this.uploadLoading = true
        const { fileList } = this;
        const formData = new FormData();
        fileList.forEach((file) => {
          formData.append('file', file)
        })
        formData.append('districtId', this.currentId)
        formData.append('orgStructureId', this.search.searchParams.orgStructureId)
        const res = await importUser(formData)
        if(res.data.code == 100){
          this.$message.success(res.data.msg,2);
          this.fileList = []
          this.uploadLoading = false
          this.visible = false
          await this.getUserList()
        }else{
          this.$message.warning(res.data.msg);
          this.uploadLoading = false
        }
      }
    },
    clearMod(){
      this.fileList = []
    },
    async getStructure(){
      const t = this
      const res = await getStructure()
@@ -231,7 +305,6 @@
    handleClick(e) {
      console.log(e)
      this.currentId = e.keyPath[1]?e.keyPath[1].split('-')[0]:e.keyPath[0].split('-')[0]
      this.search = {
        pageIndex: 1,
@@ -261,7 +334,7 @@
    },
    massImport(){
      this.$message.warning('批量导入请联系管理人员')
      this.visible = true
    },
    resetSearch(){