<template>
  <div>
    <el-dialog v-loading = "loading" :visible.sync="visible" :append-to-body="appendToBody" :before-close="beforeClose" title="审批" width="1200px" destroy-on-close>
      <el-form ref="form" :model="form" :rules="rules" label-width="200px" label-position="right" type="flex">
        <el-row :gutter="12">
          <el-col :span="12">
            <el-form-item prop="APPOINT_DEPARTMENT_ID" label="指定监管部门:">
              <Treeselect
                :options="departmentTree"
                :normalizer="normalizer"
                v-model="form.APPOINT_DEPARTMENT_ID"
                placeholder="请选择部门"
                no-options-text="暂无数据"
                no-children-text="暂无数据"
                style="width: 100%;"
                @select="getPeopleList($event)"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item prop="APPOINT_USER_ID" label="指定监管部门审批人:">
              <el-select v-model="form.user" style="width: 300px" placeholder="请选择" @change="chooseUser">
                <el-option v-for="item in peopleList" :key="item.USER_ID" :value="JSON.stringify(item)" :label="item.NAME"/>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>

      <div slot="footer" class="dialog-footer">
        <el-button @click="handleClose">关 闭</el-button>
        <el-button type="primary" @click="sendMessage('1')">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import vueQr from 'vue-qr'
import Treeselect from '@riophae/vue-treeselect'
import { requestFN } from '@/utils/request'

export default {
  components: { Treeselect, vueQr },
  props: {
    appendToBody: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      visible: false,
      loading: false,
      form: {
        STATUS: null,
        APPOINT_CORP_ID: '',
        APPOINT_CORP_NAME: '',
        APPOINT_DEPARTMENT_ID: null,
        APPOINT_DEPARTMENT_NAME: '',
        APPOINT_USER_ID: null,
        APPOINT_USER_NAME: '',
        OPINION: '',
        user: '',
        tm: new Date().getTime(),
        list: [],
        isShow: true,
        info: {},
        entrustFlag: '1'
      },
      rules: {
        STATUS: [
          { required: true, message: '请选择是否通过', trigger: 'change' }
        ],
        APPOINT_DEPARTMENT_ID: [
          { required: true, message: '请选择指定监管部门', trigger: 'change' }
        ],
        APPOINT_USER_ID: [
          { required: true, message: '请选择指定监管部门审批人', trigger: 'change' }
        ],
        OPINION: [
          { required: true, message: '请填写打回原因', trigger: 'change' }
        ]
      },
      heirloom: {},

      normalizer(node) {
        return {
          id: node.id,
          label: node.name,
          children: node.nodes
        }
      },

      departmentTree: [],
      peopleList: []
    }
  },
  methods: {
    async init(e) {
      console.log(e)
      this.loading = true
      this.visible = true
      this.heirloom = JSON.stringify(e)
      this.form.list = JSON.stringify(e)
      this.getDepartmentTree()
      this.loading = false
    },
    sendMessage(e) {
      this.$refs.form.validate((valid) => {
        if (!valid) {
          this.$message.error('请填写完整信息')
        } else {
          requestFN('/xgf/user/approve', this.form)
            .then((data) => {
              this.$message.success('推送成功')
              this.visible = false
              this.$emit('refresh', '')
            })
            .catch((e) => {
              console.log(e)
            })
        }
      })
    },
    getDepartmentTree() {
      return new Promise(resolve => {
        requestFN(
          '/corpDepartment/listTreeManageAndCorpHasOrder',
          {}
        ).then((data) => {
          const treeData = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
          this.departmentTree = this.removeEmptyChildren(treeData)
          resolve(true)
        }).catch((e) => {
          console.log(e)
        })
      })
    },
    getPeopleList(e) {
      this.form.APPOINT_DEPARTMENT_NAME = e.name
      requestFN(
        '/user/listAllCorp',
        {
          DEPARTMENT_ID: e.id
        }
      ).then((data) => {
        this.peopleList = data.userList
      }).catch((e) => {
        console.log(e)
      })
    },
    chooseUser(e) {
      const entity = JSON.parse(e)
      this.form.APPOINT_USER_ID = entity.USER_ID
      this.form.APPOINT_USER_NAME = entity.NAME
    },

    handleClose() {
      this.form = {
        STATUS: '',
        APPOINT_DEPARTMENT_ID: null,
        APPOINT_DEPARTMENT_NAME: '',
        APPOINT_USER_ID: '',
        APPOINT_USER_NAME: '',
        user: '',
        list: [],
        tm: new Date().getTime()
      }
      this.visible = false
    },
    beforeClose() {
      this.visible = false
      this.form = {
        STATUS: '',
        APPOINT_DEPARTMENT_ID: null,
        APPOINT_DEPARTMENT_NAME: '',
        APPOINT_USER_ID: '',
        APPOINT_USER_NAME: '',
        user: '',
        list: [],
        tm: new Date().getTime()
      }
    }
  }
}
</script>

<style lang="scss" scoped>
</style>
