src/views/CNAS/resourceDemand/standardMaterial/index.vue
@@ -12,13 +12,14 @@
              @keyup.enter.native="searchList"></el-input>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" icon="el-icon-search" size="mini" @click="searchList">查 询</el-button>
            <el-button icon="el-icon-refresh" size="mini" @click="resetSearchForm">重 置</el-button>
            <el-button type="primary" size="mini" @click="searchList">查询</el-button>
            <el-button size="mini" @click="resetSearchForm">重置</el-button>
          </el-form-item>
        </el-form>
      </div>
      <div>
        <el-button size="small" @click="exportFun">导 出</el-button>
        <el-button size="small" type="primary" @click="importVisible = true">导 入</el-button>
        <el-button size="small" type="primary" @click="openFormDia('add')">新 增</el-button>
      </div>
    </div>
@@ -29,6 +30,22 @@
    <form-dia v-if="formDia" ref="formDia" @closeYearDia="closeYearDia"></form-dia>
    <borrow-dia v-if="borrowDia" ref="borrowDia" @closeYearDia="closeBorrowDia"></borrow-dia>
    <return-dia v-if="returnDia" ref="returnDia" @closeYearDia="closeReturnDia"></return-dia>
    <el-dialog title="标准物质导入" :visible.sync="importVisible" width="500px" @closed="resetImport">
      <div style="margin-bottom: 12px;">
        请使用标准物质导入模板填写数据,单个文件不超过10MB。
        <el-button type="text" @click="downloadTemplate">下载导入模板</el-button>
      </div>
      <el-upload ref="standardSubstanceUpload" drag name="file" accept=".xlsx" :action="importAction"
                 :headers="uploadHeader" :auto-upload="false" :limit="1" :file-list="importFiles"
                 :before-upload="beforeImport" :on-success="importSuccess" :on-error="importError">
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
      </el-upload>
      <span slot="footer" class="dialog-footer">
        <el-button @click="importVisible = false">取消</el-button>
        <el-button type="primary" :loading="importing" @click="submitImport">导入</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -39,7 +56,8 @@
import {
  getPageStandardSubstance,
  removeStandardSubstance,
  exportOfStandardSubstanceList
  exportOfStandardSubstanceList,
  downloadStandardSubstanceImportTemplate
} from '@/api/cnas/resourceDemand/standardMaterial/standardMaterial'
import FormDia from '../standardMaterial/component/formDia.vue';
import BorrowDia from '../standardMaterial/component/borrowDia.vue';
@@ -173,12 +191,65 @@
      formDia: false,
      borrowDia: false,
      returnDia: false,
      importVisible: false,
      importing: false,
      importFiles: [],
    }
  },
  computed: {
    importAction() {
      return this.javaApi + '/feStandardSubstance/importStandardSubstance'
    }
  },
  mounted() {
    this.searchList()
  },
  methods: {
    downloadTemplate() {
      downloadStandardSubstanceImportTemplate().then(res => {
        this.$download.saveAs(new Blob([res]), '标准物质导入模板.xlsx')
      })
    },
    submitImport() {
      if (!this.$refs.standardSubstanceUpload.uploadFiles.length) {
        this.$message.warning('请选择需要导入的Excel文件')
        return
      }
      this.$refs.standardSubstanceUpload.submit()
    },
    beforeImport(file) {
      if (!file.name.toLowerCase().endsWith('.xlsx')) {
        this.$message.error('仅支持.xlsx格式文件')
        return false
      }
      if (file.size > 10 * 1024 * 1024) {
        this.$message.error('导入文件不能超过10MB')
        return false
      }
      this.importing = true
      return true
    },
    importSuccess(response) {
      this.importing = false
      if (response.code !== 200) {
        this.$message.error(response.message || response.msg || '导入失败')
        return
      }
      this.$message.success(`成功导入${response.data}条标准物质`)
      this.importVisible = false
      this.searchList()
    },
    importError() {
      this.importing = false
      this.$message.error('导入失败')
    },
    resetImport() {
      this.importing = false
      this.importFiles = []
      if (this.$refs.standardSubstanceUpload) {
        this.$refs.standardSubstanceUpload.clearFiles()
      }
    },
    exportFun() {
      this.outLoading = true
      exportOfStandardSubstanceList(this.searchForm).then(res => {