<template>
  <el-container>
    <div id="repositoryInfoVersion" style="height: 500px;width: 100%;">
      <el-table
              v-if="tableData.length > 0"
              id="table"
              :data="tableData"
              header-cell-class-name="header-cell-row"
              height="500px"
              style="width: 100%">
        <el-table-column
                prop="versionNo"
                label="版本号"
                align="center"
                width="70">
        </el-table-column>
        <el-table-column
                prop="name"
                label="文件名称"
                min-width="180">
        </el-table-column>
        <el-table-column
                prop="address"
                align="center"
                label="创建信息"
                min-width="160">
          <template slot-scope="scope">
            {{scope.row.createUser}}/{{scope.row.createDate}}
          </template>
        </el-table-column>
        <template v-if="!isCorrelatebpms">
          <el-table-column
                  prop="state"
                  label="状态"
                  align="center"
                  width="80">
        <span slot-scope="scope" :style="{'color': scope.row.stateColor}">
          {{scope.row.state}}
        </span>
          </el-table-column>
        </template>
        <template v-else>
          <el-table-column
                  prop="state"
                  label="PAL状态"
                  align="center"
                  width="80">
        <span slot-scope="scope" :style="{'color': scope.row.stateColor}">
          {{scope.row.state}}
        </span>
          </el-table-column>
          <template v-if="isPalManage">
            <el-table-column
                    prop="state"
                    label="在BPM运行"
                    align="center"
                    width="100">
        <span slot-scope="scope">
          {{(scope.row.isCorrelate ? "是" : "否")}}
        </span>
            </el-table-column>
          </template>
          <template v-else>
            <el-table-column
                    prop="state"
                    label="BPM状态"
                    align="center"
                    width="80">
        <span slot-scope="scope" :style="{'color': scope.row.bpmStateColor}">
          {{scope.row.bpmState}}
        </span>
            </el-table-column>
          </template>
        </template>
        <el-table-column
                v-if="(isOlderVersion ? havingVersionManagePerm : filePerm.havingVersionManagePerm ) && tableData.length > 1"
                prop="name"
                label="使用"
                align="center"
                width="80">
          <template slot-scope="scope">
            <el-switch
                    style="display: block"
                    v-model="scope.row.isUse"
                    active-color="#4E7FF9"
                    inactive-color="#E2E2E2"
                    @change="changeRepositoryUseStatus(scope.row.id, scope.row.isUse)">
            </el-switch>
          </template>
        </el-table-column>
        <el-table-column
                prop="address"
                align="center"
                label="操作">
          <template slot-scope="scope">
<!--            <el-tooltip content="以当前版本为模版创建新版本文件" placement="bottom" hide-after="3000">-->
              <i v-if="isOlderVersion ? havingWritePerm : filePerm.havingWritePerm" class="iconfont icon-fuzhi operate-icon-display" style="cursor: pointer;" @click="createNewVersion(scope.row.id, scope.row.versionNo)"></i>
<!--            </el-tooltip>-->
            <i v-if="(isOlderVersion ? havingRemovePerm : filePerm.havingRemovePerm )&& !isCorrelatebpms && !scope.row.isUse && !scope.row.isPublish && !scope.row.isApproval" class="iconfont icon-lajitong1 operate-icon-display" style="cursor: pointer;padding-left: 5px;" @click="deleteRepository(scope.row.id, scope.row.versionNo)"></i>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <el-dialog
        id="addNewVersionDialog"
        title="提示"
        width="500px"
        :visible.sync="addNewVersionVisible"
        top="45vh"
        :modal-append-to-body=true
        :close-on-click-modal=false
        :append-to-body=true
        destroy-on-close
    >
      <span>请选择以{{ currentVersion }}版本为模板创建的新文件版本号:</span></br>
      <el-radio-group style="margin-top: 10px" v-model="isLargeIteration">
        <el-radio :label=true>{{ largeVersion }}</el-radio></br>
        <el-radio style="margin-top: 5px" :label=false>{{ smallVersion }}</el-radio>
      </el-radio-group>
      <span slot="footer">
          <awsui-button class="button-general-color" type="primary" @click="confirmAddVersion">确定</awsui-button>
          <awsui-button @click="cancelAddVersion">取消</awsui-button>
       </span>
    </el-dialog>
  </el-container>
</template>

<script>
    import awsuiAxios from "../../awsuiAxios";

    export default {
      name: "RepositoryInfoVersion",
      props: {
        id: {
          type: String,
          default: ''
        },
        versionId: {
          type: String,
          default: ''
        },
        repositoryRefresh: {
          type: Function,
          default: null
        }
      },
      data() {
        return {
          userId: '',// 使用版本的id
          tableData: [],
          isCorrelatebpms: false,
          processDefId: '',
          isPalManage: false, // 以PAL为管理中心管控BPM流程，
          havingWritePerm: false,
          havingRemovePerm: false,
          havingVersionManagePerm: false,
          addNewVersionVisible: false,
          currentVersion: '',
          largeVersion: '',
          smallVersion: '',
          currentId: '',
          isLargeIteration: true,
          isOlderVersion: true,
          filePerm:{
            havingRemovePerm:false,
            havingVersionManagePerm: false,
            havingWritePerm: false
          }
        }
      },
      created() {
        this.userId = this.id;
        this.initData();
      },
      methods: {
        initData() {
          const that = this;
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_data',
              id: that.userId,
              wsId: that.$store.getters.getWsIdFn,
              teamId: that.$store.getters.getTeamIdFn
            }
          };
          // 查询数据
          awsuiAxios.post(data).then(function (ro) {
            if(ro.result == 'ok') {
              that.isCorrelatebpms = ro.data.isCorrelatebpms;
              that.processDefId = ro.data.processDefId;
              that.isPalManage = ro.data.isPalManage;
              that.havingWritePerm = ro.data.havingWritePerm;
              that.havingRemovePerm = ro.data.havingRemovePerm;
              that.havingVersionManagePerm = ro.data.havingVersionManagePerm;
              for (let i = 0; i < ro.data.tableData.length; i++) {
                if (ro.data.tableData[i].isApproval) {
                  ro.data.tableData[i].stateColor = '#1AA477';
                  ro.data.tableData[i].state = '审批中';
                  ro.data.tableData[i].stateCode = 'approval';
                } else if (ro.data.tableData[i].isStop) {
                  ro.data.tableData[i].stateColor = '#D9001B';
                  ro.data.tableData[i].state = '已停用';
                  ro.data.tableData[i].stateCode = 'stop';
                } else if (ro.data.tableData[i].isPublish) {
                  ro.data.tableData[i].stateColor = '#1AA477';
                  ro.data.tableData[i].state = '已发布';
                  ro.data.tableData[i].stateCode = 'publish';
                } else if (ro.data.tableData[i].isUse) {
                  ro.data.tableData[i].stateColor = '#4E7FF9';
                  ro.data.tableData[i].state = '设计中';
                  ro.data.tableData[i].stateCode = 'use';
                } else {
                  ro.data.tableData[i].stateColor = '';
                  ro.data.tableData[i].state = '设计';
                  ro.data.tableData[i].stateCode = 'designer';
                }
              }
              that.tableData = ro.data.tableData;
              that.isOlderVersion = ro.data.isOlderVersion;
              that.filePerm.havingWritePerm = ro.data.havingWritePerm;
              that.filePerm.havingRemovePerm = ro.data.havingRemovePerm;
              that.filePerm.havingVersionManagePerm = ro.data.havingVersionManagePerm;
            } else {
              that.$message.error(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
          })
        },
        changeRepositoryUseStatus(id, isUse) {// 使用中状态变更
          const that = this;
          if (isUse) {// 由未使用变更为使用中，重新刷新数据即可
            // 变更使用状态axiox请求，成功后刷新父页面树和右侧
            let oldId;
            for (var currRowData in that.tableData) {
              if (that.tableData[currRowData].isUse && that.tableData[currRowData].id != id) {
                oldId = that.tableData[currRowData].id;
                break;
              }
            }
            // 全局遮罩
            const loading = that.$loading({
              lock: true,
              text: '正在切换更新版本...',
              spinner: 'el-icon-loading',
              background: 'hsla(0,0%,100%,.9)'
            });
            const data = {
              url:'jd',
              data:{
                cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_use',
                id: id,
                wsId: that.$store.getters.getWsIdFn,
                teamId: that.$store.getters.getTeamIdFn
              }
            };
            // 查询数据
            awsuiAxios.post(data).then(function (ro) {
              if(ro.result == 'ok') {
                that.$message({
                  message: '切换成功',
                  type: 'success'
                });
                that.userId = ro.data.id;
                that.initData();
                loading.close();
                // 更新父页面的当前使用模型文件
                if (that.repositoryRefresh && oldId) {
                  that.repositoryRefresh(oldId);
                }
              } else {
                loading.close();
                that.$message(ro.msg);
              }
            }).catch(error=>{
              console.log(error);
            })
          } else {// 由使用中变更为非使用中，必须有一个为使用中
            for (var currRowData in that.tableData) {
              if (that.tableData[currRowData].id == id) {
                that.tableData[currRowData].isUse = true;
              }
            }
          }
        },
        createNewVersion(id, versionNo) {// 复制/创建新版本
          let versionArr = []
          let smallVersionInteger     //  小版本整数位
          let smallVersionDecimal     //  小版本小数位
          let arr1 = []               //  大版本号
          let arr2 = []                //  以当前版本为大版本的所有小版本
          smallVersionInteger = parseInt(versionNo.match(/\d+\.\d+/g)[0])
          this.tableData.forEach(item => {
            versionArr.push(item.versionNo.match(/\d+\.\d+/g)[0].split('.'))    //  /\d+(.\d+)?/g
          })
          versionArr.forEach(item => {
            arr1.push(parseInt(item[0]))
            if (item[0] == smallVersionInteger) {
              arr2.push(parseInt(item[1]))
            }
          })
          smallVersionDecimal = Math.max(...arr2) + 1
          this.largeVersion = 'V' + (Math.max(...arr1) + 1).toFixed(1)
          this.smallVersion = 'V' + smallVersionInteger + '.' + smallVersionDecimal
          this.addNewVersionVisible = true
          this.currentVersion = versionNo
          this.currentId = id
        },
        confirmAddVersion() {
          // 全局遮罩
          const loading = this.$loading({
            lock: true,
            text: '正在创建新版本...',
            spinner: 'el-icon-loading',
            background: 'hsla(0,0%,100%,.9)'
          });
          const data = {
            url:'jd',
            data:{
              cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_create',
              id: this.currentId,
              wsId: this.$store.getters.getWsIdFn,
              teamId: this.$store.getters.getTeamIdFn,
              isLargeIteration: this.isLargeIteration
            }
          };
          // 查询数据
          awsuiAxios.post(data).then(ro => {
            if(ro.result == 'ok') {
              this.$message({
                message: '创建成功',
                type: 'success'
              });
              this.initData();
              loading.close();
              this.isLargeIteration = true
              this.addNewVersionVisible = false
            } else {
              loading.close();
              this.$message(ro.msg);
            }
          }).catch(error=>{
            console.log(error);
          })
        },
        cancelAddVersion() {
          this.isLargeIteration = true
          this.addNewVersionVisible = false
        },
        deleteRepository(id, versionNo) {// 删除
          const that = this;
          that.$confirm('确定要删除吗？', '提示', {
            confirmButtonText: '确定',
            confirmButtonClass: 'button-general-color',
            cancelButtonText: '取消',
            type: 'warning'
          }).then(() => {
            // 全局遮罩
            const loading = that.$loading({
              lock: true,
              text: '正在放入回收站...',
              spinner: 'el-icon-loading',
              background: 'hsla(0,0%,100%,.9)'
            });
            const data = {
              url:'jd',
              data:{
                cmd: 'com.actionsoft.apps.coe.pal_pl_repository_designer_version_manager_delete',
                id: id,
                wsId: that.$store.getters.getWsIdFn,
                teamId: that.$store.getters.getTeamIdFn
              }
            };
            // 查询数据
            awsuiAxios.post(data).then(function (ro) {
              if(ro.result == 'ok') {
                that.$message({
                  message: '已放入回收站',
                  type: 'success'
                });
                that.initData();
                loading.close();
              } else {
                loading.close();
                that.$message(ro.msg);
              }
            }).catch(error=>{
              console.log(error);
            })
          }).catch(() => {
          });
        }
      }
    }
</script>

<style scoped>
  #table >>> .header-cell-row {
    background-color: #F2F2F2 !important;
  }
  #table >>> .el-table__row .operate-icon-display{
    display: none;
  }
  #table >>> .el-table__row:hover .operate-icon-display{
    display: inline-block;
  }
  #addNewVersionDialog  >>> .el-dialog__body {
    padding: 10px 20px;
    color: #606266;
    font-size: 14px;
    word-break: break-all;
    cursor: pointer;
  }
</style>
