src/views/dnc/common/ImportFileModal.vue
@@ -37,7 +37,8 @@
        title: '',
        fileList: [],
        uploadParams: {},
        uploading: false
        uploading: false,
        isUploadMultiple: true
      }
    },
    created() {
@@ -51,6 +52,7 @@
       * @param tableRowInfo 点击表格行右键菜单导入程序时传入行信息
       */
      handleImport(treeNodeInfo, tableRowInfo) {
        this.isUploadMultiple = true
        let attributionId // 文档所属层级Id
        let attributionType  // 文档所属层级类型
        let docClassCode // 文档类型
@@ -67,6 +69,17 @@
        this.visible = true
      },
      handlePush(_, tableRowInfo) {
        this.isUploadMultiple = false
        console.log('tableRowInfo', tableRowInfo)
        this.uploadParams = Object.assign({}, {
          id: tableRowInfo.docId,
          attributionId: tableRowInfo.attributionId,
          docClassCode: tableRowInfo.param
        })
        this.visible = true
      },
      handleRemove(file) {
        const index = this.fileList.indexOf(file)
        const newFileList = this.fileList.slice()
@@ -75,24 +88,40 @@
      },
      beforeUpload(file) {
        if (!this.fileList.find(item => item.name === file.name)) this.fileList = [...this.fileList, file]
        if (this.isUploadMultiple) {
          if (!this.fileList.find(item => item.name === file.name)) this.fileList = [...this.fileList, file]
        } else {
          this.fileList.splice(0, 1, file)
        }
        return false
      },
      handleUpload() {
        const { fileList, $notification } = this
        const { fileList, $notification, isUploadMultiple, uploadParams, $bus } = this
        this.uploading = true
        let uploadedFileCount = 0
        let uploadSuccessFileCount = 0
        let apiMethod
        let params
        fileList.forEach((file, index) => {
          const formData = new FormData()
          formData.append('file', file)
          file.status = 'uploading'
          dncApi.importDocumentFromLocalApi(this.uploadParams, formData)
          // 目前根据是否上传多个文件判断两个功能,若后续增加功能或调整需求则调整判断条件
          if (isUploadMultiple) {
            apiMethod = dncApi.importDocumentFromLocalApi
            params = Object.assign({}, { params: uploadParams, formData })
          } else {
            apiMethod = dncApi.documentVersionUpdateApi
            params = Object.assign({}, { id: uploadParams.id, formData })
          }
          apiMethod(params)
            .then(res => {
              if (res.success) {
                file.status = 'done'
                uploadSuccessFileCount++
                console.log('uploadSuccessFileCount++', uploadSuccessFileCount)
                $notification.success({
                  message: '消息',
                  description: res.message
@@ -111,8 +140,13 @@
            .finally(() => {
              uploadedFileCount++
              fileList.splice(index, 1, file)
              // 当文件全部上传完成后
              if (uploadedFileCount === fileList.length) {
                if (uploadSuccessFileCount > 0) this.$bus.$emit('importFileSuccess', this.uploadParams)
                // 至少有一个文件上传成功后就需要重新加载文档列表
                if (uploadSuccessFileCount > 0) {
                  $bus.$emit('importFileSuccess', uploadParams)
                  if (!isUploadMultiple) this.visible = false //无法连续入库多个版本因此入库成功后即可退出窗口
                }
                this.uploading = false
              }
            })
@@ -131,7 +165,6 @@
        if (this[methodName]) {
          this[methodName](treeNodeInfo, tableRowInfo)
          this.title = modalTitle
        }
      }
    }