<!--
  @description: 选择项目经理-弹框
                根据机构id查询该机构及以下的用户信息(角色编码不必传,传则查该角色用户)
  @Modifier: haoFx/Joel
  @routerPath:
  @date: 2019/10/26-13:27
-->
<template>
  <el-dialog
    v-dialogDrag
    :visible.sync="dialogData.dialog"
    :close-on-click-modal="false"
    :title="title+'选择'"
    width="840px"
    custom-class="el-dialog__body-p8 el-dialog_table"
  >
    <div class="clearfix">
      <el-form ref="fromData" :model="fromData" inline @submit.native.prevent>
        <el-form-item :label="'姓名'">
          <el-input
            v-model.trim="fromData.realName"
            style="width: 300px"
            @keyup.enter.native="search"
          />
        </el-form-item>
        <el-form-item class="fr">
          <el-button
            type="primary"
            @click="search('searchForm')"
          >
            搜索
          </el-button>
          <el-button
            plain
            type="info"
            @click="resetForm('searchForm')"
          >
            重置
          </el-button>
        </el-form-item>
      </el-form>
    </div>
    <div>
      <el-table
        ref="singleTable"
        :data="list"
        class="pointer"
        highlight-current-row
        size="mini"
        @current-change="currentChange"
      >
        <el-table-column type="index" label="序号" align="center" width="80" />
        <el-table-column :label="'姓名'" prop="realName" min-width="100" />
        <el-table-column :label="'所属部门'" min-width="200" prop="departName" />
        <el-table-column :label="'联系方式'" prop="mobilePhone" align="center" min-width="140" />
      </el-table>
      <!--分页组件-->
      <pagination :pagination-data="paginationData" @change="paginData" />
    </div>
    <span slot="footer" class="dialog-footer">
      <el-button type="primary" @click="ensure">确 定</el-button>
      <el-button @click="cancel">取 消</el-button>
    </span>
  </el-dialog>
</template>

<script>
/* 接口*/
import { selectDepartUserInfoListByDepartId } from '@/api/common/user'
/* 公用参数 */
import { paging } from '@/assets/js/utils/index.js'
/* 混合开发方法-参数字段*/
import { ListMixin } from '@/mixins/ListMixin'// 分页
/* 组件*/
import pagination from '@comp/common/pagination/pagination'// 分页
export default {
  name: 'ProjectManagerDialog',
  components: {
    pagination// 分页
  },
  mixins: [ListMixin],
  props: {
    // 弹框展示状态
    dialogData: {
      type: Object,
      default: function() {
        return {
          departId: '',
          dialog: false, // 展示状态
          title: '', // 标题
          departRoleName: '', // 10采购人 11代理机构(项目经理)
          materialId: [] // Id去重列表
        }
      }
    },
    // 角色编码(为空时查全部用户,多个则使用“，”隔开)
    roleCodes: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      title: '', // 标题
      // 搜索信息
      fromData: {
        departId: '', // 机构id
        roleCodeList: [], // 角色编码(为空时查全部用户)
        realName: ''// 姓名
      },
      list: [], // 列表数据-页面展示的
      allList: [], // 所有的数据
      currentData: {}// 当前选择的信息
    }
  },
  watch: {
    // 弹框状态
    'dialogData.dialog'(val) {
      if (!val) { // false 关闭时
        this.currentData = {}
      } else {
        this.loadData()// 获取数据
      }
    }
  },
  created() {
    this.fromData.departId = this.dialogData.departId // 机构id
    // 标题
    if (this.dialogData.title) {
      this.title = this.dialogData.title
    }
  },
  methods: {
    // 当前选择的信息
    currentChange(val) {
      this.currentData = val
    },
    // 加载数据
    loadData() {
      // 角色编码(为空时查全部用户)
      if (this.roleCodes) { // 如果有String数据则进行数据转换
        this.fromData.roleCodeList = this.roleCodes.split(',')// string》Array
      }
      selectDepartUserInfoListByDepartId(this.fromData).then(response => {
        this.allList = response.data
        this.paginData()// 分页
      }).catch(() => {
      })
    },
    // 分页
    paginData() {
      this.list = paging({ realName: this.fromData.realName }, this.allList, this.paginationData)// 分页功能
    },
    // 选择信息-确定
    ensure() {
      if (this.currentData.id) {
        const data = {
          id: this.currentData.id, // id
          name: this.currentData.realName, // 姓名
          phone: this.currentData.mobilePhone// 联系方式
        }
        this.$emit('projectManagerInfo', data)
      } else {
        this.$message({
          message: `请选择${this.title}`,
          type: 'warning'
        })
      }
    },
    // 取消
    cancel() {
      this.dialogData.dialog = false
    },
    // 搜索重置
    resetForm(formName) {
      this.fromData.realName = ''// 姓名
      this.search()// 搜索
    },
    // 搜索
    search() {
      this.paginationData.pageNo = 1
      this.paginationData.pageSize = 10
      this.paginData()// 分页
    }
  }
}
</script>

<style scoped lang="less">

</style>
