<template>
  <!-- 授权用户 -->
  <el-dialog
    title="选择用户"
    :visible.sync="visible"
    width="800px"
    top="5vh"
    append-to-body
  >
    <el-form
      v-show="!isSolo"
      :model="queryParams"
      ref="queryForm"
      size="small"
      :inline="true"
    >
      <el-form-item label="用户名称" prop="userName">
        <el-input
          v-model.trim="queryParams.userName"
          placeholder="请输入用户名称"
          clearable
          style="width: 240px"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="手机号码" prop="phonenumber">
        <el-input
          v-model.trim="queryParams.phonenumber"
          placeholder="请输入手机号码"
          clearable
          style="width: 240px"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
        <el-button
          type="primary"
          icon="el-icon-search"
          size="mini"
          @click="handleQuery"
          >搜索</el-button
        >
        <el-button icon="el-icon-refresh" size="mini" type="primary" @click="resetQuery"
          >重置</el-button
        >
      </el-form-item>
    </el-form>
    <el-row>
      <el-table
        @row-click="clickRow"
        ref="table"
        :data="userList"
        @selection-change="handleSelectionChange"
        height="260px"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column
          label="用户名称"
          prop="userName"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="用户昵称"
          prop="nickName"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="部门"
          prop="dept.deptName"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="邮箱"
          prop="email"
          :show-overflow-tooltip="true"
        />
        <el-table-column
          label="手机"
          prop="phonenumber"
          :show-overflow-tooltip="true"
        />
        <el-table-column label="状态" align="center" prop="status">
          <template slot-scope="scope">
            <dict-tag
              :options="dict.type.sys_normal_disable"
              :value="scope.row.status"
            />
          </template>
        </el-table-column>
        <el-table-column
          label="创建时间"
          align="center"
          prop="createTime"
          width="180"
        >
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        v-show="total > 0"
        :total="total"
        :page.sync="queryParams.pageNum"
        :limit.sync="queryParams.pageSize"
        @pagination="getList"
      />
    </el-row>
    <div slot="footer" class="dialog-footer">
      <el-button type="primary" @click="handleSelectUser">确 定</el-button>
      <el-button @click="visible = false">取 消</el-button>
    </div>
  </el-dialog>
</template>

<script>
import { listUserNew } from "@/api/system/user";
import { number } from "echarts";
export default {
  dicts: ["sys_normal_disable"],
  props: {
    deptId: {
      type: String,
      default: "",
    },
    isSolo: {
      type: Boolean,
      default: true,
    },
    // 回显数据传值
    selectValues: {
      type: Number | String | Array,
      default: null,
      required: false,
    },
  },
  data() {
    return {
      type: 1,
      // 遮罩层
      visible: false,
      // 选中数组值
      ids: [],
      // 总条数
      total: 0,
      // 未授权用户数据
      userList: [],
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        status: "0",
        userName: "",
        phonenumber: "",
        deptId: "",
        orderByColumn: "createTime",
        isAsc: "desc",
      },
    };
  },
  watch: {},
  methods: {
    // 显示弹框
    show(type, promoterId) {
      this.queryParams.deptId = this.deptId;
      if (type) {
        this.type = type;
      }
      this.getList(promoterId);
      this.visible = true;
    },
    clickRow(row) {
      this.$refs.table.toggleRowSelection(row);
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      if (this.type == 1) {
        if (selection.length > 1) {
          this.$modal.msg("只能选择一个");
          this.$refs.table.clearSelection();
          return;
        }
        if (this.ids.length == 0) {
          this.ids = selection;
        } else {
          this.$modal.msg("只能选择一个");
          this.ids = [];
          // table与table的ref绑定的一样
          this.$refs.table.clearSelection();
        }
      } else {
        this.ids = selection;
      }
    },
    // 查询表数据
    getList(promoterId) {
      listUserNew(this.queryParams).then((res) => {
        this.userList = res.rows;
        this.total = res.total;
        if (promoterId) {
          promoterId = parseInt(promoterId);
          let userItem = this.userList.find((item) => {
            if (promoterId == item.userId) {
              return item;
            } else {
              return;
            }
          });
          if (userItem) {
            this.$nextTick(() => {
              this.$refs.table.toggleRowSelection(userItem, true);
            });
          }
        }
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.queryParams.orderByColumn = "createTime";
      this.queryParams.isAsc = "desc";
      this.handleQuery();
    },
    /** 选择用户操作 */
    handleSelectUser() {
      const deptId = this.queryParams.deptId;
      if (this.type === 2) {
        this.$emit("getDeptMoreUserInfo", this.ids);
      } else {
        this.$emit("getDeptUserInfo", this.ids);
      }
      this.visible = false;
    },
  },
};
</script>
