<template>
  <div class="wrapper">
    <div>
      <el-form
        :model="dataForm"
        ref="dataForm"
        @keyup.enter.native="dataFormSubmitHandle()"
        :label-width="$i18n.locale === 'en-US' ? '120px' : 'auto'"
      >
        <div v-if="flagShow">
          <ResourcesAndServices
            :dataForm="dataForm"
            :insertList="insertList"
          ></ResourcesAndServices>
        </div>
        <el-form-item
          v-if="dataForm.enclosure"
          label="申请附件"
          prop="enclosure"
        >
          <el-button @click="downloadFile(dataForm.enclosure, '申请附件')"
            >附件下载</el-button
          >
        </el-form-item>
      </el-form>
    </div>
    <!--  流程综合组件   -->
    <!-- <ren-process-multiple
      v-if="processVisible"
      updateInstanceIdUrl="/processForm/tabilityapplication/updateInstanceId"
      saveFormUrl="/processForm/tabilityapplication"
      dataFormName="dataForm"
      ref="renProcessMultiple"
    ></ren-process-multiple> -->
    <!-- 审批 -->
    <div class="agreeOr" v-if="taskId">
      <h3>审批</h3>
      <div>
        <el-button type="primary" @click="showDialog('同意')">同意</el-button>
        <el-button type="danger" plain @click="showDialog('拒绝')"
          >拒绝</el-button
        >
        <!-- <el-radio-group v-model="agreeOrList" style="width: 230px">
          <el-radio-button label="同意" class="blueAll">同意</el-radio-button>
          <el-radio-button label="退回" class="redAll">退回</el-radio-button>
        </el-radio-group>
        <el-input
          v-if="agreeOrList === '同意'"
          v-model="inputAgree"
          placeholder="请输入同意意见"
        ></el-input>
        <el-input
          v-if="agreeOrList === '退回'"
          v-model="inputNo"
          placeholder="请输入退回意见"
        ></el-input>
        <el-button
          class="inputBule"
          @click.native="agreeOrNot($store.state.contentTabsActiveName)"
          >提交</el-button
        > -->
      </div>
    </div>
    <!--  流程详情   -->
    <ren-process-detail></ren-process-detail>
    <el-dialog
      title="审批意见"
      :close-on-click-modal="false"
      :visible.sync="dialogVisible"
      width="30%"
      :before-close="handleClose"
    >
      <el-input v-model="input" placeholder="请输入审批意见"></el-input>
      <span slot="footer" class="dialog-footer">
        <el-button @click="handleClose2">取 消</el-button>
        <el-button
          type="primary"
          @click.native="agreeOrNot($store.state.contentTabsActiveName)"
          >确 定</el-button
        >
      </span>
    </el-dialog>
  </div>
</template>

<script>
import bus from '@/views/bus.js'
import ResourcesAndServices from './ResourcesAndServices.vue'
import debounce from 'lodash/debounce'
import qs from 'qs'

export default {
  // 注入公共方法
  // mixins: [processModule],
  components: {
    ResourcesAndServices
  },
  props: {
    // fromList: {
    //   // type: Array,
    //   // default: () => {
    //   //   return []
    //   // }
    // }
  },
  data () {
    return {
      dialogVisible: false,
      dialogType: '',
      input: '',
      flagShow: false,
      // processVisible: true,
      visible: false,
      // 表单属性是否可编辑
      fieldDisabled: false,
      dataForm: {},
      id: '',
      shifoushizujian: true,
      coverageNotShow: true,
      nameNotShow: false,
      algorithmShow: true,
      insertList: [],
      inputAgree: '',
      inputNo: '',
      agreeOrList: '同意',
      taskId: ''
    }
  },
  watch: {},
  created () {
    // 将业务KEY赋值给表单
    console.log('params=================>', this.$route, this.$route.params)
    this.taskId = this.$route.params.taskId
    this.dataForm.taskId = this.$route.params.taskId
    this.init()
    console.log('fromList', this.$router.currentRoute.params.businessKey)
    // this.dataForm = this.$router.currentRoute.params.params.params.resourceDTO
    // var callbacks = {
    //   startProcessSuccessCallback: this.closeCurrentTab,
    //   startProcessErrorCallback: this.startProcessErrorCallback,
    //   taskHandleSuccessCallback: this.closeCurrentTab,
    //   taskHandleErrorCallback: this.taskHandleErrorCallback,
    //   formSaveSuccessCallback: null,
    //   formSaveErrorCallback: null
    // }
    // // 初始化综合组件
    // this.initProcessMultiple(callbacks)
  },
  mounted () {
    const businessKey = this.$router.currentRoute.params.businessKey
    this.getInfo(businessKey)
    this.methodsThree()
    console.log(this.taskId, 'this.dataForm.taskId')
  },
  computed: {},
  methods: {
    getInfo (id) {
      this.$http.get('/resourceMountApply/' + id).then(({ data: res }) => {
        this.dataForm = res.data.resourceDTO
        if (this.dataForm) {
          console.log('this.dataForm', this.dataForm)
          this.flagShow = true
        }
      })
    },
    showDialog (title) {
      this.dialogVisible = true
      this.dialogType = title
    },
    handleClose (done) {
      this.$confirm('确认关闭？')
        .then((_) => {
          this.input = ''
          done()
        })
        .catch((_) => {})
    },
    handleClose2 () {
      this.dialogVisible = false
      this.input = ''
    },
    methodsThree () {
      // this.$http.get('/category/getCategoryTree').then((res) => {
      //   this.insertList = res.data.data
      // })
      this.insertList = JSON.parse(localStorage.getItem('getCategoryTree'))
    },
    init () {
      this.visible = true
      this.$nextTick(() => {
        this.$refs.dataForm.resetFields()
        // if (this.dataForm.id) {
        // 如业务KEY已存在，不允许编辑
        this.fieldDisabled = true
        // this.id = this.$router.currentRoute.businessKey
        console.log('id', this.$router.currentRoute.params.businessKey)
        // }
      })
    },
    // 同意与退回
    agreeOrNot: debounce(
      function (data) {
        if (this.dialogType === '同意') {
          console.log('this.dataForm', this.dataForm)
          const params = qs.stringify({
            taskId: this.taskId,
            comment: this.input
          })
          console.log(params)
          this.$http
            .post('/act/task/complete?' + params)
            .then(({ data: res }) => {
              if (res.code !== 0) {
                this.$message.error(res.msg)
                if (this.callbacks.taskHandleErrorCallback) {
                  this.callbacks.taskHandleErrorCallback(res)
                }
                return
              }
              bus.$emit('abilityResourceShelfInit')
              this.$message({
                message: this.$t('prompt.success'),
                type: 'success',
                duration: 500,
                onClose: () => {
                  this.visible = false
                  this.dialogVisible = false
                  this.input = ''
                  if (this.callbacks.taskHandleSuccessCallback) {
                    this.callbacks.taskHandleSuccessCallback(res)
                  }
                }
              })
            })
            .catch(() => {})
        } else if (this.dialogType === '拒绝') {
          const params = qs.stringify({
            taskId: this.taskId,
            comment: this.input
          })
          this.$http
            .post('/act/task/endProcess?', params)
            .then(({ data: res }) => {
              if (res.code !== 0) {
                this.$message.error(res.msg)
                if (this.callbacks.taskHandleErrorCallback) {
                  this.callbacks.taskHandleErrorCallback(res)
                }
                return
              }
              bus.$emit('abilityResourceShelfInit')
              this.$message({
                message: this.$t('prompt.success'),
                type: 'success',
                duration: 500,
                onClose: () => {
                  this.visible = false
                  if (this.callbacks.taskHandleSuccessCallback) {
                    this.callbacks.taskHandleSuccessCallback(res)
                  }
                }
              })
            })
        }
        this.tabRemoveHandle(data)
      },
      1000,
      { leading: true, trailing: false }
    ),
    tabRemoveHandle (tabName) {
      console.log(tabName, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')
      if (tabName === 'home') {
        return false
      }
      this.$store.state.contentTabs = this.$store.state.contentTabs.filter(
        (item) => item.name !== tabName
      )
      if (this.$store.state.contentTabs.length <= 0) {
        this.$store.state.sidebarMenuActiveName =
          this.$store.state.contentTabsActiveName = 'home'
        return false
      }
      // 当前选中tab被删除
      if (tabName === this.$store.state.contentTabsActiveName) {
        const tab =
          this.$store.state.contentTabs[
            this.$store.state.contentTabs.length - 1
          ]
        this.$router.push({
          name: /^iframe_.+/.test(tab.name) ? 'iframe' : tab.name,
          params: { ...tab.params },
          query: { ...tab.query }
        })
      }
    }
  }
}
</script>
<style scoped lang="scss">
.kuandukuandukuandu {
  max-width: 1500px;
}
.wrapper {
}
::v-deep .agreeOr > div {
  display: flex;
  align-items: center;
  .el-input {
    margin-right: 10px;
    margin-left: 32px;
  }
}
::v-deep .agreeOr > div:last-of-type {
  margin-top: 15px;
}
.blueAll {
  ::v-deep .el-radio-button__inner {
    width: 80px;
    height: 32px;
    line-height: 32px;
    padding: 0;
    border-radius: 2px;
    background: #ffffff;
    color: #0558e1;
    border: 1px solid #0558e1;
  }
  ::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
    box-shadow: unset !important;
    background: #0558e1;
    color: #ffffff;
  }
}
.inputBule {
  width: 55px;
  height: 32px;
  line-height: 32px;
  padding: 0;
  border-radius: 2px;
  background: #0558e1;
  color: #ffffff;
  border: 1px solid #0558e1;
}
.redAll {
  margin-left: 10px;
  ::v-deep .el-radio-button__inner {
    width: 80px;
    height: 32px;
    line-height: 32px;
    padding: 0;
    border-radius: 2px;
    border: 1px solid #e83a48;
    background: #ffffff;
    color: #e83a48;
    margin-left: 10px;
  }
  ::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
    box-shadow: unset !important;
    color: #ffffff;
    background: #e83a48;
  }
}
.blueInput {
  width: 55px;
}
</style>
