|  | @@ -29,20 +29,29 @@
 | 
	
		
			
				|  |  |                      <div class="file-content">
 | 
	
		
			
				|  |  |                          <svg-icon icon-class="xlsx"></svg-icon>
 | 
	
		
			
				|  |  |                          <div class="file">
 | 
	
		
			
				|  |  | -                            <p>{{fileList[0].name}}</p>
 | 
	
		
			
				|  |  | +                            <p v-if="fileList[0]&&fileList[0].name">{{fileList[0].name}}</p>
 | 
	
		
			
				|  |  |                              <el-progress v-if="progressFlag" :percentage="percentage" :show-text="false"></el-progress>
 | 
	
		
			
				|  |  | -                            <b>{{fileList[0].fileSize}}</b>
 | 
	
		
			
				|  |  | +                            <b v-if="fileList[0]&&fileList[0].fileSize&&!progressFlag&&!uploading&&!resultData">{{fileList[0].fileSize}}</b>
 | 
	
		
			
				|  |  | +                            <div class="file-uploading" v-if="progressFlag">
 | 
	
		
			
				|  |  | +                                <span class="progress" v-if="realFileSize">{{'上传文件 '+alreadyUpload+'/'+realFileSize}}</span>
 | 
	
		
			
				|  |  | +                                <span>{{percentage}}%</span>
 | 
	
		
			
				|  |  | +                            </div>
 | 
	
		
			
				|  |  | +                            <div class="file-uploading" v-if="resultData">
 | 
	
		
			
				|  |  | +                                <span class="progress">{{'导入数据 '+resultData.cur_count+'/'+resultData.total_count}}</span>
 | 
	
		
			
				|  |  | +                                <span class="color-green" v-if="resultData.is_finish==='true'">完成</span>
 | 
	
		
			
				|  |  | +                                <span class="color-red" v-if="resultData.is_finish==='false'&&resultData.is_end==='true'">网络链接已中断</span>
 | 
	
		
			
				|  |  | +                            </div>
 | 
	
		
			
				|  |  |                          </div>
 | 
	
		
			
				|  |  |                      </div>
 | 
	
		
			
				|  |  |                      <i class="el-icon-error" @click="handleErmoveFile"></i>
 | 
	
		
			
				|  |  |                  </div>
 | 
	
		
			
				|  |  |                  <div class="file-bottom">
 | 
	
		
			
				|  |  |                      <p>批量上传内容与系统中有重复时</p>
 | 
	
		
			
				|  |  | -                    <el-radio-group v-model="sameUser">
 | 
	
		
			
				|  |  | +                    <el-radio-group v-model="sameUser" :disabled="uploading||(resultData&&resultData.is_finish==='true')">
 | 
	
		
			
				|  |  |                          <el-radio label="false">跳过</el-radio>
 | 
	
		
			
				|  |  |                          <el-radio label="true">覆盖</el-radio>
 | 
	
		
			
				|  |  |                      </el-radio-group>
 | 
	
		
			
				|  |  | -                    <el-checkbox-group v-model="coverUser">
 | 
	
		
			
				|  |  | +                    <el-checkbox-group v-model="coverUser" :disabled="uploading||(resultData&&resultData.is_finish==='true')">
 | 
	
		
			
				|  |  |                          <el-checkbox label="1">覆盖时忽略密码</el-checkbox>
 | 
	
		
			
				|  |  |                          <el-checkbox label="2">上传完成后自动导出密码文件</el-checkbox>
 | 
	
		
			
				|  |  |                      </el-checkbox-group>
 | 
	
	
		
			
				|  | @@ -55,14 +64,14 @@
 | 
	
		
			
				|  |  |              <a class="downLoad">下载模板</a>
 | 
	
		
			
				|  |  |              <div class="btn-box">
 | 
	
		
			
				|  |  |                  <el-button @click="closeDialog" size="small">取消</el-button>
 | 
	
		
			
				|  |  | -                <el-button type="primary" :disabled="!uploadFlag" v-if="!uploading&&!isStop"><svg-icon icon-class="upload"></svg-icon>开始上传</el-button>
 | 
	
		
			
				|  |  | -                <el-button type="primary" v-if="uploading&&!isStop"><svg-icon icon-class="pause-fill"></svg-icon>暂停</el-button>
 | 
	
		
			
				|  |  | -                <el-button type="warning" v-if="isStop"><i class="el-icon-refresh-right"></i>重试</el-button>
 | 
	
		
			
				|  |  | +                <el-button type="primary" :key="3" :disabled="!uploadFlag&&!file_id||(resultData&&resultData.is_finish==='true')" v-if="!uploading&&!isStop&&(resultData&&resultData.is_finish==='true'||!resultData)" @click="handleUpload" v-loading="loading"><svg-icon icon-class="upload"></svg-icon>开始上传</el-button>
 | 
	
		
			
				|  |  | +                <el-button type="primary" v-if="uploading&&!isStop" v-loading="loading" @click="handleInterruptTask"><svg-icon icon-class="pause-fill"></svg-icon>暂停</el-button>
 | 
	
		
			
				|  |  | +                <el-button type="warning" v-if="isStop" v-loading="loading" @click="handleUpload"><i class="el-icon-refresh-right"></i>重试</el-button>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |          </template>
 | 
	
		
			
				|  |  |          <template v-else>
 | 
	
		
			
				|  |  |              <div class="btn-box" style="flex:1">
 | 
	
		
			
				|  |  | -                <el-button type="primary"><svg-icon icon-class="upload"></svg-icon>导出日志</el-button>
 | 
	
		
			
				|  |  | +                <el-button :key="1" type="primary" :disabled="!(resultData&&resultData.is_finish==='true')"><svg-icon icon-class="upload"></svg-icon>导出日志</el-button>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |          </template>
 | 
	
		
			
				|  |  |      </div>
 | 
	
	
		
			
				|  | @@ -71,6 +80,7 @@
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  |  import { getToken } from "../../utils/auth";
 | 
	
		
			
				|  |  | +import { getLogin } from "@/api/ajax";
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    components: {},
 | 
	
		
			
				|  |  |    name: "batchImport",
 | 
	
	
		
			
				|  | @@ -86,8 +96,13 @@ export default {
 | 
	
		
			
				|  |  |        fileList: [],
 | 
	
		
			
				|  |  |        sameUser: 'false', // 存在相同的用户是否覆盖, true 覆盖,false 跳过。
 | 
	
		
			
				|  |  |        coverUser: [], // 覆盖用户时是否更新用户密码, true 更新,false 不更新。
 | 
	
		
			
				|  |  | -      progressFlag:true,
 | 
	
		
			
				|  |  | -      percentage:0
 | 
	
		
			
				|  |  | +      progressFlag:false,
 | 
	
		
			
				|  |  | +      percentage:0,
 | 
	
		
			
				|  |  | +      alreadyUpload:'', // 已经上传的大小
 | 
	
		
			
				|  |  | +      realFileSize: '', // 文件真实大小
 | 
	
		
			
				|  |  | +      loading: false,
 | 
	
		
			
				|  |  | +      timer: null,
 | 
	
		
			
				|  |  | +      resultData: null, // 上传结果数据
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    watch: {},
 | 
	
	
		
			
				|  | @@ -123,7 +138,7 @@ export default {
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      handleSuccess(response, file, fileList) {
 | 
	
		
			
				|  |  |        if (response.status == 1) {
 | 
	
		
			
				|  |  | -        this.$message.success("用户上传成功");
 | 
	
		
			
				|  |  | +        this.progressFlag = false
 | 
	
		
			
				|  |  |          this.file_id = response.file_info_list[0].file_id
 | 
	
		
			
				|  |  |          this.uploadFlag = true
 | 
	
		
			
				|  |  |          this.fileList = fileList
 | 
	
	
		
			
				|  | @@ -139,30 +154,143 @@ export default {
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                item.fileSize = (item.size / 1000).toFixed(2) + "KB";
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -          });
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |        } else {
 | 
	
		
			
				|  |  |          this.fileList = [];
 | 
	
		
			
				|  |  |          this.file_id = ''
 | 
	
		
			
				|  |  |          this.uploadFlag = false
 | 
	
		
			
				|  |  |          this.$message.warning(response.msg);
 | 
	
		
			
				|  |  |          this.alreadyFile = false
 | 
	
		
			
				|  |  | +        this.progressFlag = false
 | 
	
		
			
				|  |  | +        this.percentage = 0
 | 
	
		
			
				|  |  | +        this.alreadyUpload = ''
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      handleErmoveFile(){
 | 
	
		
			
				|  |  | +        if(this.progressFlag){
 | 
	
		
			
				|  |  | +            this.$message.warning('文件还未上传成功,不可删除');
 | 
	
		
			
				|  |  | +            return false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          this.file_id = ''
 | 
	
		
			
				|  |  |          this.uploadFlag = false
 | 
	
		
			
				|  |  |          this.fileList = []
 | 
	
		
			
				|  |  |          this.alreadyFile = false
 | 
	
		
			
				|  |  | +        this.progressFlag = false
 | 
	
		
			
				|  |  | +        this.isStop = false
 | 
	
		
			
				|  |  | +        this.percentage = 0
 | 
	
		
			
				|  |  | +        this.alreadyUpload = ''
 | 
	
		
			
				|  |  | +        this.resultData = null
 | 
	
		
			
				|  |  | +        this.sameUser = 'false'
 | 
	
		
			
				|  |  | +        this.coverUser = []
 | 
	
		
			
				|  |  | +        this.$forceUpdate()
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      uploadVideoProcess(event, file, fileList) {
 | 
	
		
			
				|  |  | -        // this.fileList = fileList
 | 
	
		
			
				|  |  | -        // this.progressFlag = true; // 显示进度条
 | 
	
		
			
				|  |  | -        // this.percentage = parseInt(event.percent); // 动态获取文件上传进度
 | 
	
		
			
				|  |  | -        // if (this.percentage >= 100) {
 | 
	
		
			
				|  |  | -        //     this.percentage = 100
 | 
	
		
			
				|  |  | -        //     setTimeout( () => {this.progressFlag = false}, 100) // 关闭进度条
 | 
	
		
			
				|  |  | -        // }
 | 
	
		
			
				|  |  | +        this.fileList = fileList
 | 
	
		
			
				|  |  | +        this.progressFlag = true; // 显示进度条
 | 
	
		
			
				|  |  | +        this.percentage = parseInt(event.percent); // 动态获取文件上传进度
 | 
	
		
			
				|  |  | +        if (file.size > 1000 * 1000) {
 | 
	
		
			
				|  |  | +            if (file.size / 1000 / 1000 / 1000 > 1) {
 | 
	
		
			
				|  |  | +            this.alreadyUpload =
 | 
	
		
			
				|  |  | +                (file.size / 1000 / 1000 / 1000 / 100*this.percentage).toFixed(2) + "GB";
 | 
	
		
			
				|  |  | +            this.realFileSize = (file.size / 1000 / 1000 / 1000).toFixed(2) + "GB";
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +            this.alreadyUpload =
 | 
	
		
			
				|  |  | +                (file.size / 1000 / 1000 / 100*this.percentage).toFixed(2) + "MB";
 | 
	
		
			
				|  |  | +            this.realFileSize =
 | 
	
		
			
				|  |  | +                (file.size / 1000 / 1000).toFixed(2) + "MB";
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            this.alreadyUpload = (file.size / 1000 / 100*this.percentage).toFixed(2) + "KB";
 | 
	
		
			
				|  |  | +            this.realFileSize = (file.size / 1000).toFixed(2) + "KB";
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (this.percentage >= 100) {
 | 
	
		
			
				|  |  | +            this.percentage = 100
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    // 开始上传
 | 
	
		
			
				|  |  | +    handleUpload(){
 | 
	
		
			
				|  |  | +        if(this.resultData&&this.resultData.is_finish==='true'){
 | 
	
		
			
				|  |  | +            this.$message.warning('已经解析过该文件');
 | 
	
		
			
				|  |  | +            return false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(!this.file_id){
 | 
	
		
			
				|  |  | +            this.$message.warning('请先上传文件');
 | 
	
		
			
				|  |  | +            return false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.loading = true
 | 
	
		
			
				|  |  | +        this.progressFlag = false
 | 
	
		
			
				|  |  | +        this.uploadFlag = false
 | 
	
		
			
				|  |  | +        let MethodName = "/OrgServer/Manager/DataImport/CreateSysUserImportTask";
 | 
	
		
			
				|  |  | +        let data = {
 | 
	
		
			
				|  |  | +            file_id: this.file_id,
 | 
	
		
			
				|  |  | +            is_cover_while_exit_same_user: this.sameUser,
 | 
	
		
			
				|  |  | +            is_update_password_while_cover_user: this.coverUser.indexOf('1')?'true':'false'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        getLogin(MethodName, data)
 | 
	
		
			
				|  |  | +        .then((res) => {
 | 
	
		
			
				|  |  | +            if(res.status===1){
 | 
	
		
			
				|  |  | +                this.loading = false
 | 
	
		
			
				|  |  | +                this.uploading = true
 | 
	
		
			
				|  |  | +                this.isStop = false
 | 
	
		
			
				|  |  | +                this.timer = setInterval(() => {
 | 
	
		
			
				|  |  | +                    if (this.resultData&&this.resultData.is_finish==='true') {
 | 
	
		
			
				|  |  | +                        clearInterval(this.timer);
 | 
	
		
			
				|  |  | +                        this.timer = null;
 | 
	
		
			
				|  |  | +                        this.uploading = false
 | 
	
		
			
				|  |  | +                        this.$forceUpdate()
 | 
	
		
			
				|  |  | +                    }else{
 | 
	
		
			
				|  |  | +                        this.handleTaskStatus()
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }, 1000);
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                this.loading = false
 | 
	
		
			
				|  |  | +                this.uploading = false
 | 
	
		
			
				|  |  | +                this.uploadFlag = true
 | 
	
		
			
				|  |  | +                this.isStop = true
 | 
	
		
			
				|  |  | +                clearInterval(this.timer);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .catch(() => {
 | 
	
		
			
				|  |  | +            clearInterval(this.timer);
 | 
	
		
			
				|  |  | +            this.uploading = false
 | 
	
		
			
				|  |  | +            this.uploadFlag = true
 | 
	
		
			
				|  |  | +            this.isStop = true
 | 
	
		
			
				|  |  | +            this.loading = false
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 导入任务执行状态
 | 
	
		
			
				|  |  | +    handleTaskStatus(){
 | 
	
		
			
				|  |  | +        let MethodName = "/OrgServer/Manager/DataImport/GetSysUserImportTaskExecuteStatus";
 | 
	
		
			
				|  |  | +        let data = {
 | 
	
		
			
				|  |  | +            is_query_execute_log: 'true'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        getLogin(MethodName, data)
 | 
	
		
			
				|  |  | +        .then((res) => {
 | 
	
		
			
				|  |  | +            if(res.status===1){
 | 
	
		
			
				|  |  | +                this.resultData = res
 | 
	
		
			
				|  |  | +                this.$forceUpdate()
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .catch(() => {
 | 
	
		
			
				|  |  | +            this.uploading = false
 | 
	
		
			
				|  |  | +            this.loading = false
 | 
	
		
			
				|  |  | +        });    
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    // 中断任务
 | 
	
		
			
				|  |  | +    handleInterruptTask(){
 | 
	
		
			
				|  |  | +        this.loading = true
 | 
	
		
			
				|  |  | +        let MethodName = "/OrgServer/Manager/DataImport/InterruptSysUserImportTask";
 | 
	
		
			
				|  |  | +        getLogin(MethodName, {})
 | 
	
		
			
				|  |  | +        .then((res) => {
 | 
	
		
			
				|  |  | +            if(res.status===1){
 | 
	
		
			
				|  |  | +                this.isStop = true
 | 
	
		
			
				|  |  | +                this.loading = false
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .catch(() => {
 | 
	
		
			
				|  |  | +            this.loading = false
 | 
	
		
			
				|  |  | +        });    
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  |    created() {
 | 
	
		
			
				|  |  |    },
 | 
	
	
		
			
				|  | @@ -304,6 +432,16 @@ export default {
 | 
	
		
			
				|  |  |      .el-progress{
 | 
	
		
			
				|  |  |          margin-bottom: 8px;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    .file-uploading{
 | 
	
		
			
				|  |  | +        display: flex;
 | 
	
		
			
				|  |  | +        justify-content: space-between;
 | 
	
		
			
				|  |  | +        font-size: 12px;
 | 
	
		
			
				|  |  | +        line-height: 14px;
 | 
	
		
			
				|  |  | +        color: #242634;
 | 
	
		
			
				|  |  | +        .progress{
 | 
	
		
			
				|  |  | +            font-weight: 600;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  </style>
 | 
	
		
			
				|  |  |  <style lang="scss">
 | 
	
	
		
			
				|  | @@ -328,6 +466,7 @@ export default {
 | 
	
		
			
				|  |  |              color: #86909C;
 | 
	
		
			
				|  |  |              font-size: 12px;
 | 
	
		
			
				|  |  |              line-height: 20px;
 | 
	
		
			
				|  |  | +            word-break: break-word;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |