<template>
  <div class="flexOne">
    <div class="myDocumentsNav">
      <el-upload class='myDocumentUploadBtn' :http-request="uploadFileBtn" :on-exceed="handleExceed" ref="upload"
        :multiple="true" :limit="5" :show-file-list="false" :headers='headers' action="">
        <el-button size="small" type="danger" icon="el-icon-upload2">{{$t('objFill.shangchuan')}}</el-button>
      </el-upload>

      <el-button-group>
        <!-- <el-button v-if='notFileList.length==1&&fileList.length<1' type="danger" icon="el-icon-download" @click='dowloadSingle()'>{{$t('objFill.xz')}}</el-button> -->
        <el-button v-if='fileList.length>0||notFileList.length>0' type="danger" icon="el-icon-download"
          @click='yzmVisible=true,createCode()'>{{$t('objFill.v101.administrative.yasuoxz')}}</el-button>
        <el-button type="danger" @click='openAddFilesDialog'>{{$t('objFill.v101.administrative.xinjianwjj')}}</el-button>
        <el-button v-if='fileList.length>0||notFileList.length>0' type="danger" icon="el-icon-delete"
          @click='deleteFiles'>{{$t('system.table_delete')}}</el-button>
        <el-button v-if='fileList.length>0||notFileList.length>0' type="danger" icon="el-icon-share"
          @click='openShareDialog'>{{$t('objFill.v101.administrative.fenxiang')}}</el-button>
        <el-button v-if='fileList.length>0||notFileList.length>0' type="danger" @click='moveFiles'>{{$t('objFill.v101.administrative.yidongdao')}}</el-button>
      </el-button-group>
      <div class="fr">
        <el-input class='w200' :placeholder="$t('pub.pleaseImport')" prefix-icon="el-icon-search" v-model="srearchKey">
        </el-input>
        <input type="button" class="hollowFixedBtn" @click='doSearch()' :value="$t('pub.searchBtn')" />
      </div>
    </div>

    <div class="myDocumentsLink" v-if='this.NavigationList.length>0'>
      <span @click="getNextLevel(0)">{{$t('advmanager.v_all')}}</span><span v-for="item in NavigationList"
        @click="getNextLevel(item.Id)">{{item.FolderName}}</span>
    </div>

    <table class="singeRowTable myDocumentsTable" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <th width="400"><input v-model="isCkedAll" type="checkbox" @click='checkedAll()' />{{$t('objFill.v101.chat.wenjianming')}}</th>
        <th width="200">&nbsp;</th>
        <th width="200">{{$t('objFill.v101.chat.daxiao')}}</th>
        <th width="200">{{$t('objFill.v101.chat.xiugairiqi')}}</th>
      </tr>

      <tr v-for="(item,index) in list" @mouseover="enterTr(index)" @mouseleave="leaveTr">
        <td v-if="item.DataType==0">
          <input type="checkbox" :value="item.Id" v-model="fileList" @change="ckeckedOne">
          <div @click="getNextLevel(item.Id)" style="cursor: pointer; display: inline-block;">
            <div :class="['fileIcon', item.icons]"></div>
            {{item.FolderName}}
          </div>
        </td>
        <td v-if="item.DataType==2">
          <input type="checkbox" :value="item.Id" v-model="notFileList" @change="ckeckedOne">
          <div @click="analyzeItem(item)" style="cursor: pointer;display: inline-block;">
            <div :class="['fileIcon', item.icons]"></div>
            {{item.FolderName}}
          </div>
        </td>
        <td>
          <el-row v-if='curIndex==index'>
            <el-button type="primary" icon="el-icon-download" circle @click='downloadOne(item)'></el-button>
            <el-button v-if="item.DataType==0" type="primary" icon="el-icon-edit" circle @click='updateFiles(item)'>
            </el-button>
            <el-button v-if="item.DataType==2" type="primary" icon="el-icon-edit" circle @click='updateOneFile(item)'>
            </el-button>
            <el-button type="primary" icon="el-icon-share" circle @click='openShareOneDialog(item)'></el-button>
            <el-button type="danger" icon="el-icon-delete" @click='deleteOne(item)' circle></el-button>
          </el-row>
        </td>
        <td>{{item.FileSize| FileSizeFormat(item.FileSize)}}</td>
        <td>{{item.UpdateTime}}</td>
      </tr>
    </table>

    <el-dialog custom-class='w400' :title="dialogTitle" :visible.sync="outerVisible" center
      :before-close="closeChangeMachie">
      <el-form :model="addFileMsg" :rules="rules" ref="addFileMsg" label-width="80px">
        <el-form-item :label="$t('objFill.v101.administrative.wenjianmc')" prop="FolderName">
          <el-input type="text" maxLength='50' v-model='addFileMsg.FolderName'></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')"
          @click="outerVisible = false,addFileMsg.FolderName=''" />
        <input type="button" class="normalBtn" :value="$t('pub.sureBtn')" @click="submitForm('addFileMsg')" />
      </div>
    </el-dialog>

    <el-dialog custom-class='w400' :title="dialogTitle1" :visible.sync="outerVisible1" center>
      <el-form :model="updateFileMsg" :rules="rules1" ref="updateFileMsg" label-width="80px">
        <el-form-item :label="$t('system.query_airName')" prop="FileName">
          <el-input type="text" maxLength='50' v-model='updateFileMsg.FileName'></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="outerVisible1 = false" />
        <input type="button" class="normalBtn" :value="$t('pub.sureBtn')" @click="saveUpdateFile" />
      </div>
    </el-dialog>

    <el-dialog custom-class='w400' :title="dialogTitle2" :visible.sync="outerVisible2" @close="moveCancel" center>
      <el-tree :data="fileTreeList" :props="defaultProps" :check-strictly='true' @check-change="handleNodeChange"
        node-key="Id" show-checkbox accordion ref="tree">
      </el-tree>
      <div slot="footer" class="dialog-footer">
        <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="moveCancel" />
        <input type="button" class="normalBtn" :value="$t('pub.sureBtn')" @click="saveMoveFiles" />
      </div>
    </el-dialog>

    <el-dialog custom-class='w800 shareDocumentDialog' :title="dialogTitle3" :visible.sync="outerVisible3" center>
      <div class="documentDialogNav">
        <div @click="shareGroup">
          <i class="iconfont icon-user11"></i>{{$t('objFill.v101.administrative.jituan')}}
          <div v-if='shareMsg.shareType==4' class="checkIcon"></div>
        </div>
        <div @click="shareDeparment">
          <i class="iconfont icon-user11"></i>{{$t('admin.admin_Department')}}
          <div v-if='shareMsg.shareType==1' class="checkIcon"></div>
        </div>
        <div @click="shareRole">
          <i class="iconfont icon-user11"></i>{{$t('admin.admin_Post')}}
          <div v-if='shareMsg.shareType==2' class="checkIcon"></div>
        </div>

        <div @click="shareMenber">
          <i class="iconfont icon-user11"></i>{{$t('system.table_staffs')}}
          <div v-if='shareMsg.shareType==3' class="checkIcon"></div>
        </div>
      </div>
      <div v-if="shareMsg.shareType==4" class="myDocumentShareDiv">
        <div style="height:400px;padding:20px;font-size:15px;">
          {{$t('objFill.v101.administrative.fenxdzgjt')}}
        </div>
      </div>
      <div v-if='shareMsg.shareType==1' class="myDocumentShareDiv">
        <div class="myDocumentShareTree">
          <el-tree :data="departmentList" ref="treeDepartmentList" node-key="DepartmentId" :check-strictly='true'
            show-checkbox :render-after-expand="false" :props="defaultProps2" @check-change="DepartmentListNodeChange">
          </el-tree>
        </div>
        <div class="myDocumentShareObject">
          <ul>
            <li v-for="item in ckdDepartmentList">{{item.name}}
              <i @click="deleteDepartment(item.id)" class="el-icon-circle-close"></i>
            </li>
          </ul>
        </div>
      </div>
      <div v-if='shareMsg.shareType==2' class="myDocumentShareDiv">
        <div class="myDocumentShareTree">
          <el-tree :data="roleList" ref="treeRole" node-key="DepartmentId" :check-strictly='true' show-checkbox
            :render-after-expand="false" :props="defaultProps1" @check-change="roleListNodeChange">
          </el-tree>
        </div>
        <div class="myDocumentShareObject">
          <ul>
            <li v-for="item in ckdRoleList">{{item.name}}
              <i @click="deleteRole(item.id)" class="el-icon-circle-close"></i>
            </li>
          </ul>
        </div>
      </div>
      <div v-if='shareMsg.shareType==3' class="myDocumentShareDiv">
        <div class="myDocumentShareTree">
          <el-tree :data="menberList" ref="treeMenber" node-key="DepartmentId" :check-strictly='true' show-checkbox
            :render-after-expand="false" :props="defaultProps3" @check-change="MenberListNodeChange">
          </el-tree>
        </div>
        <div class="myDocumentShareObject">
          <ul>
            <li v-for="item in ckdMenberList">{{item.name}}
              <i @click="deleteMenber(item.id)" class="el-icon-circle-close"></i>
            </li>
          </ul>
        </div>
      </div>
      <div slot="footer" class="dialog-footer">
        <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="outerVisible3=false" />
        <input type="button" class="normalBtn" :value="$t('pub.sureBtn')" @click="saveShareDocument" />
      </div>
    </el-dialog>


    <el-dialog custom-class='w800' :title="dialogTitle4" :visible.sync="outerVisible4" center>
      <video :src="moviePath" controls="controls" style="width: 100%;">
        your browser does not support the video tag
      </video>
      <div slot="footer" class="dialog-footer">
        <input type="button" class="normalBtn" :value="$t('pub.closeSel')" @click="outerVisible4=false" />
      </div>
    </el-dialog>


    <div v-if='audioIsShow'
      style="position: fixed; bottom: 100px; right: 20px; z-index: 999; border:1px solid #ccc; padding: 10px; background: #eee;">
      <i class="el-icon-circle-close-outline" style="float: right; cursor: pointer;"
        @click="audioIsShow=false,audioPath=''"></i>
      <p style="font-size: 12px; margin: 0 0 10px 0;">{{audioName}}</p>
      <audio :src="audioPath" controls="controls">
        Your browser does not support the audio tag.
      </audio>
    </div>
    <div v-if='picIsShow' class="viewBigPicLayer">
      <i class="el-icon-circle-close-outline clolseViewBigPicLayer" @click="picIsShow=false,picObj=[]"></i>
      <el-carousel height="600px" :initial-index='initialIndex' :interval="5000" trigger="click">
        <el-carousel-item v-for="(item,index) in picObj" :key="index">
          <div class="inlineDiv ownScrollbarStyle"><img :src="item" /></div>
        </el-carousel-item>
      </el-carousel>
    </div>

    <el-dialog custom-class='w400' :title="$t('objFill.v101.administrative.yasuoxz')" :visible.sync="yzmVisible" center>
      <p>
        <span>{{$t('objFill.yanzhengma')}} : </span>
        <el-input class='w150' type="text" :placeholder="$t('objFill.qingshuruyzm')" v-model="picLyanzhengma"></el-input>
        <input type="button" @click="createCode" class="DocumentLoadVerification" v-model="checkCode" />
      </p>
      <div slot="footer" class="dialog-footer">
        <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="yzmVisible=false" />
        <input type="button" class="normalBtn" :value="$t('pub.sureBtn')" @click="downloadTotal()" />
      </div>
    </el-dialog>
    <a target="_blank" style="display:none" id="blankLink"></a>
  </div>
</template>

<script>
  //	let browserMD5File = require('browser-md5-file');
  export default {
    data() {
      return {
        code: '',
        picLyanzhengma: '',
        checkCode: '',
        yzmVisible: false,

        initialIndex: 0,
        picObj: [],
        picIsShow: false,
        audioIsShow: false,
        outerVisible4: false,
        dialogTitle4: '',
        moviePath: '',
        audioPath: '',
        picPath: '',
        audioName: '',
        headers: {
          'Content-Type': 'application/octet-stream'
        },
        defaultProps: {
          children: 'ChildFolderList',
          label: 'FolderName',
        },
        defaultProps1: {
          children: 'ChildList',
          label: 'DepartmentName',
          disabled: "Disabled"
        },
        defaultProps2: {
          children: 'ChildList',
          label: 'DepartmentName',
          disabled: "Disabled"
        },
        defaultProps3: {
          children: 'ChildList',
          label: 'DepartmentName',
          disabled: "Disabled"
        },
        outerVisible: false,
        dialogTitle: '',
        outerVisible1: false,
        dialogTitle1: '',
        outerVisible2: false,
        dialogTitle2: '',
        outerVisible3: false,
        dialogTitle3: '',
        isCkedAll: false,
        //请求数据
        fileList: [], //文件夹
        notFileList: [], //文件
        saveMsg: [],
        msg: {
          ParentId: '0',
          FolderName: '',
          EmployeeId: 0
        },
        addFileMsg: {
          FolderName: '',
          ParentId: '0',
          FolderId: '',
        },
        updateFileMsg: {
          FileId: '0',
          FileName: '0'
        },
        MoveMsg: {
          FolderId: '0'
        },
        shareMsg: {
          shareType: '1',
          fileIds: [],
          targetIds: '',
          folderIds: []
        },
        //返回数据
        curIndex: -1,
        list: [],
        fileTreeList: [],
        NavigationList: [],
        WjId: [],
        WjjId: [],
        arr: [],
        departmentList: [],
        ckdDepartmentList: [],
        ckdDepartmentListId: [],
        roleList: [],
        ckdRoleList: [],
        ckdRoleListId: [],
        menberList: [],
        ckdMenberList: [],
        ckdMenberListId: [],
        allLength: 0,
        rules: { //表单验证
          FolderName: [{
            required: true,
            message: this.$t('objFill.v101.administrative.qingshurwjjmc') ,
            trigger: 'blur'
          }]
        },
        rules1: { //表单验证
          FileName: [{
            required: true,
            message: this.$t('objFill.v101.administrative.qingsrwjmc') ,
            trigger: 'blur'
          }]
        },
        srearchKey: ""
      }

    },
    filters: {
      FileSizeFormat(value) {
        if (value == null) {
          return '-'
        }
        if (value != null) {
          if (value / 1024 < 1) { //kb
            return value + 'KB'
          }
          if (value / 1024 > 1 && value / (1024 * 1024) < 1) { //mb
            return (value / 1024).toFixed(2) + 'M'
          }
          if (value / (1024 * 1024) > 1) { //G
            return (value / (1024 * 1024)).toFixed(2) + 'G'
          }
        }

      }
    },
    watch: {

    },
    methods: {
      // 图片验证码
      createCode() {
        //先清空验证码的输入
        this.code = "";
        this.checkCode = "";
        this.picLyanzhengma = "";
        //验证码的长度
        var codeLength = 4;
        //随机数
        var random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
          'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
        for (var i = 0; i < codeLength; i++) {
          //取得随机数的索引(0~35)
          var index = Math.floor(Math.random() * 36);
          //根据索引取得随机数加到code上
          this.code += random[index];
        }
        //把code值赋给验证码
        this.checkCode = this.code;
      },
      analyzeItem(obj) {
        let typeArr = [{
            stringArr: 'GIF|JPG|JPEG|PNG|BMP',
            type: 1
          },
          {
            stringArr: 'MP3|OGG|AU|AIFF|VQF',
            type: 2
          },
          {
            stringArr: 'AVI|WMV|MPEG|MP4|MOV|MKV|FLV|F4V|M4V|RMVB|RM|3GP|DAT|TS|MTS|VOB',
            type: 3
          },
          {
            stringArr: 'DOCX|DOC|XLSX|XLS|PPT|PPTX',
            type: 4
          },
          {
            stringArr: 'PDF',
            type: 5
          },
        ]
        let fileTypeNumber; // 判断文件预览类型;  1 图片,2音频,3视频,4,office,, 5 PDF , 6 txt     default其他
        let fileType = obj.FilePath.substring(obj.FilePath.lastIndexOf('.') + 1, obj.FilePath.length).toUpperCase()
        typeArr.forEach(x => {
          if (x.stringArr.indexOf(fileType) != '-1') {
            fileTypeNumber = x.type
          }
        })
        switch (fileTypeNumber) {
          case 1:
            this.list.forEach(item => {
              if (item.DataType == 2) {
                let fileType = item.FolderName.substring(item.FolderName.lastIndexOf('.') + 1, item.FolderName
                  .length).toUpperCase()
                if ('GIF|JPG|JPEG|PNG|BMP'.indexOf(fileType) != -1) {
                  this.picObj.push(item.FilePath)
                }
              }
            })

            this.picObj.forEach((x, i) => {
              if (x == obj.FilePath) {
                this.initialIndex = i
                return false
              }

            })
            this.picIsShow = true
            //this.picPath=obj.FilePath
            break;
          case 2:
            this.audioIsShow = true
            this.audioName = obj.FolderName
            this.audioPath = obj.FilePath
            break;
          case 3:
            this.outerVisible4 = true
            this.dialogTitle4 = obj.FolderName
            this.moviePath = obj.FilePath
            break;
          case 4:
            window.open("https://view.officeapps.live.com/op/view.aspx?src=" + obj.FilePath)
            break;
          case 5:
            this.previewPDF(obj.FilePath)
            break;
          default:
            this.$message.warning(this.$t('objFill.v101.administrative.gaiwjbzcylqxzxgrj'))
            break;
        }

      },
      handleExceed(file, fileList) {
        this.$message.warning(this.$t('objFill.v101.administrative.yiczdwgwj'))
        return
      },
      uploadFileBtn(file) { //上传
        if (file.file.size > 1024 * 1024 * 100) {
          this.$message.warning(this.$t('adm.adm_filenotmoreM'))
          return
        }
        let that = this
        let newArr = [];
        newArr.push(file.file)
        let path = "/Upload/Temporary/"
        this.$message.info(this.$t('tips.shangchuanzhong'))
        this.UploadSelfFileT(path, newArr, x => {
          let fileSize = file.file.size < 1024 ? file.file.size : (file.file.size / 1024).toFixed(0);
          this.saveMsg = []
          this.saveMsg.push({
            Path: x.data.FilePath,
            FileName: file.file.name,
            MD5Sign: file.file.uid,
            FileSize: fileSize,
            FolderId: this.msg.ParentId
          })
          that.apipost('user_cloud_SaveFile', this.saveMsg, res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.$refs.upload.clearFiles();
              this.getList()
            } else {
              this.$message.error(res.data.message);
              this.$refs.upload.clearFiles();
            }
          }, err => {})
        });
      },
      dowloadSingle() {
        let objKey = [];
        this.list.forEach(item => {
          if (item.DataType == 2) {
            for (let i = 0; i < this.notFileList.length; i++) {
              if (this.notFileList[i] == item.Id) {
                let reg = /^http(s)?:\/\/(.*?)\//
                this.downloadFileRename(item.FilePath.replace(reg, ''), item.FolderName);
              }
            }
          }
        })
      },
      downloadOne(obj) {
        if (obj.DataType == 0) {
          this.yzmVisible = true
          this.createCode()
          this.fileList = []
          this.notFileList = []
          this.fileList.push(obj.Id)
        }
        if (obj.DataType == 2) {
          let reg = /^http(s)?:\/\/(.*?)\//
          let dom = document.querySelector("#blankLink")
          dom.href = obj.FilePath
          dom.click()
          return
          this.downloadFileRename(obj.FilePath.replace(reg, ''), obj.FolderName);
        }
      },
      downloadTotal() {
        if (this.picLyanzhengma.toLocaleUpperCase() == this.checkCode) {
          // let pageData = document.getElementById('pdfNode').innerHTML
          let urlObj = this.domainManager()
          let _this = this
          this.$http({
            headers: {
              'Content-Type': 'application/json'
            },
            method: 'post',
            url: urlObj.DomainUrl + '/api/file/GetPackageFile',
            data: {
              msg: {
                "FolderIdStr": this.fileList,
                "FileIdStr": this.notFileList
              }
            }
          }).then(res => {
            if (res.data.resultCode === 1) {
              setTimeout(() => {
                let sign = 'title'
                const a = document.createElement('a');
                a.setAttribute('download', '');
                a.setAttribute('href', res.data.data);
                a.click();
                _this.deletePackageFile(res.data.data, urlObj.DomainUrl)
              }, 1000)
            } else {
              this.Error(this.$t('objFill.huoqusb'));
            }
          }).catch(err => {

          })
        }
      },
      deletePackageFile: function (path, urlObj) {
        this.$http({
            headers: {
              'Content-Type': 'application/json'
            },
            method: 'post',
            url: urlObj + '/api/file/DelPackageFile',
            data: {
              msg: {
                "Path": path
              }
            }
          }).then(res => {}).catch(err => {})
      },
      

      // 	this.yzmVisible=false
      // 	this.$message.info(this.$t('objFill.v101.administrative.wenjianysqdd'))
      // 	this.apipost('user_cloud_GetPackageFile', {
      // 		FolderIdStr: this.fileList,
      // 		FileIdStr: this.notFileList
      // 	}, res => {
      // 		if(res.data.resultCode == 1) {
      // 			const link = document.createElement('a');
      // 			let _loadUrl = this.domainManager().DomainUrl;
      // 			link.href = _loadUrl+res.data.data;
      // 			document.body.appendChild(link);
      // 			link.click();
      // 			this.apipost('user_cloud_DelPackageFile',{Path:link.href},res=>{
      // 			},err=>{})
      // 		}else{
      // 			this.$message.error(res.data.message)
      // 		}
      // 	}, err => {})
      // }else{
      // 	this.$message.error(this.$t('objFill.v101.administrative.yanzhnegmcw'))
      // }

      enterTr(index) {
        this.curIndex = index
      },
      leaveTr() {
        this.curIndex = -1;
      },
      checkedAll() {
        if (this.isCkedAll == true) {
          this.fileList = []
          this.notFileList = []
        } else {
          this.WjjId.forEach(item => {
            this.fileList.push(item)
          })
          this.WjId.forEach(item => {
            this.notFileList.push(item)
          })
        }
      },
      ckeckedOne() {
        if (this.fileList.length + this.notFileList.length < this.allLength) {
          this.isCkedAll = false
        } else {
          this.isCkedAll = true
        }
      },
      openAddFilesDialog() {
        this.dialogTitle = this.$t('objFill.v101.administrative.xinjianwjj')
        this.outerVisible = true
      },
      addFiles() {
        this.apipost('user_cloud_AddFolder', this.addFileMsg, res => {
          if (res.data.resultCode == 1) {
            this.$message.success(res.data.message);
            this.getList()
            this.outerVisible = false
            this.addFileMsg.FolderName = ''

          } else {
            this.$message.error(res.data.message)
          }
        }, err => {})
      },
      deleteFiles() {
        this.$confirm(this.$t('objFill.v101.administrative.shancwjfxzwjjbs'), this.$t('tips.tips'), {
          confirmButtonText: this.$t('pub.sureBtn'),
          cancelButtonText: this.$t('pub.cancelBtn'),
          type: 'warning'
        }).then(() => {
          this.apipost('user_cloud_DelFolder', {
            FolderIdStr: this.fileList,
            FileIdStr: this.notFileList
          }, res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.getList()
            } else {
              this.$message.error(res.data.message)
            }
          }, err => {})
        }).catch(() => {
          this.$message.info(this.$t('objFill.quxiaoshanc'));
        });
      },
      deleteOne(obj) {
        let fileList = []
        let notFileList = []
        let confirmMsg = ''
        if (obj.DataType == 0) { //文件夹
          fileList.push(obj.Id)
          confirmMsg = this.$t('objFill.v101.administrative.shancwjjhfzjbs')

        }
        if (obj.DataType == 2) { //文件
          notFileList.push(obj.Id)
          confirmMsg = this.$t('objFill.v101.administrative.shancwjfxzwjjbs')
        }
        this.$confirm(confirmMsg, this.$t('tips.tips'), {
          confirmButtonText: this.$t('pub.sureBtn'),
          cancelButtonText: this.$t('pub.cancelBtn'),
          type: 'warning'
        }).then(() => {
          this.apipost('user_cloud_DelFolder', {
            FolderIdStr: fileList,
            FileIdStr: notFileList
          }, res => {
            if (res.data.resultCode == 1) {
              this.$message.success(res.data.message);
              this.getList()
            } else {
              this.$message.error(res.data.message)
            }
          }, err => {})
        }).catch(() => {
          this.$message.info(this.$t('objFill.quxiaoshanc'));
        });
      },
      moveFiles() {
        this.getTreeList()
        this.dialogTitle2 = this.$t('objFill.v101.administrative.yidongwenj')
        this.outerVisible2 = true
      },
      handleNodeChange(data, checked) {
        if (checked) {
          this.arr.push(data.Id)
          this.$refs.tree.setCheckedKeys([data.Id]);
          this.MoveMsg.FolderId = data.Id;
        } else {
          if (this.arr.length == 1) {
            this.arr = []
            this.MoveMsg.FolderId = '0'
          } else {
            this.arr = this.arr.slice(this.arr.length - 1)
            this.MoveMsg.FolderId = this.arr[this.arr.length - 1]
          }
        }
      },
      saveMoveFiles() {
        this.MoveMsg.FolderIdStr = this.fileList
        this.MoveMsg.FileIdStr = this.notFileList
        this.$refs.tree.setCheckedKeys([]);
        this.apipost('user_cloud_BatchFolderMove', this.MoveMsg, res => {
          if (res.data.resultCode == 1) {
            this.$message.success(res.data.message);
            this.outerVisible2 = false;
            this.getList()
          } else {
            this.$message.error(res.data.message)
          }
        }, err => {})
      },
      openShareOneDialog(obj) {
        if (obj.DataType == 0) {
          this.fileList = []
          this.notFileList = []
          this.fileList.push(obj.Id)
        }
        if (obj.DataType == 2) {
          this.fileList = []
          this.notFileList = []
          this.notFileList.push(obj.Id)
        }
        this.outerVisible3 = true
        this.dialogTitle3 = this.$t('objFill.v101.administrative.fenxwjwjj')
        this.shareMsg.shareType = 1;
        this.getDepartment()
        this.getRole()
        this.getMenber()
      },
      openShareDialog() {
        this.outerVisible3 = true
        this.dialogTitle3 = this.$t('objFill.v101.administrative.fenxwjwjj')
        this.shareMsg.shareType = 1;
        this.getDepartment()
        this.getRole()
        this.getMenber()
      },
      //按照集团分享
      shareGroup() {
        this.shareMsg.shareType = 4;
      },
      shareDeparment() {
        this.shareMsg.shareType = 1
        this.ckdRoleList = []
        this.ckdRoleListId = []
        this.ckdMenberList = []
        this.ckdMenberListId = []
      },
      shareRole() {
        this.shareMsg.shareType = 2
        this.ckdDepartmentList = []
        this.ckdDepartmentListId = []
        this.ckdMenberList = []
        this.ckdMenberListId = []
      },
      shareMenber() {
        this.shareMsg.shareType = 3
        this.ckdDepartmentList = []
        this.ckdDepartmentListId = []
        this.ckdRoleList = []
        this.ckdRoleListId = []
      },
      getDepartment() { //部门
        this.apipost('app_get_GetCompanyDepartmentListTree', {}, res => {
          this.departmentList = res.data.data
        }, err => {})
      },
      DepartmentListNodeChange(data, checked) {
        if (checked) {
          this.ckdDepartmentList.push({
            name: data.DepartmentName,
            id: data.DepartmentId
          })
          this.ckdDepartmentListId.push(data.DepartmentId)
        }
        if (!checked) {
          if (this.ckdDepartmentList.findIndex(item => item.id === data.DepartmentId) != -1) {
            this.ckdDepartmentList.splice(this.ckdDepartmentList.findIndex(item => item.id === data.DepartmentId), 1)
          }
          if (this.ckdDepartmentListId.findIndex(item => item === data.DepartmentId) != -1) {
            this.ckdDepartmentListId.splice(this.ckdDepartmentListId.findIndex(item => item === data.DepartmentId), 1)
          }
        }
      },
      deleteDepartment(id) {
        this.ckdDepartmentList.splice(this.ckdDepartmentList.findIndex(item => item.id === id), 1)
        this.ckdDepartmentListId.splice(this.ckdDepartmentListId.findIndex(item => item === id), 1) //删除相同id
        this.$refs.treeDepartmentList.setCheckedKeys(this.ckdDepartmentListId);
      },

      getRole() { //岗位
        this.apipost('WorkFlow_get_GetCompanyDepartMentPost', {}, res => {
          this.roleList = res.data.data
        }, err => {})
      },
      roleListNodeChange(data, checked) {
        if (data.Type == 2 && checked) {
          this.ckdRoleList.push({
            name: data.DepartmentName,
            id: data.DepartmentId
          })
          this.ckdRoleListId.push(data.DepartmentId)
        }
        if (data.Type == 2 && !checked) {
          if (this.ckdRoleList.findIndex(item => item.id === data.DepartmentId) != -1) {
            this.ckdRoleList.splice(this.ckdRoleList.findIndex(item => item.id === data.DepartmentId), 1)
          }
          if (this.ckdRoleListId.findIndex(item => item === data.DepartmentId) != -1) {
            this.ckdRoleListId.splice(this.ckdRoleListId.findIndex(item => item === data.DepartmentId), 1) //删除相同id
          }
        }
      },
      deleteRole(id) {
        this.ckdRoleList.splice(this.ckdRoleList.findIndex(item => item.id === id), 1)
        this.ckdRoleListId.splice(this.ckdRoleListId.findIndex(item => item === id), 1)
        //删除相同id
        this.$refs.treeRole.setCheckedKeys(this.ckdRoleListId);
      },

      getMenber() { //员工
        this.apipost('WorkFlow_get_GetCompanyDepartMentEmployee', {}, res => {
          this.menberList = res.data.data
        }, err => {})
      },
      MenberListNodeChange(data, checked) {
        if (data.Type == 2 && checked) {
          this.ckdMenberList.push({
            name: data.DepartmentName,
            id: data.DepartmentId
          })
          this.ckdMenberListId.push(data.DepartmentId)
        }
        if (data.Type == 2 && !checked) {
          if (this.ckdMenberList.findIndex(item => item.id === data.DepartmentId) != -1) {
            this.ckdMenberList.splice(this.ckdMenberList.findIndex(item => item.id === data.DepartmentId), 1)
          }
          if (this.ckdMenberListId.findIndex(item => item === data.DepartmentId) != -1) {
            this.ckdMenberListId.splice(this.ckdMenberListId.findIndex(item => item === data.DepartmentId), 1) //删除相同id
          }
        }
      },

      deleteMenber(id) {
        this.ckdMenberList.splice(this.ckdMenberList.findIndex(item => item.id === id), 1)
        this.ckdMenberListId.splice(this.ckdMenberListId.findIndex(item => item === id), 1) //删除相同id
        this.$refs.treeMenber.setCheckedKeys(this.ckdMenberListId);
      },
      saveShareDocument() {
        if (this.shareMsg.shareType == 1) {
          this.shareMsg.targetIds = this.ckdDepartmentListId.join(',')
        } else if (this.shareMsg.shareType == 2) {
          this.shareMsg.targetIds = this.ckdRoleListId.join(',')
        } else {
          this.shareMsg.targetIds = this.ckdMenberListId.join(',')
        }
        if (this.shareMsg.shareType == 4) {
          let userInfo = this.getLocalStorage();
          this.shareMsg.targetIds = userInfo.RB_Group_id;
        }
        this.shareMsg.fileIds = this.notFileList
        this.shareMsg.folderIds = this.fileList
        this.apipost('user_cloud_file_share', this.shareMsg, res => {
          if (res.data.resultCode == 1) {
            this.outerVisible3 = false
            this.$message.success(res.data.message)
          } else {
            this.$message.error(res.data.message)
          }
        }, err => {})
      },

      updateFiles(obj) {
        this.outerVisible = true;
        this.dialogTitle = this.$t('objFill.v101.administrative.xiugaiwjj')
        this.addFileMsg.FolderName = obj.FolderName;
        this.addFileMsg.FolderId = obj.Id;
      },
      updateOneFile(obj) {
        this.outerVisible1 = true;
        this.dialogTitle1 = this.$t('objFill.v101.administrative.xiugaiwj')
        let index = obj.FolderName.lastIndexOf('.')
        this.updateFileMsg.FileName = obj.FolderName.substring(0, index)
        this.updateFileMsg.FileId = obj.Id
      },
      saveUpdateFile() {
        this.apipost('user_cloud_UpdateFile', this.updateFileMsg, res => {
          if (res.data.resultCode == 1) {
            this.$message.success(res.data.message);
            this.outerVisible = false;
            this.getList()
          } else {
            this.$message.error(res.data.message)
          }
        }, err => {})
      },
      getList() {
        this.msg.EmployeeId = this.getLocalStorage().EmployeeId;
        this.msg.FolderName = this.srearchKey;
        this.apipost('user_cloud_GetFolderList', this.msg, res => {
          if (res.data.resultCode == 1) {
            this.list = res.data.data.data
            this.NavigationList = res.data.data.Navigation
            this.isCkedAll = false
            this.fileList = []
            this.notFileList = []
            this.allLength = res.data.data.data.length
            this.WjjId = []
            this.WjId = []
            res.data.data.data.forEach(item => {
              if (item.DataType == 0) {
                this.WjjId.push(item.Id)
                item.icons = this.loadFileICON('')
              }
              if (item.DataType == 2) {
                this.WjId.push(item.Id)
                let fileType = item.FolderName.substring(item.FolderName.lastIndexOf('.') + 1, item.FolderName
                  .length).toLowerCase()
                item.icons = this.loadFileICON(fileType)
              }
            })
          }
        }, err => {})
      },
      getNextLevel(id) {
        this.addFileMsg.ParentId = id
        this.msg.ParentId = id
        this.srearchKey = ''
        this.getList()
      },
      getTreeList() {
        this.apipost('user_cloud_GetFolderTreeList', {}, res => {
          if (res.data.resultCode == 1) {
            this.fileTreeList = res.data.data
          } else {}
        }, err => {})
      },
      submitForm(addMsg) { //提交创建、修改表单
        this.$refs[addMsg].validate((valid) => {
          if (valid) {
            this.addFiles()
          } else {
            return false;
          }
        });
      },
      closeChangeMachie(done) { //弹出框关闭初始化弹框内表单
        done();
        this.addFileMsg.FolderName = ''
      },
      doSearch() {
        this.getList();
      },
      moveCancel() {
        this.$refs.tree.setCheckedKeys([]);
        this.outerVisible2 = false;
      }
    },
    mounted() {
      let userInfo = this.getLocalStorage();
      this.getList()
    },
    created() {
      this.createCode()
    }
  }

</script>

<style>
  .myDocumentShareDiv {
    max-height: 400px;
    overflow: auto;
  }

  .myDocumentShareDiv::-webkit-scrollbar,
  .myDocumentShareTree::-webkit-scrollbar,
  .myDocumentShareObject::-webkit-scrollbar {
    /*滚动条整体样式*/
    width: 4px;
    /*高宽分别对应横竖滚动条的尺寸*/
    height: 1px;
  }

  .myDocumentShareDiv::-webkit-scrollbar-thumb,
  .myDocumentShareTree::-webkit-scrollbar-thumb,
  .myDocumentShareObject::-webkit-scrollbar-thumb {
    /*滚动条里面小方块*/
    border-radius: 4px;
    -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
    background: #c9c9c9;
  }

  .myDocumentShareDiv::-webkit-scrollbar-track,
  .myDocumentShareTree::-webkit-scrollbar-track,
  .myDocumentShareObject::-webkit-scrollbar-track {
    -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2);
    border-radius: 4px;
    background: #EDEDED;
  }

  .myDocumentShareTree {
    float: left;
    padding: 10px;
    width: 400px;
    max-height: 400px;
    overflow: auto;
    border-right: 1px solid #f9f9f9;
  }

  .myDocumentShareObject {
    padding: 10px;
    width: 380px;
    max-height: 400px;
    overflow: auto;
    float: left;
  }

  .myDocumentShareObject li {
    height: 24px;
    line-height: 24px;
    width: 100%;
  }

  .myDocumentShareObject li:hover {
    background: #f9f9f9;
  }

  .myDocumentShareObject li i {
    float: right;
    cursor: pointer;
    margin: 5px 0;
  }

  .myDocumentsNav {
    margin: 25px 0;
  }

  .myDocumentsTable input[type='checkbox'] {
    vertical-align: sub;
  }

  .myDocumentsTable td,
  .myDocumentsTable th {
    text-align: left !important;
    padding-left: 15px;
  }

  .myDocumentsLink {
    margin: 25px 0;
  }

  .myDocumentsLink>span {
    font-size: 12px;
    cursor: pointer;
    color: #E95252;
  }

  .myDocumentsLink>span:not(:last-of-type):hover {
    text-decoration: underline;
  }

  .myDocumentsLink>span:not(:last-of-type):after {
    content: '>';
    margin: 0 3px;
    color: #E95252;
    pointer-events: none;
  }

  .myDocumentsLink>span:last-child {
    color: #666;
    cursor: default;
  }

  .myDocumentUploadBtn {
    float: left;
    margin-right: 10px;
  }

  .shareDocumentDialog .el-dialog__body {
    padding: 0 !important;
  }

  .documentDialogNav {
    background: #E95252;
    height: 45px;
  }

  .documentDialogNav>div {
    display: inline-block;
    color: #fff;
    width: 90px;
    height: 26px;
    margin-left: 20px;
    position: relative;
    border-radius: 13px;
    background: rgba(0, 0, 0, .2);
    text-align: center;
    cursor: pointer;
  }

  .documentDialogNav>div .checkIcon {
    width: 0;
    height: 0;
    border-width: 0 5px 5px;
    position: absolute;
    left: 40px;
    top: 40px;
    border-style: solid;
    border-color: transparent transparent #fff;
    /*透明 透明  灰*/
  }

  .DocumentLoadVerification {
    width: 120px;
    height: 30px;
    border-radius: 4px;
    letter-spacing: 5px;
    border: none;
    background: #f56c6c;
    color: #eee;
    cursor: pointer;
  }

</style>