<!--
  @description: 流程节点
  @Modifier: haoFx
  @routerPath:
  @date: 2020/3/27-12:53
-->
<template>
  <div>
    <el-form
      ref="form"
      :model="processInitDto"
      label-width="140px"
    >
      <el-form-item
        v-if="isShowProcessInfo"
        ref="nodeName"
        label="请选择流程路径"
        prop="nodeName"
      >
        <el-select
          v-model="processInitDto.nodeName"
          style="width: 230px;"
          placeholder="请选择流程路径"
        >
          <el-option
            v-for="(item,index) in list"
            :key="index"
            :label="item.nodeName"
            :value="item.nodeId"
          />
        </el-select>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
import { getNodeNameByProcessDefinitionKey, getActModeUserByNodeIdProcessDefinitionKey } from '@/api/work/work'
import departDialog from './depart-dialog'
export default {
  name: 'ProcessNodeDialog',
  components: {
    'depart-dialog': departDialog
  },
  props: {
    // 工作流流程id
    processDefinitionKey: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      isShowProcessInfo: false, // 是否显示流程节点信息 当只有一个节点时不显示
      list: [], // 列表数据
      // 审核人信息保存
      processInitDto: {
        isCheckMutil: '', // 是否指定审核人
        auditUserIds: '', // 审核人id
        auditUserOrgs: '', // 审核机构
        auditUserRols: '', // 审核角色
        nodeId: '', // 节点id主键
        nodeName: '', // 节点名称
        processInstanceId: '', // 实例化id
        processDefinitionKey: '', // 流程id
        taskId: '', // 任务id
        type: '01' // 01：初次提交立项 02：审核驳回再次提交
      }
    }
  },
  watch: {
    processDefinitionKey: {
      handler(val) {
        if (val) {
          this.processInitDto.processDefinitionKey = val
          // 初始化流程
          this.getNodeNameByProcessDefinition()
        }
      },
      immediate: true
    }
  },
  methods: {
    getProcessDefinitionKey(processDefinitionKey) {
      this.processInitDto.processDefinitionKey = processDefinitionKey
      this.getNodeNameByProcessDefinition()
    },
    // 工作流流程节点/初始化获取节点名称
    getNodeNameByProcessDefinition() {
      getNodeNameByProcessDefinitionKey(this.processInitDto.processDefinitionKey).then(res => {
        const { data } = res.data
        this.list = data
        this.singleNode()
      }).catch(() => {
      })
    },
    singleNode() {
      // 不显示流程信息
      this.isShowProcessInfo = false
      // 节点id主键
      this.processInitDto.nodeId = this.list[0].nodeId
      // 获取节点配置
      this.getActModeUser(this.processInitDto)
    },
    // 工作流流程节点/根据processDefinitionId和节点id 查询当前配置
    getActModeUser(data) {
      getActModeUserByNodeIdProcessDefinitionKey(data.nodeId, data.processDefinitionKey)
        .then(res => {
          const { data } = res.data
          this.processInitDto.isCheckMutil = data.isCheckMutil
          // 是否指定人员01指定  00不指定
          this.$emit('isCreateUserStatus', data.isCreateUser)
          // 传给父组件
          this.$emit('processNodeData', this.processInitDto)
        }).catch(() => {
        })
    }
  }
}
</script>

<style scoped>

</style>
