<template>
  <el-container v-loading="loading">
    <el-container id="repositoryList">
      <el-main :style="{'height': mainHeight}">
        <div style="width: 100%;height: 100%;overflow: auto;display: inline">
          <div style="margin: 12px 10px 10px 10px;">
            <div style="margin-bottom: 10px;margin-left: 10px;">
              <div style="min-width:50%;display: inline-block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;">
                <template v-for="(item, i) in repositoryPathData">
                  <label v-if="i != repositoryPathData.length-1" style="font-size: 14px;color: #6F91B9;">
                    <span class="repository-path-title" style="cursor: pointer;" @click="positionRepositoryPath(item.id, item.versionId)">{{item.name}}</span>
                    <i class="awsui-iconfont">&nbsp;&#xe717;&nbsp;</i>
                  </label>
                  <label v-if="i == repositoryPathData.length-1" style="font-size: 14px;color: #384148">
                    <span class="cur-title">
                      <span @click="initData">{{item.name}}</span>
                    <!--面包屑 中文件，文件夹的操作-->
                    
                      <div v-if="undefined != mainRepository" style="width: 16px; margin-left: 10px;" class="cur-title-operate">
                          <div class="operate-icon-display">
                            <el-dropdown
                                    :hide-on-click="true"
                                    trigger="click"
                                    placement="bottom-end">
                                <span class="el-dropdown-link">
                                    <i class="iconfont icon-operate" style="cursor: pointer;">&#xe63c;</i>
                                </span>
                                <el-dropdown-menu slot="dropdown" style="min-width: 200px;">
                                  <el-dropdown-item v-if="mainRepository.folder && havingWritePerm" class="el-dropdown-row" @click.native="openUpdateFolder(mainRepository.id,mainRepository.name,mainRepository.desc,mainRepository.methodId,mainRepository.methodName)">
                                      <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">修改{{mainRepository.methodName}}</span></div>
                                  </el-dropdown-item>
                                  <el-dropdown-item v-if="!mainRepository.folder" class="el-dropdown-row" @click.native="openDesigner(mainRepository.id)">
                                      <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">打开模型</span></div>
                                  </el-dropdown-item>
                                  
                                  <el-dropdown-item v-if="(mainRepository.methodId =='default' && havingWritePerm) || mainRepository.methodId !='default'" divided/>
                                  
                                  <el-dropdown-item v-if="mainRepository.isFavorite" class="el-dropdown-row" @click.native="setFavorite('0', mainRepository.versionId, mainRepository.id)">
                                    <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"><i class="iconfont" style="font-size: 12px;color: #FFB800;">&#xe618;</i></span><span style="font-size: 12px;">取消收藏</span></div>
                                  </el-dropdown-item>
                                  <el-dropdown-item v-else class="el-dropdown-row" @click.native="setFavorite('1', mainRepository.versionId, mainRepository.id)">
                                    <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"><i class="iconfont" style="font-size: 12px;">&#xe630;</i></span><span style="font-size: 12px;">收藏</span></div>
                                  </el-dropdown-item>
                                  
                                  <el-dropdown-item v-if="havingWritePerm" class="el-dropdown-row" @click.native="moveFile(mainRepository.id)">
                                    <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">移动至</span></div>
                                  </el-dropdown-item>
                                  <el-dropdown-item v-if="havingWritePerm" class="el-dropdown-row" @click.native="copyFiles(mainRepository.id)">
                                    <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">创建副本</span></div>
                                  </el-dropdown-item>
                                  <el-dropdown-item class="el-dropdown-row" @click.native="exportFiles(mainRepository.id)">
                                    <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">导出</span></div>
                                  </el-dropdown-item>
                                  <el-dropdown-item v-if="havingRemovePerm" divided style="height: 30px;line-height: 30px;" @click.native="removeFiles(mainRepository.id)">
                                    <div class="text-important-color" style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"><i class="iconfont icon-lajitong1" style="font-size: 12px;"></i></span><span style="font-size: 12px;">删除模型</span></div>
                                  </el-dropdown-item>
                                  
                                </el-dropdown-menu>
                            </el-dropdown>
                          </div>
                      </div>
                    </span>
                  </label>
                </template>
              </div>
              <!-- 流程库批处理，应用安装且当前为流程分类下显示 -->
              <div v-if="batchAppVisible && uuid == 'process'" style="float:right;position:relative;right: 10px;display:inline-block;">
                <!-- 小组模式下不能进行批量创建 -->
                <awsui-button v-if="$store.getters.getTeamIdFn != null" id="batchCreateButton" visit-type="" style="width: 100px;margin: 0;border-bottom-right-radius: 0px;border-top-right-radius: 0px;" class="button-general-color-reverse" @click="batchCreateFn">批量创建</awsui-button>
                <!-- 批量替换 -->
                <awsui-button id="batchReplaceButton" style="width: 100px;margin: 0;border-bottom-left-radius: 0px;border-top-left-radius: 0px;" class="button-general-color" type="primary" @click="batchReplaceFn">批量替换</awsui-button>
              </div>
            </div>
            <div>
              <div ref="repositorysDiv" style="margin-left: 10px;margin-right: 10px;">
                <el-table
                  ref="table"
                  :row-style="{height:'46px'}"
                  :cell-style="{padding:'0px'}"
                  v-loading="tableLoading"
                  element-loading-text="拼命加载中"
                  :data="tableData"
                  style="width: 100%;"
                  :show-header=false
                  highlight-current-row
                  @cell-mouse-enter="showCheckbox"
                  @cell-mouse-leave="hideCheckbox"
                  :cell-class-name="hideCheckBoxCell"
                  @row-click="clickTableRow"
                  @selection-change="handlecheckedRepositorysChange">
                  <el-table-column
                    class-name="rowDropFilter el-table-column--selection"
                    type="selection"
                    width="40"
                    align="left">
                  </el-table-column>
                  <el-table-column
                    prop="main"
                    label="名称"
                    class-name="row-repository-title"
                    min-width="250px">
                    <template slot-scope="scope">
                      <div v-if="!scope.row.folder" :style="{'background-color': scope.row.icon.color}" class="icon-div-repository rowDropFilter">
                        <i class="awsui-iconfont icon-dynamic-repository" v-html="scope.row.icon.code"></i>
                      </div>
                      <div v-else class="icon-div-repository rowDropFilter">
                        <i class="awsui-iconfont icon-dynamic-repository" :style="{color: scope.row.icon.color, 'font-size': '32px'}" v-html="scope.row.icon.code"></i>
                      </div>
                      <div class="div-repository-title rowDropFilter">
                        <p class="text-general-color" style="cursor: pointer;" @click="positionTableRoleRepository(scope.row.id, scope.row.versionId, scope.row.childSize, scope.row.folder)">
                          {{scope.row.name}}
                        </p>
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="second"
                    label="修改日期"
                    width="300">
                    <template slot-scope="scope">
                      <div class="div-update-date">
                        <p>
                          {{scope.row.updateUser}} 于 {{scope.row.updateDate}}修改
                        </p>
                      </div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    class-name="rowDropFilter"
                    prop="operate"
                    label="操作"
                    align="right"
                    width="135">
                    <template slot-scope="scope">
                      <div style="width: 16px;display: inline-block;">
                        <div class="operate-icon-display">
                          <el-tooltip v-if="scope.row.folder && havingWritePerm" placement="bottom" :hide-after=2000>
                            <span slot="content">修改{{scope.row.methodName}}</span>
                            <i class="iconfont icon-operate" style="display: inline-block;cursor: pointer;" @click="openUpdateFolder(scope.row.id, scope.row.name, scope.row.desc, scope.row.methodId, scope.row.methodName)">&#xe8b5;</i>
                          </el-tooltip>
                          <el-tooltip v-if="!scope.row.folder" content="打开模型" placement="bottom" :hide-after=2000>
                            <i class="iconfont icon-operate" style="display: inline-block;cursor: pointer;" @click="openDesigner(scope.row.id)">&#xe8b5;</i>
                          </el-tooltip>
                        </div>
                      </div>
                      <div style="width: 16px;margin: 0 15px;display: inline-block;">
                        <div v-if="scope.row.isFavorite" style="display: inline-block;">
                          <el-tooltip content="取消收藏" placement="bottom" :hide-after=2000>
                            <i class="iconfont" style="cursor: pointer;color: #FFB800;" @click="setFavorite('0', scope.row.versionId, scope.row.id)">&#xe618;</i>
                          </el-tooltip>
                        </div>
                        <div v-if="!scope.row.isFavorite" class="non-favorite-display">
                          <el-tooltip content="收藏" placement="bottom" :hide-after=2000>
                            <i class="iconfont icon-operate" style="cursor: pointer;" @click="setFavorite('1', scope.row.versionId, scope.row.id)">&#xe630;</i>
                          </el-tooltip>
                        </div>
                      </div>
                      <div style="width: 16px;display: inline-block;margin-right: 5px;">
                        <div class="operate-icon-display">
                          <el-dropdown
                                  :hide-on-click="true"
                                  trigger="click"
                                  placement="bottom-end">
                          <span class="el-dropdown-link">
                            <i class="iconfont icon-operate" style="cursor: pointer;">&#xe63c;</i>
                          </span>
                            <el-dropdown-menu slot="dropdown" style="min-width: 200px;">
                              <el-dropdown-item v-if="scope.row.folder && havingWritePerm" class="el-dropdown-row" @click.native="openUpdateFolder(scope.row.id, scope.row.name, scope.row.desc, scope.row.methodId, scope.row.methodName)">
                                <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">修改{{scope.row.methodName}}</span></div>
                              </el-dropdown-item>
                              <el-dropdown-item v-if="!scope.row.folder" class="el-dropdown-row" @click.native="openDesigner(scope.row.id)">
                                <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">打开模型</span></div>
                              </el-dropdown-item>
                              <el-dropdown-item v-if="(scope.row.methodId=='default' && havingWritePerm) || scope.row.methodId!='default'" divided/>
                              <el-dropdown-item v-if="scope.row.isFavorite" class="el-dropdown-row" @click.native="setFavorite('0', scope.row.versionId, scope.row.id)">
                                <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"><i class="iconfont" style="font-size: 12px;color: #FFB800;">&#xe618;</i></span><span style="font-size: 12px;">取消收藏</span></div>
                              </el-dropdown-item>
                              <el-dropdown-item v-else class="el-dropdown-row" @click.native="setFavorite('1', scope.row.versionId, scope.row.id)">
                                <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"><i class="iconfont" style="font-size: 12px;">&#xe630;</i></span><span style="font-size: 12px;">收藏</span></div>
                              </el-dropdown-item>
                              <el-dropdown-item v-if="havingWritePerm" class="el-dropdown-row" @click.native="moveFile(scope.row.id)">
                                <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">移动至</span></div>
                              </el-dropdown-item>
                              <el-dropdown-item v-if="havingWritePerm" class="el-dropdown-row" @click.native="copyFiles(scope.row.id)">
                                <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">创建副本</span></div>
                              </el-dropdown-item>
                              <el-dropdown-item class="el-dropdown-row" @click.native="exportFiles(scope.row.id)">
                                <div style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"></span><span style="font-size: 12px;">导出</span></div>
                              </el-dropdown-item>
                              <el-dropdown-item v-if="havingRemovePerm" divided style="height: 30px;line-height: 30px;" @click.native="removeFiles(scope.row.id)">
                                <div class="text-important-color" style="height: 100%;width: 100%;font-size: 14px;"><span style="display: inline-block;width: 20px;"><i class="iconfont icon-lajitong1" style="font-size: 12px;"></i></span><span style="font-size: 12px;">删除模型</span></div>
                              </el-dropdown-item>
                            </el-dropdown-menu>
                          </el-dropdown>
                        </div>
                      </div>
                    </template>
                  </el-table-column>
                </el-table>
              </div>
            </div>
          </div>
        </div>
      </el-main>
      <el-aside v-if="isShow" width="280px" :style="{'height': (parseInt(mainHeight) - 5) + 'px', 'background-color': '#FAFAFB','position': 'relative','top': '5px'}">
        <div style="border-left: 1px solid #f2f2f2;width: 270px;height: 100%;">
          <!-- 名称和缩略图 -->
          <div>
            <div style="width:240px;min-height: 47px;margin-left:15px; margin-right:15px;">
              <div style="position:relative;padding-top: 12px;">
                <div v-if="!currRepositoryDetail.folder" class="icon-div-repository-detail" :style="{'background-color': currRepositoryDetail.iconColor}">
                  <i class="awsui-iconfont icon-repository-detail" v-html="currRepositoryDetail.iconCode"></i>
                </div>
                <div v-else class="icon-div-repository-detail">
                  <i class="awsui-iconfont icon-repository-detail" :style="{color: currRepositoryDetail.iconColor, 'font-size': '32px'}" v-html="currRepositoryDetail.iconCode"></i>
                </div>
                <div class="icon-repository-detail-title">
                  <span class="text-general-color">
                    {{currRepositoryDetail.name}}
                  </span>
                  <span class="text-second-color" style="display:inline-block;font-size:12px;-webkit-transform: scale(0.9);">(v{{currRepositoryDetail.version}})</span>
                </div>
              </div>
            </div>
            <!--图片-->
            <div style="height: 140px;margin:15px;position: relative;overflow: hidden;">
              <img v-if="currRepositoryDetail.photoType=='image'" style="border-radius: 4px;border:1px solid #F2F2F2;width:238px;" :src="currRepositoryDetail.photo" height="138px;">
              <div v-if="currRepositoryDetail.photoType=='icon'" style="background-color: #fff;border-radius: 4px;border:1px solid #F2F2F2;width:238px;height:138px;text-align: center;line-height: 138px;vertical-align: middle;">
                <i class="awsui-iconfont text-second-color" :style="{color: currRepositoryDetail.folder ? currRepositoryDetail.iconColor : '#909399', 'font-size': '60px'}" v-html="currRepositoryDetail.photo"></i>
              </div>
              <div class="repository-img-halve" :style="{'background':currRepositoryDetail.stateColor}">
                <span>{{currRepositoryDetail.state}}</span>
              </div>
            </div>
          </div>
          <!-- 操作 -->

          <div>
            <ul>
              <!-- 修改文件夹类型 条件：是文件夹类型建模方法 且 有小组写权限 -->
              <li v-if="currRepositoryDetail.folder && havingWritePerm" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="openUpdateFolder(currRepositoryDetail.id, currRepositoryDetail.name, currRepositoryDetail.desc, currRepositoryDetail.methodId, currRepositoryDetail.methodName)"><i class="iconfont icon-bianji5 aside-repository-operate-li-icon"></i><span>修改{{currRepositoryDetail.methodName}}</span></li>
              <!-- 打开文件类型 条件：是文件类型建模方法 -->
              <li v-if="!currRepositoryDetail.folder" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="openDesigner(currRepositoryDetail.id)"><i class="iconfont icon-bianji5  aside-repository-operate-li-icon"></i><span>打开文件</span></li>
              <!-- 文件的文件属性 条件：是文件类型建模方法 -->
              <li v-if="!currRepositoryDetail.folder" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="openRepositoryInfo('property')"><i class="iconfont icon-21file aside-repository-operate-li-icon"></i><span>文件属性</span></li>
              <!-- 文件的版本管理  条件：是文件类型建模方法-->
              <li v-if="!currRepositoryDetail.folder" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="openRepositoryInfo('version')"><i class="iconfont icon-jurassic_version aside-repository-operate-li-icon"></i><span>版本管理</span></li>
              <!-- 文件的附件管理 -->
              <li class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="openRepositoryInfo('upfile')"><i class="iconfont icon-wendangfujian aside-repository-operate-li-icon"></i><span>附件管理</span></li>
              <!-- 文件的流程手册预览 条件：安装了流程手册 且 安装了在线预览 且 流程大类下 且 不是文件夹类建模方法 且 不是evc-->
              <li v-if="outputPrInstall && onlineDocInstall && category == 'process' && !currRepositoryDetail.folder && currRepositoryDetail.methodId != 'process.evc'" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="createOutputPr(currRepositoryDetail.id)"><i class="iconfont icon-ziliaoshouce-xianxing aside-repository-operate-li-icon"></i><span>流程手册</span></li>
              <!-- 文件的串联分析 条件：流程大类下 且 不是文件夹类型建模方法 且安装了串联分析应用 -->
              <li v-if="category == 'process' && !currRepositoryDetail.folder && processLinkInstall" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="eteCascadeAnalysis(currRepositoryDetail.id)"><i class="iconfont icon-liuchengguanli- aside-repository-operate-li-icon"></i><span>串联分析</span></li>
              <!-- 文件的下载图片 条件：是文件类型建模方法 -->
              <li v-if="!currRepositoryDetail.folder" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="downloadPng(currRepositoryDetail.id)"><i class="iconfont icon-tupian aside-repository-operate-li-icon"></i><span>下载图片</span></li>
              <!-- 文件的导出文件 条件：是文件类型建模方法 -->
              <li v-if="!currRepositoryDetail.folder" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="exportFiles(currRepositoryDetail.id)"><i class="iconfont icon-daochu aside-repository-operate-li-icon"></i><span>导出文件</span></li>
              <!-- 文件夹的导出 -->
              <li v-else class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="exportFiles(currRepositoryDetail.id)"><i class="iconfont icon-daochu aside-repository-operate-li-icon"></i><span>导出{{currRepositoryDetail.methodName}}</span></li>
              <!-- 删除文件/文件夹 -->
              <template v-if="havingRemovePerm">
                <li v-if="!currRepositoryDetail.folder" class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="removeFiles(currRepositoryDetail.id)"><i class="iconfont icon-lajitong1 aside-repository-operate-li-icon"></i><span>删除文件</span></li>
                <li v-else class="general-bgcolor-text-hover text-general-color aside-repository-operate-li" @click="removeFiles(currRepositoryDetail.id)"><i class="iconfont icon-lajitong1 aside-repository-operate-li-icon"></i><span>删除{{currRepositoryDetail.methodName}}</span></li>
              </template>
            </ul>
          </div>

        </div>
      </el-aside>
    </el-container>
    <el-footer id="operateFooter" v-show="showFooter" style="height: 45px;padding: 0;" key="operateFooter">
      <div style="border-top: 1px solid #F2F2F2;height: 44px;">
        <div style="padding: 8px 8px 8px 34px;">
          <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange"></el-checkbox>
          <awsui-button v-if="havingWritePerm" style="width: 100px;margin-left: 15px;" class="button-general-color" type="primary" @click="moveFiles">移动至</awsui-button>
          <awsui-button v-if="havingWritePerm" style="width: 100px;" class="button-general-color-reverse" plain @click="copyFiles()">创建副本</awsui-button>
          <awsui-button style="width: 100px;" class="button-general-color-reverse" plain @click="exportFiles()">导出</awsui-button>
          <awsui-button v-if="havingRemovePerm" style="width: 100px;" class="button-general-color-reverse2" plain @click="removeFiles()">删除</awsui-button>
          <awsui-button style="width: 100px;" class="button-general-color-reverse3" plain @click="closeFooter">取消</awsui-button>
        </div>
      </div>
    </el-footer>
    <el-container>
      <RepositoryInfo ref="repositoryInfo"/>
    </el-container>
    <el-container id="repositoryListFolderDlg">
      <el-dialog
        title="修改文件夹"
        :visible.sync="folderDialog.dialogVisible"
        :modal-append-to-body=false
        :close-on-click-modal=false
        :close-on-press-escape=true
        :before-close="handleCloseFolder"
        width="600px">
        <div style="border: 1px solid #F2F2F2;padding: 0px 10px 10px 10px;">
          <awsui-form :model="folderDialog.folderForm" :rules="folderDialog.rules" ref="folderForm" label-position="top">
            <awsui-form-item label="名称" prop="name">
              <awsui-input v-model="folderDialog.folderForm.name"></awsui-input>
            </awsui-form-item>
            <awsui-form-item label="描述" prop="desc">
              <awsui-input type="textarea" v-model="folderDialog.folderForm.desc"></awsui-input>
            </awsui-form-item>
          </awsui-form>
        </div>
        <span slot="footer" class="dialog-footer">
        <awsui-button class="button-general-color" type="primary" @click="updateFolderSave('folderForm')">确定</awsui-button>
        <awsui-button @click="closeFolderDlg">取消</awsui-button>
      </span>
      </el-dialog>
      <awsui-dialog
              :title="customFolderDialog.title"
              :visible.sync="customFolderDialog.dialogVisible"
              :modal-append-to-body=false
              :close-on-click-modal=false
              :close-on-press-escape=true
              :border="false"
              width="800px">
        <div>
          <repository-info-property v-if="customFolderDialog.dialogVisible" :id="customFolderDialog.id" :repositoryRefresh="repositoryRefresh"/>
        </div>
      </awsui-dialog>
    </el-container>
    <PALRepositoryTree
            ref="moveRepository"
            :visible.sync="moveRepository.visible"
            :wsId="moveRepository.wsId"
            :teamId="moveRepository.teamId"
            :categorys="moveRepository.categorys"
            :multiple=false
            v-on:cancel="moveRepository.visible = false"
            v-on:getResult="saveMoveRepositoryResult"
            :title="moveRepository.title"
    ></PALRepositoryTree>
    <!-- 批处理dlg -->
    <batch-create
            ref="batchCreate"
            :visible.sync="batchCreate.visible"
            :methodCategory="uuid"
            v-on:getResult="closeBatchCreateFn"
    ></batch-create>
    <batch-replace
            :ref="batchReplace"
            :visible.sync="batchReplace.visible"
            :methodCategory="uuid"
            v-on:getResult="closeBatchReplaceFn"></batch-replace>
  </el-container>


</template>

<script>
  import RepositoryInfo from "./RepositoryInfo";
  import {newPageWin,openDesigner, newWin} from "../../api/commonFun";
  import PALRepositoryTree from "../../components/common/PALRepositoryTree/component";
  import awsuiAxios from "../../awsuiAxios";
  import RepositoryInfoProperty from "./RepositoryInfoProperty";
  import Sortable from 'sortablejs'
  import BatchCreate from "../batch/create";
  import BatchReplace from "../batch/replace";
  import bus from '../../eventBus'

  export default {
    name: "RepositoryList",
    components: {RepositoryInfoProperty, PALRepositoryTree, RepositoryInfo, BatchCreate, BatchReplace},
    props: {
      uuid: {
        type: String,
        default: ''
      },
      refreshTreeParentNode: {
        type: Function,
        default: null
      },
      refreshTreeNode: {
        type: Function,
        default: null
      },
      treeNode: {
        type: Object,
        default: null
      },
    },
    data(){
      return {
        loading: false,
        mainHeight: (parseInt(this.$store.getters.getTopMainHeightFn) - (this.showFooter ? 45 : 0)) + 'px',
        tableLoading: false,
        showFooter: false,
        repositoryPathData: [],
        isShow :true,
        category: '',
        batchAppVisible: false,
        batchDlg: '',
        tableData: [],
        mainRepository:{},
        isClickTreeRoot: false,
        processLinkInstall: false,// 串联分析应用是否安装
        outputPrInstall: false,// 流程手册是否安装
        onlineDocInstall: false,// 预览应用是否安装
        havingWritePerm: false,// 是否有新增、修改权限
        havingRemovePerm: false,// 是否有删除权限
        havingVersionManagePerm: false,// 是否有版本管理权限
        currRepositoryDetail: {
          name: '',
          id: '',
          desc: '',
          versionId: '',
          version: '',
          iconCode: '',
          iconColor: '',
          state: '',
          stateColor: '',
          isUse: false,
          isPublish: false,
          isApproval: false,
          isStop: false,
          photoType: 'icon',
          photo: '',
          methodId: '',
          methodName: '',
          folder: true,
          rowIndex: 0
        },
        checkAll: false,
        checkedRepositorys: [],// 多选已选中结果记录
        singleSelectedRepository: {},// 单个文件快捷菜单操作文件记录
        isIndeterminate: false,
        folderDialog: {
          dialogVisible: false,
          folderForm: {
            id: '',
            name: '',
            desc: ''
          },
          rules: {
            name: [
              { required: true, message: '请输入名称', trigger: 'blur' },
              { min: 1, max: 120, message: '长度在 1 到 120 个字符', trigger: 'blur' }
            ]
          }
        },
        customFolderDialog: {// 扩展的文件夹类建模方法
          dialogVisible: false,
          title: '',
          id: ''
        },
        moveRepository: {// pal文件树组件
          visible: false,
          title: '移动到',
          wsId: this.$store.getters.getWsIdFn,
          teamId: this.$store.getters.getTeamIdFn,
          categorys: '',
          type: 'batch'
        },
        batchCreate: {// 流程批量创建
          visible: false
        },
        batchReplace: {
          visible: false,

        },
        isFileSecurity: false,
        isHighSecurity: false,
      }
    },
    created() {
    },
    mounted() {
      this.initData();
      this.rowDrop();
    },
    methods: {
      handleCloseFolder(done) {
        this.folderDialog.dialogVisible = false;
        done();
      },
      openUpdateFolder(id, name, desc, methodId, methodName) {
        if (methodId == 'default') {// 默认文件夹
          this.folderDialog.folderForm.name = name;
          this.folderDialog.folderForm.desc = desc;
          this.folderDialog.folderForm.id = id;
          this.folderDialog.dialogVisible = true;
        } else {
          this.customFolderDialog.id = id;
          this.customFolderDialog.title = '修改' + methodName;
          this.customFolderDialog.dialogVisible = true;
        }
      },
      closeFolderDlg() {
        this.folderDialog.dialogVisible = false;
        this.folderDialog.folderForm.name = '';
        this.folderDialog.folderForm.desc = '';
        this.folderDialog.folderForm.id = '';
      },
      updateFolderSave(formName) {
        const that = this;
        that.$refs[formName].validate((valid) => {
          if (valid) {
            const name = that.folderDialog.folderForm.name;
            const desc = that.folderDialog.folderForm.desc;
            if (desc.length > 255) {
              that.$message({message: '[描述]不允许超过255个字符',type: 'warning'});
              return;
            }
            const id = that.folderDialog.folderForm.id;
            const wsId = that.$store.getters.getWsIdFn;
            const teamId = that.$store.getters.getTeamIdFn;
            const method = 'default';// 文件夹
            const data = {
              url:'jd',
              data:{
                cmd: 'com.actionsoft.apps.coe.pal_processlevel_folder_create_save',
                wsId: wsId,
                teamId: teamId,
                method: method,
                name: name,
                desc: desc,
                id: id
              }
            };
            // 查询数据
            awsuiAxios.post(data).then(function (ro) {
              if(ro.result == 'ok') {
                that.initData();
                if (that.refreshTreeParentNode) {
                  that.refreshTreeParentNode(id);
                }
                that.closeFolderDlg();
              }
            }).catch(error=>{
              console.log(error);
            })
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      initData() {
        const that = this;
        that.tableLoading = true;
        const wsId = that.$store.getters.getWsIdFn;
        const teamId = that.$store.getters.getTeamIdFn;
        const data = {
          url:'jd',
          data:{
            cmd: 'com.actionsoft.apps.coe.pal_processlevel_repository_child_data_query',
            wsId: wsId,
            teamId: teamId,
            id: that.uuid
          }
        };
        // 查询数据
        awsuiAxios.post(data).then(function (ro) {

          if(ro.result == 'ok') {
              if(ro.data.mainRepository.folder==false){
              bus.$emit("getisDisabled",true);
            }else{
              bus.$emit("getisDisabled",false);
            }

            const repositoryPathData = ro.data.repositoryPathData;
            that.repositoryPathData = repositoryPathData;
            that.isClickTreeRoot = ro.data.isClickTreeRoot;
            that.category = ro.data.category;
            that.moveRepository.categorys = ro.data.category;
            that.tableData = ro.data.tableData;
            that.mainRepository = ro.data.mainRepository;

            that.tableLoading = false;
            that.processLinkInstall = ro.data.processLinkInstall;
            that.outputPrInstall = ro.data.outputPrInstall;
            that.onlineDocInstall = ro.data.onlineDocInstall;
            that.havingWritePerm = ro.data.havingWritePerm;
            that.havingRemovePerm = ro.data.havingRemovePerm;
            that.havingVersionManagePerm = ro.data.havingVersionManagePerm;
            that.batchAppVisible = ro.data.batchAppVisible;
            that.batchDlg = ro.data.batchDlg;
            that.isHighSecurity = ro.data.isHighSecurity;
            that.isFileSecurity = ro.data.isFileSecurity;
            if(that.tableData.length==0){
              that.isShow = false;
            } else {
              if(undefined != ro.data.mainRepository){
                let row = {
                  id: ro.data.mainRepository.id
                }
                //加载tableData父级目录详情
                that.loadRepositoryDetail(row);
              }else{
                //加载tableData 第一个详情
                that.setCurrentRow(that.tableData[0]);
              }
            }
          }
        }).catch(error=>{
          console.log(error);
          that.tableLoading = false;
        })

      },
      setCurrentRow(row) {
        this.clickTableRow(row, null, null);
      },
      clickTableRow(row, column, event) {
        this.$refs.table.setCurrentRow(row);
        // 获取详情
        this.loadRepositoryDetail(row);
      },
      loadRepositoryDetail(row) {// 加载模型文件详情
        if (!row) {
          return;
        }
        const that = this;
        const data = {
          url:'jd',
          data:{
            cmd: 'com.actionsoft.apps.coe.pal_processlevel_repository_detail_data_query',
            wsId: that.$store.getters.getWsIdFn,
            teamId: that.$store.getters.getTeamIdFn,
            id: row.id,
          }
        };
        // 查询数据
        awsuiAxios.post(data).then(function (ro) {
          if(ro.result == 'ok') {
            that.currRepositoryDetail.name = ro.data.name;
            that.currRepositoryDetail.id = ro.data.id;
            that.currRepositoryDetail.desc = ro.data.desc;
            that.currRepositoryDetail.version = ro.data.version;
            that.currRepositoryDetail.iconCode = ro.data.iconCode;
            that.currRepositoryDetail.iconColor = ro.data.iconColor;
            that.currRepositoryDetail.isPublish = ro.data.isPublish;
            that.currRepositoryDetail.isUse = ro.data.isUse;
            that.currRepositoryDetail.isApproval = ro.data.isApproval;
            that.currRepositoryDetail.isStop = ro.data.isStop;
            that.currRepositoryDetail.photoType = ro.data.photoType;
            that.currRepositoryDetail.photo = ro.data.photo;
            that.currRepositoryDetail.methodId = ro.data.methodId;
            that.currRepositoryDetail.methodName = ro.data.methodName;
            that.currRepositoryDetail.folder = ro.data.folder;
            if (that.currRepositoryDetail.isApproval) {
              that.currRepositoryDetail.stateColor = '#1AA477';
              that.currRepositoryDetail.state = '审批中';
            } else if (that.currRepositoryDetail.isStop) {
              that.currRepositoryDetail.stateColor = '#D9001B';
              that.currRepositoryDetail.state = '已停用';
            } else if (that.currRepositoryDetail.isPublish) {
              that.currRepositoryDetail.stateColor = '#1AA477';
              that.currRepositoryDetail.state = '已发布';
            } else if (that.currRepositoryDetail.isUse) {
              that.currRepositoryDetail.stateColor = '#4E7FF9';
              that.currRepositoryDetail.state = '设计中';
            }
            that.currRepositoryDetail.rowIndex = row.index;
          }
        }).catch(error=>{
          console.log(error);
        })
      },
      openDesigner(id) {
        let that = this;
        if(that.isHighSecurity && that.isFileSecurity){
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_query',
              uuid: id,
            }
          };
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
                openDesigner(that.$store.getters.getTeamIdFn, id, that.$store.state.sessionId);
            }else{
              that.$message.error(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.$message.error(error.msg);
          })
        }else{
          openDesigner(this.$store.getters.getTeamIdFn, id, this.$store.state.sessionId);
        }
      },
      setFavorite(state, versionId, id) {
        if (state == '0') {// 取消收藏
          const that = this;
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_processlevel_favorite_cancel',
              wsId: that.$store.getters.getWsIdFn,
              teamId: that.$store.getters.getTeamIdFn,
              versionId: versionId
            }
          };
          // 查询数据
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
              that.initData();
            }
          }).catch(error=>{
            console.log(error);
          })
        } else {// 收藏
          const that = this;
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_processlevel_favorite_save',
              wsId: that.$store.getters.getWsIdFn,
              teamId: that.$store.getters.getTeamIdFn,
              versionId: versionId
            }
          };
          // 查询数据
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
              that.initData();
            }
          }).catch(error=>{
            console.log(error);
          })
        }
      },
      handleCheckAllChange(val) {// 全选事件
        if (val) {
          this.$refs.table.clearSelection();
          this.tableData.forEach(row => {
            this.$refs.table.toggleRowSelection(row);
          });
        } else {
          this.$refs.table.clearSelection();
        }
        this.isIndeterminate = false;
      },
      handlecheckedRepositorysChange(val) {// 多选变化事件
        const that = this;
        that.checkedRepositorys = val;
        let checkedCount = val.length;
        if (checkedCount > 0) {
          that.showFooter = true;
          //控制多选选中后不隐藏
          for (let i = 0; i < checkedCount; i++) {
            let index = that.tableData.indexOf(val[i]);
            const childNodes = that.tbody[0].childNodes;
            if (childNodes != undefined) {
              const selectChildNode = childNodes[index];
              const selectTd = selectChildNode.childNodes[0];
              if (selectTd && selectTd.querySelector(".el-checkbox__input")) {
                selectTd.querySelector(".el-checkbox__input").style.visibility = "visible"
              }
            }
          }
        } else {
          that.showFooter = false;
          for (let j = 0; j < that.tableData.length; j++) {
            const childNodes = that.tbody[0].childNodes;
            if (childNodes != undefined) {
              const selectChildNode = childNodes[j];
              const selectTd = selectChildNode.childNodes[0];
              if (selectTd && selectTd.querySelector(".el-checkbox__input")) {
                selectTd.querySelector(".el-checkbox__input").style.visibility = "hidden"
              }
            }
          }
        }
        that.refreshMainHeight();
        that.checkAll = checkedCount === that.tableData.length;
        that.isIndeterminate = checkedCount > 0 && checkedCount < that.tableData.length;
      },
      closeFooter() {
        this.handleCheckAllChange(false);
        this.showFooter = false;
        this.refreshMainHeight();
      },
      refreshMainHeight() {
        this.mainHeight = (parseInt(this.$store.getters.getTopMainHeightFn) - (this.showFooter ? 45 : 0)) + 'px';
      },
      hideCheckBoxCell(row) {
        return "hideCheckBoxCell";
      },
      showCheckbox(row, column, cell, event) {
        cell.parentNode.querySelector(".el-table-column--selection").querySelector(".el-checkbox__input").style.visibility = "visible";
      },
      hideCheckbox(row, column, cell, event) {
        let ck = cell.parentNode.querySelector(".el-table-column--selection").querySelector(".el-checkbox__input");
        if (ck != null && this.checkedRepositorys.indexOf(row) < 0) {
          ck.style.visibility = "hidden";
        }
      },
      moveFile(id) {// 移动文件（通过表格下拉菜单操作）
        this.moveRepository.type = 'single';
        for (let i = 0; i < this.tableData.length; i++) {
          if (this.tableData[i].id == id) {
            this.singleSelectedRepository = this.tableData[i];
            break;
          }
        }
        console.log(this.singleSelectedRepository)
        //主repository移动文件
        if(undefined == this.singleSelectedRepository.id || null == this.singleSelectedRepository.id){
          this.singleSelectedRepository = this.mainRepository;
        }
        this.moveRepository.visible = true;
      },
      moveFiles() {// 移动文件（多选批量）
        this.moveRepository.type = 'batch';
        if (this.checkedRepositorys.length == 0) {
          this.$message({message: '请选择移入的目标文件',type: 'warning'});
          return;
        }
        this.moveRepository.visible = true;
      },
      saveMoveRepositoryResult(data) {// 移动文件之后获取确定结果
        if (data.length == 0) {
          this.$message({message: '未选择要移入的目标文件，移动操作被取消',type: 'warning'});
          return;
        }
        this.moveRepository.visible = false;
        // 移动
        const that = this;
        let sourceData = JSON.stringify(that.checkedRepositorys);
        if (this.moveRepository.type == 'single') {
          let tmpArr = [];
          tmpArr.push(that.singleSelectedRepository);
          sourceData = JSON.stringify(tmpArr);
        }
        const params = {
          url:'jd',
          data:{
            cmd: 'com.actionsoft.apps.coe.pal_processlevel_move_save',
            sourceData: sourceData,
            targetData: JSON.stringify(data)
          }
        };
        //三员管理
        if(that.isHighSecurity && that.isFileSecurity){
          const originData = data;
          let tempArr = [];
          for(let i=0;i<that.checkedRepositorys.length;i++){
            let obj = that.checkedRepositorys[i];
            tempArr.push(obj.id);
          }
          const param = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_batch_query',
              uuids: JSON.stringify(tempArr),
              isSub: true
            }
          };
          //密级权限校验
          awsuiAxios.post(param).then(function (ro) {
            if(ro.result == 'ok') {
                let checkArr = ro.data.checkArr;
                if(checkArr.length<=0){
                  that.$message.error("无密级访问权限");
                }else{
                  let tempArr = [];
                  for(let i=0; i<checkArr.length;i++){
                    for(let j=0; j<that.checkedRepositorys.length; j++){
                      if(checkArr[i] === that.checkedRepositorys[j].id){
                        tempArr.push(that.checkedRepositorys[j]);
                      }
                    }
                  }
                  params.data.sourceData = JSON.stringify(tempArr);
                  // 查询数据
                  awsuiAxios.post(params).then(function (ro) {
                    if(ro.result == 'ok') {
                      that.$message({
                        message: '移动成功',
                        type: 'success'
                      });
                      if (that.refreshTreeNode) {
                        that.refreshTreeNode(data[0].pid);
                      }
                      if (that.refreshTreeParentNode) {
                        that.refreshTreeParentNode(that.uuid);
                      }
                      that.initData();
                    } else {
                      that.$message({message: ro.msg,type: 'warning'});
                    }
                  }).catch(error=>{
                    console.log(error);
                  })
                }
            }else{
              that.$message(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.$message.error(error.msg);
          })
        }else{
          // 查询数据
          awsuiAxios.post(params).then(function (ro) {
            if(ro.result == 'ok') {
              that.$message({
                message: '移动成功',
                type: 'success'
              });
              if (that.refreshTreeNode) {
                that.refreshTreeNode(data[0].pid);
              }
              if (that.refreshTreeParentNode) {
                that.refreshTreeParentNode(that.uuid);
              }
              that.initData();
            } else {
              that.$message({message: ro.msg,type: 'warning'});
            }
          }).catch(error=>{
            console.log(error);
          })
        }
      },
      copyFiles(id) {//复制文件
        const that = this;
        that.tableLoading = true;
        let sourceIds = [];
        if (id) {// 单个文件复制
          sourceIds.push(id);
        } else {// 多个文件复制
          let checkedData = that.checkedRepositorys;
          for (let i = 0; i < checkedData.length; i++) {
            sourceIds.push(checkedData[i].id);
          }
        }
        const targetId = that.uuid;
        const params = {
          url:'jd',
          data:{
            cmd: 'com.actionsoft.apps.coe.pal_processlevel_copy_save',
            targetId: targetId,
            sourceIds: JSON.stringify(sourceIds),
            wsId: that.$store.getters.getWsIdFn,
            teamId: that.$store.getters.getTeamIdFn
          }
        };
        //三员管理
        if(that.isHighSecurity && that.isFileSecurity){
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_batch_query',
              uuids: JSON.stringify(sourceIds),
              isSub: true
            }
          };
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
              let checkArr = ro.data.checkArr;
              if(checkArr.length<=0){
                that.tableLoading = false;
                that.$message.error("无密级访问权限");
              }else{
                params.data.sourceIds = JSON.stringify(checkArr);
                // 查询数据
                awsuiAxios.post(params).then(function (ro) {
                  if(ro.result == 'ok') {
                    that.$message({
                      message: '复制成功',
                      type: 'success'
                    });
                    if (targetId == id) {
                      if (that.refreshTreeParentNode) {
                        that.refreshTreeParentNode(that.uuid);
                      }
                    } else {
                      if (that.refreshTreeNode) {
                        that.refreshTreeNode(that.uuid);
                      }
                    }
                    that.initData();
                    that.tableLoading = false;
                  } else {
                    that.tableLoading = false;
                    that.$message(ro.msg);
                  }
                }).catch(error=>{
                  console.log(error);
                })
              }
            }else{
              that.tableLoading = false;
              that.$message(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.$message.error(error.msg);
          })
        }else{
          // 查询数据
          awsuiAxios.post(params).then(function (ro) {
            if(ro.result == 'ok') {
              that.$message({
                message: '复制成功',
                type: 'success'
              });
              if (targetId == id) {
                if (that.refreshTreeParentNode) {
                  that.refreshTreeParentNode(that.uuid);
                }
              } else {
                if (that.refreshTreeNode) {
                  that.refreshTreeNode(that.uuid);
                }
              }
              that.initData();
              that.tableLoading = false;
            } else {
              that.tableLoading = false;
              that.$message(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
          })
        }
      },
      exportFiles(id) {// 导出文件
        const that = this;
        that.loading = true;
        let repositoryIds = [];
        if (id) {// 单个文件导出
          repositoryIds.push(id);
        } else {// 多个文件导出
          let checkedData = that.checkedRepositorys;
          for (let i = 0; i < checkedData.length; i++) {
            repositoryIds.push(checkedData[i].id);
          }
        }
        const params = {
          url:'jd',
          data:{
            cmd: 'com.actionsoft.apps.coe.pal_pl_export_handle',
            repositoryIds: JSON.stringify(repositoryIds)
          }
        };
        //三员管理
        if(that.isHighSecurity && that.isFileSecurity){
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_batch_query',
              uuids: JSON.stringify(repositoryIds),
              isSub: false
            }
          };
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
                let checkArr = ro.data.checkArr;
                if(checkArr.length<=0){
                  that.loading = false;
                  that.$message.error("无密级访问权限");
                }else{
                  params.data.repositoryIds = JSON.stringify(checkArr);
                  // 查询数据
                  awsuiAxios.post(params).then(function (ro) {
                    that.loading = false;
                    if(ro.result == 'ok') {
                      that.$message({
                        message: '导出完成，正在下载...',
                        type: 'success'
                      });
                      const exportTitle = ro.data.exportTitle;
                      const exportCount = ro.data.exportCount;
                      const dcId = ro.data.dcId;
                      const params2 = {
                        url:'jd',
                        data:{
                          cmd: 'com.actionsoft.apps.coe.pal_pl_export',
                          exportTitle: exportTitle,
                          exportCount: exportCount,
                          dcId: dcId
                        }
                      };
                      // 查询数据
                      awsuiAxios.post(params2).then(function (r) {
                        if(r.result == 'ok') {
                          window.open(r.data.downLoadUrl);
                        } else {
                          that.$message(r.msg);
                        }
                      }).catch(error=>{
                        console.log(error);
                      })
                    } else {
                      that.$message(ro.msg);
                    }
                  }).catch(error=>{
                    console.log(error);
                  })
                }
            }else{
              that.tableLoading = false;
              that.$message(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.$message.error(error.msg);
          })
        }else{
          // 查询数据
          awsuiAxios.post(params).then(function (ro) {
            that.loading = false;
            if(ro.result == 'ok') {
              that.$message({
                message: '导出完成，正在下载...',
                type: 'success'
              });
              const exportTitle = ro.data.exportTitle;
              const exportCount = ro.data.exportCount;
              const dcId = ro.data.dcId;
              const params2 = {
                url:'jd',
                data:{
                  cmd: 'com.actionsoft.apps.coe.pal_pl_export',
                  exportTitle: exportTitle,
                  exportCount: exportCount,
                  dcId: dcId
                }
              };
              // 查询数据
              awsuiAxios.post(params2).then(function (r) {
                if(r.result == 'ok') {
                  window.open(r.data.downLoadUrl);
                } else {
                  that.$message(r.msg);
                }
              }).catch(error=>{
                console.log(error);
              })
            } else {
              that.$message(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
          })
        }

      },
      removeFiles(id) {
        this.$confirm('确定要删除吗？', '提示', {
          confirmButtonText: '确定',
          confirmButtonClass: 'button-general-color',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          const that = this;
          let repositoryIds = [];
          let delId = id;
          if (id) {// 单个文件删除
            repositoryIds.push(id);
          } else {// 多个文件删除
            let checkedData = that.checkedRepositorys;
            for (let i = 0; i < checkedData.length; i++) {
              repositoryIds.push(checkedData[i].id);
            }
          }
          const params = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_processlevel_remove',
              repositoryIds: JSON.stringify(repositoryIds),
              wsId: that.$store.getters.getWsIdFn,
              teamId: that.$store.getters.getTeamIdFn
            }
          };
          if(that.isHighSecurity && that.isFileSecurity){
            const param = {
              url:'jd',
              data: {
                cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_batch_query',
                uuids: JSON.stringify(repositoryIds),
                isSub: true
              }
            };
            awsuiAxios.post(param).then(function (ro) {
              if(ro.result == 'ok') {
                  let checkArr = ro.data.checkArr;
                  if(checkArr.length<=0){
                    that.$message.error("无密级访问权限");
                  }else{
                    params.data.repositoryIds = JSON.stringify(checkArr);
                    // 查询数据
                    awsuiAxios.post(params).then(function (ro) {
                      if(ro.result == 'ok') {
                        that.$message({
                          message: '已放入回收站',
                          type: 'success'
                        });
                        if (that.uuid.length < 36) {
                          if (that.refreshTreeNode) {
                            that.refreshTreeNode(that.uuid);
                          }
                          that.initData();
                        } else {
                          if(delId == that.mainRepository.id){
                            that.refreshTreeParentNode(that.uuid);
                          }else{
                            if (that.refreshTreeNode) {
                              that.refreshTreeNode(that.uuid);
                            }
                            that.initData();
                          }
                        }
                      } else {
                        that.$message(ro.msg);
                      }
                    }).catch(error=>{
                      console.log(error);
                    })
                  }
              }else{
                that.tableLoading = false;
                that.$message(ro.msg);
              }
            }).catch(error=>{
              console.log(error);
              that.$message.error(error.msg);
            })
          }else {
            // 查询数据
            awsuiAxios.post(params).then(function (ro) {
              if(ro.result == 'ok') {
                that.$message({
                  message: '已放入回收站',
                  type: 'success'
                });
                if (that.uuid.length < 36) {
                  if (that.refreshTreeNode) {
                    that.refreshTreeNode(that.uuid);
                  }
                  that.initData();
                } else {
                  if(delId == that.mainRepository.id){
                    that.refreshTreeParentNode(that.uuid);
                  }else{
                    if (that.refreshTreeNode) {
                      that.refreshTreeNode(that.uuid);
                    }
                    that.initData();
                  }
                }
              } else {
                that.$message(ro.msg);
              }
            }).catch(error=>{
              console.log(error);
            })
          }

        }).catch(() => {
        });
      },
      downloadPng(id) {// 下载图片
        const that = this;
        that.loading = true;
        const params = {
          url:'jd',
          data:{
            cmd: 'com.actionsoft.apps.coe.pal_pl_repository_download_png',
            uuid: id,
            type: 'image'
          }
        };
        //三员管理
        if(that.isHighSecurity && that.isFileSecurity){
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_query',
              uuid: id,
            }
          };
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
              // 查询数据
              awsuiAxios.post(params).then(function (ro) {
                that.loading = false;
                if(ro.result == 'ok') {
                  if (ro.data.url == '') {
                    that.$message({message: '检测到尚未进行作图，下载被取消',type: 'warning'});
                  } else {
                    that.$message({
                      message: '创建图片完成，正在下载...',
                      type: 'success'
                    });
                    window.open(ro.data.url);
                  }
                } else {
                  that.$message(ro.msg);
                }
              }).catch(error=>{
                console.log(error);
              })
            }else{
              that.loading = false;
              that.$message.error(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.loading = false;
            that.$message.error(error.msg);
          })
        }else{
          // 查询数据
          awsuiAxios.post(params).then(function (ro) {
            that.loading = false;
            if(ro.result == 'ok') {
              if (ro.data.url == '') {
                that.$message({message: '检测到尚未进行作图，下载被取消',type: 'warning'});
              } else {
                that.$message({
                  message: '创建图片完成，正在下载...',
                  type: 'success'
                });
                window.open(ro.data.url);
              }
            } else {
              that.$message(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
          })
        }
      },
      eteCascadeAnalysis(id) {// 串联分析
        const wsId = this.$store.getters.getWsIdFn;
        const teamId = this.$store.getters.getTeamIdFn;
        const appId = 'com.actionsoft.apps.coe.pal.processlink';
        let that = this;
        //三员管理
        if(that.isHighSecurity && that.isFileSecurity){
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_query',
              uuid: id,
            }
          };
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
                newPageWin('cascadeAnalysis', that.$store.state.sessionId, 'com.actionsoft.apps.coe.pal.processlink_ete_analysis_home', {wsId: wsId, teamId: teamId, appId: appId, uuid: id});
            }else{
              that.$message.error(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.$message.error(error.msg);
          })
        }else{
          newPageWin('cascadeAnalysis', this.$store.state.sessionId, 'com.actionsoft.apps.coe.pal.processlink_ete_analysis_home', {wsId: wsId, teamId: teamId, appId: appId, uuid: id});
        }
      },
      createOutputPr(id) {// 创建流程手册
        const that = this;
        const params = {
          url:'jd',
          data:{
            cmd: 'com.actionsoft.apps.coe.pal_outputreport_output_process_create',
            wsId: that.$store.getters.getWsIdFn,
            teamId: that.$store.getters.getTeamIdFn,
            fileId: id
          }
        };
        //三员管理
        if(that.isHighSecurity && that.isFileSecurity){
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_query',
              uuid: id,
            }
          };
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
                // 查询数据
                awsuiAxios.post(params).then(function (ro) {
                  if(ro.result == 'ok') {
                    const taskId = ro.data.taskId;
                    setTimeout(function(){
                      const params2 = {
                        url:'jd',
                        data:{
                          taskId: taskId,
                          cmd: 'com.actionsoft.apps.coe.pal_outputreport_output_process_preview'
                        }
                      };
                      awsuiAxios.post(params2).then(function (r) {
                        if(r.result == 'ok') {
                          window.open(r.data.url);
                        }
                      }).catch(error=>{
                        console.log(error);
                      })
                    },2000);
                  }
                }).catch(error=>{
                  console.log(error);
                })
            }else{
              that.$message.error(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.$message.error(error.msg);
          })
        }else{
          // 查询数据
          awsuiAxios.post(params).then(function (ro) {
            if(ro.result == 'ok') {
              const taskId = ro.data.taskId;
              setTimeout(function(){
                const params2 = {
                  url:'jd',
                  data:{
                    taskId: taskId,
                    cmd: 'com.actionsoft.apps.coe.pal_outputreport_output_process_preview'
                  }
                };
                awsuiAxios.post(params2).then(function (r) {
                  if(r.result == 'ok') {
                    window.open(r.data.url);
                  }
                }).catch(error=>{
                  console.log(error);
                })
              },2000);
            }
          }).catch(error=>{
            console.log(error);
          })
        }
      },
      openRepositoryInfo(type) {// 打开文件属性、版本管理、附件管理
        let that = this;
        //三员管理
        if(that.isHighSecurity && that.isFileSecurity){
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_file_permission_query',
              uuid: that.currRepositoryDetail.id,
            }
          };
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
                that.$refs.repositoryInfo.openRepositoryInfoDlg(that, that.currRepositoryDetail.id, that.currRepositoryDetail.version, type, that.currRepositoryDetail.isUse, that.currRepositoryDetail.isPublish, that.currRepositoryDetail.isStop, that.currRepositoryDetail.isApproval, that.currRepositoryDetail.methodId);
            }else{
              that.$message.error(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
            that.$message.error(error.msg);
          })
        }else{
          this.$refs.repositoryInfo.openRepositoryInfoDlg(this, this.currRepositoryDetail.id, this.currRepositoryDetail.version, type, this.currRepositoryDetail.isUse, this.currRepositoryDetail.isPublish, this.currRepositoryDetail.isStop, this.currRepositoryDetail.isApproval, this.currRepositoryDetail.methodId);
        }
      },
      positionRepositoryPath(id, versionId) {// 路径定位模型文件
        const arr = [];
        for (let i = 0; i < this.repositoryPathData.length; i++) {
          const tempId = this.repositoryPathData[i].versionId;
          arr.push(tempId);
          if (tempId == id) {
            break;
          }
        }
        this.$router.push({path: '/Repository', query: {id: id, versionId: versionId, path: arr.join(','), param: Math.random()}});
      },
      positionTableRoleRepository(id, versionId, childSize, folder) {// 表格行标题点击定位
        if (childSize == 0) {
          // 如果是最后一级，文件夹提示，文件直接打开
          if (folder) {
            this.$message('已经到最后一级了');
          } else {
            this.openDesigner(id);
          }
          return;
        }
        let flag = false;
        const arr = [];
        for (let i = 0; i < this.repositoryPathData.length; i++) {
          const tempId = this.repositoryPathData[i].versionId;
          arr.push(tempId);
          if (tempId == versionId) {
            flag = true;
            break;
          }
        }
        if (!flag) {
          arr.push(versionId);
        }
        this.$router.push({path: '/Repository', query: {id: id, versionId: versionId, path: arr.join(','), param: Math.random()}});
      },
      repositoryRefresh(id) {// 刷新父页面树
        if (this.refreshTreeParentNode) {
          this.refreshTreeParentNode(id);
        }
        this.initData();
      },
      rowDrop() { // 拖动列表column
        const tbody = document.querySelector(".el-table__body-wrapper tbody");
        let that = this;
        Sortable.create(tbody,{
          //设置样式
          animation: 1000,
          direction: 'vertical',
          forceFallback:true,
          filter:".rowDropFilter",
          //事件监听
          //拖动结束
          onEnd: function (evt) {
            let oldIndex = evt.oldIndex;
            let newIndex = evt.newIndex;
            if(oldIndex != newIndex){
              let oldNode = that.tableData[oldIndex];
              let newNode = that.tableData[newIndex];
              const wsId = that.$store.getters.getWsIdFn;
              const data = {
                url:'jd',
                data:{
                  cmd: 'com.actionsoft.apps.coe.pal_processlevel_repository_order_index_update',
                  wsId: wsId,
                  currentId: oldNode.id,
                  originId : newNode.id
                }
              };
              // 查询数据
              awsuiAxios.post(data).then(res => {
                if (that.refreshTreeNode) {
                  that.refreshTreeNode(that.uuid);
                }
                if(res.data.updateFlag){
                  that.$message({
                    message: res.data.desc,
                    type: 'success'
                  });
                }else{
                  that.$message({
                    showClose: false,
                    message: res.data.desc,
                    type: 'error'
                  });
                }
              }).catch(error =>{
                that.$message({
                    showClose: false,
                    message: "服务调用失败",
                   type: 'error'
                });o
              });
            }
          },
        });
      },
      batchCreateFn() {// 批量创建
        this.batchCreate.visible = true;
      },
      closeBatchCreateFn() {// 关闭批量创建
        this.batchCreate.visible = false;
      },
      batchReplaceFn() {// 批量替换
        this.batchReplace.visible = true;
      },
      closeBatchReplaceFn() {// 关闭批量替换
        this.batchReplace.visible = false;
      }
    },
    computed: {
      tbody() {
        return this.$refs.repositorysDiv.querySelector(".el-table__body-wrapper").querySelector(".el-table__body").getElementsByTagName("tbody");
      },
      listenTopMainHeight() {
        return this.$store.getters.getTopMainHeightFn;
      }
    },
    watch : {
      listenTopMainHeight: function (newd, old) {
        this.mainHeight = (parseInt(newd) - (this.showFooter ? 45 : 0)) + 'px';
      }
    }
  }
</script>

<style scoped>
  .icon-div-repository {
    position: absolute;
    border-radius: 10%;
    left: 0px;
    display: inline-block;
    width: 32px;
    height: 32px;
    text-align: center;
    line-height: 32px;
    vertical-align: middle;
  }
  .icon-dynamic-repository {
    color: white;
    font-size: 18px;
  }
  .div-repository-title {
    display: inline-block;
    position: relative;
    left: 32px;
    text-align: center;
    height: 32px;
    line-height: 32px;
    font-size: 13px;
  }
  .div-repository-title :hover {
    color: #4E7FF9;
  }
  .div-update-date {
    display: inline-block;
    position: relative;
    left: 30px;
    text-align: center;
    height: 30px;
    line-height: 30px;
    font-size: 12px;
    color: #92A2B2;
  }
  .icon-div-repository-detail {
    display: inline-block;
    width: 30px;
    height: 30px;
    text-align: center;
    line-height: 30px;
    vertical-align: middle;
    border-radius: 10%;
    left: 0px;
    position: absolute;
  }
  .icon-repository-detail {
    color: white;
    font-size: 16px;
  }
  .icon-repository-detail-title {
    display: inline-block;
    position: relative;
    left: 30px;
    text-align: left;
    height: 30px;
    line-height: 30px;
    width: 200px;
    margin-left: 10px;
  }
  #repositoryListFolderDlg >>> .el-dialog__body {
    padding: 10px 20px;
    color: #606266;
    font-size: 14px;
    word-break: break-all;
  }
  #repositoryListFolderDlg >>> .el-form-item__label {
    line-height: 0;
  }
  #repositoryList >>> .el-table td, .el-table th {
    padding: 8px 0;
  }
  #repositoryList >>> .el-table td {
    border-bottom: 0px solid #F2F2F2;
  }
  #repositoryList >>> .el-table__row .non-favorite-display{
    display: none;
  }
  #repositoryList >>> .el-table__row:hover .non-favorite-display{
    display: inline-block;
  }
  #repositoryList >>> .el-table__row .operate-icon-display{
    display: none;
  }
  #repositoryList >>> .el-table__row:hover .operate-icon-display{
    display: inline-block;
  }
  #repositoryList >>> .row-repository-title .cell {/*IE错位问题*/
    position: relative;
  }
/**当前title 样式 */
  .cur-title:hover  {
    color: #4E7FF9;
    cursor: pointer;
  }
  .cur-title .cur-title-operate{
    display: none;
  }
  .cur-title:hover .cur-title-operate{
    display: inline-block;
  }

  .aside-repository-operate-li {
    height: 50px;
    line-height: 50px;
    padding-left: 20px;
    cursor: pointer;
    font-size: 13px;
  }
  .aside-repository-operate-li span{
    display: inline-block;
  }
  .aside-repository-operate-li-icon {
    padding-right: 10px;
    position: relative;
    top: 1px;
    font-size: 13px;
  }
  #repositoryList >>> .awsui-halve-green {
    background-color: #1AA477;
  }
  #repositoryList >>> .el-table::before {
    height: 0px !important;
  }
  #repositoryList >>> .hideCheckBoxCell .el-checkbox__input {
    visibility: hidden;
  }
  #repositoryList >>> .el-table__body-wrapper::-webkit-scrollbar {
    display: none;
  }
  .repository-path-title:hover {
    color: #4E7FF9;
  }
  .icon-operate:hover {
    color: #4E7FF9 !important;
  }
  .el-dropdown-row {
    height: 30px;
    line-height: 30px;
  }
  .el-dropdown-row :hover {
    color: #4E7FF9 !important;
  }
  .repository-img-halve {
    right: 0;
    transform: rotate(45deg) translate(29%,-90%);
    position: absolute;
    top: 0;
    z-index: 9;
    height: 24px;
    line-height: 24px;
    font-size: 12px;
    white-space: nowrap;
    color: #fff;
    padding: 0 50px;
  }
  .repository-img-halve span {
    position: relative;
    top: 0px;
  }

</style>
