<template>
  <div class="manage-root personnel-manage">
    <Header />
    <div class="manage-root-contain">
        <nav-menu class="manage-root-contain-left" :activeMenuIndex="activeMenuIndex"></nav-menu>
        <div class="manage-root-contain-right personnel-manage-right">
            <breadcrumb :breadcrumbList="breadcrumbList" class="breadcrumb-box"></breadcrumb>
            <div class="personal-inner">
                <div class="common-title-box">
                    <h3>人员列表</h3>
                    <div class="btn-box">
                        <el-button type="primary" size="small" @click="handleEdit()">创建用户</el-button>
                    </div>
                </div>
                <div class="search-box">
                    <div class="search-item">
                        <label>搜索</label>
                        <el-input
                            placeholder="输入搜索内容"
                            v-model="searchInput" maxlength="200">
                            <i slot="suffix" class="el-input__icon el-icon-search" @click="getList(1)" style="cursor: pointer;"></i>
                        </el-input>
                    </div>
                    <div class="search-item">
                        <label>账户类型</label>
                        <el-select v-model="searchType" @change="getList(1)" placeholder="请选择">
                            <el-option
                                v-for="item in typeList"
                                :key="item.account_type"
                                :label="item.account_type_name"
                                :value="item.account_type">
                            </el-option>
                        </el-select>
                    </div>
                    <div class="search-item">
                        <label>状态</label>
                        <el-select v-model="searchStatus" @change="getList(1)" placeholder="请选择">
                            <el-option
                                v-for="item in $searchStatusList"
                                :key="item.status"
                                :label="item.status_name"
                                :value="item.status">
                            </el-option>
                        </el-select>
                    </div>
                </div>
                <el-table
                    class="search-table"
                    :data="tableData"
                    style="width: 100%"
                    @sort-change="handleSort"
                    :default-sort = dataSort
                    :max-height="tableHeight">
                    <el-table-column
                        prop="user_name"
                        label="用户名"
                        sortable="custom"
                        width="200"
                        class-name="user-info">
                        <template slot-scope="scope">
                            <el-image
                                class="touxiang"
                                :src="scope.row.image_url?scope.row.image_url:require('../../assets/avatar.png')"
                                fit="cover" style="width:24px;height:24px;margin-right:8px">
                            </el-image>
                            <!-- <img class="touxiang" :src="scope.row.image_url?scope.row.image_url:require('../../assets/avatar.png')" /> -->
                            <span class="name">{{scope.row.user_name}}</span>
                        </template>
                    </el-table-column>
                    <el-table-column
                        prop="real_name"
                        label="真实姓名"
                        width="112">
                    </el-table-column>
                    <el-table-column
                        prop="sex_name"
                        label="性别"
                        width="56">
                    </el-table-column>
                    <el-table-column
                        prop="account_type_name"
                        label="账户类型"
                        width="120" >
                    </el-table-column>
                    <el-table-column
                        prop="email"
                        label="邮箱"
                        min-width="200">
                    </el-table-column>
                    <el-table-column
                        prop="phone"
                        label="手机号"
                        width="144">
                    </el-table-column>
                    <el-table-column
                        prop="status"
                        label="状态"
                        width="96" >
                        <template slot-scope="scope">
                            <div class="status-box">
                                <span :style="{background:statusList[scope.row.status].bg}"></span>
                                <b :style="{color:statusList[scope.row.status].color}">{{statusList[scope.row.status].text}}</b>
                            </div>
                        </template>
                    </el-table-column>
                    <el-table-column
                        prop="create_time"
                        label="创建时间"
                        sortable="custom"
                        width="160">
                        <template slot-scope="scope">
                            {{scope.row.create_time?scope.row.create_time.substring(0,16):'-'}}
                        </template>
                    </el-table-column>
                    <el-table-column
                        fixed="right"
                        label="操作"
                        width="120">
                        <template slot-scope="scope">
                            <el-button
                                @click.native.prevent="handleEdit(scope.row)"
                                type="text"
                                size="small"
                                class="primary-btn">
                                编辑
                            </el-button>
                            <el-button
                                @click.native.prevent="handleUp(scope.row, scope.$index)"
                                type="text"
                                size="small"
                                class="primary-btn"
                                v-if="scope.row.status===0">
                                开启
                            </el-button>
                            <el-button
                                @click.native.prevent="handleUp(scope.row, scope.$index)"
                                type="text"
                                size="small"
                                class="red-btn"
                                v-else-if="scope.row.status===1">
                                停用
                            </el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <el-pagination
                    background
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                    :current-page="pageNumber"
                    :page-sizes="[10, 20, 30, 40]"
                    :page-size="pageSize"
                    layout="total, prev, pager, next, sizes, jumper"
                    :total="total_count">
                </el-pagination>
            </div>
        </div>
    </div>
  </div>
</template>

<script>
//这里可以导入其它文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
//例如：import 《组件名称》from ‘《组件路径》';
import Header from "../../components/Header.vue";
import NavMenu from "../../components/NavMenu.vue"
import Breadcrumb from '../../components/Breadcrumb.vue';
import { getLogin } from "@/api/ajax";
import { mapState } from 'vuex';

export default {
  //import引入的组件需要注入到对象中才能使用
  components: { Header, NavMenu, Breadcrumb },
  props: {},
  data() {
    //这里存放数据
    return {
        activeMenuIndex: "people_manage",
        breadcrumbList:[
            {
                icon:'contacts-line',
                url:'',
                text:''
            },
            {
                icon:'',
                url:'',
                text:'系统用户'
            }
        ],
        searchInput: '',
        searchType: -1,
        searchStatus: -1,
        typeList:[
            {
                account_type:-1,
                account_type_name:'全部'
            }
        ],
        statusList:{
            1:{
                text:'正常',
                bg:'#165DFF',
                color:''
            },
            0:{
                text:'停用',
                bg:'#F53F3F',
                color:'#F53F3F'
            }
        },
        tableData:[
            // {
            //     id:'1',
            //     userName:'admin',
            //     realName:'超级管理员',
            //     sex:'0',
            //     type:'0', // 0 管理员 1 平台管理员 2 内容管理员 3 财务管理员 4 兑换码管理员
            //     email:'d.dkemi@kqtdgbo.tj',
            //     phone:'13082684216',
            //     status:'1',
            //     data:'2018-02-03',
            //     img:''
            // }
        ],
        pageSize: window.localStorage.getItem('pageSize')?Number(window.localStorage.getItem('pageSize')):10, 
        pageNumber: window.localStorage.getItem('pageNumber')?Number(window.localStorage.getItem('pageNumber')):1,
        tableHeight: "", // 表格高度
        total_count: 0,
        dataSort: {}
    }
  },
  //计算属性 类似于data概念
  computed: {
    ...mapState(['$searchStatusList']),
  },
  //监控data中数据变化
  watch: {},
  //方法集合
  methods: {
    handleSort(value){
        let dataSort = {
            prop: value.prop,
            order: value.order
        }
        this.dataSort = dataSort
        this.getList()
    },
    // 查询列表
    getList(page){
        if(page){
            this.pageNumber = page
        }
        let MethodName = "/OrgServer/Manager/PageQuery/PageQuerySysUserList";
        let order_column_list = []
        if(this.dataSort != {}){
            if(this.dataSort.order=='descending'){
                order_column_list = [this.dataSort.prop + ':desc']
            }else if(this.dataSort.order=='ascending'){
                // 升序不传值
                order_column_list = [this.dataSort.prop]
            }else{
                order_column_list = ['create_time:desc']
            }
        }else{
            order_column_list = ['create_time:desc']
        }
        let data = {
            search_content:this.searchInput.trim(),
            account_type:this.searchType,
            status:this.searchStatus,
            page_capacity:this.pageSize,
            cur_page:this.pageNumber,
            order_column_list: order_column_list
        }
        getLogin(MethodName, data)
        .then((res) => {
            if(res.status===1){
               this.tableData = res.sys_user_list
               this.total_count = res.total_count
            }
        })
        .catch(() => {
            this.loading = false
        });
    },
    // 编辑账号
    handleEdit(row){
        // 根据登录用户判断当前用户是不是超管 在table里加上disabled

        // 点击时记录页码和每页条数
        window.localStorage.setItem('pageSize',this.pageSize)
        window.localStorage.setItem('pageNumber',this.pageNumber)
        if(row&&row.id){
            this.$router.push({
                path: "/editPerson",
                query: {
                    id: row?row.id:''
                },
            });
        }else{
            this.$router.push({
                path: "/createPerson"
            });
        }
        
    },
    // 停用 启用
    handleUp(row, index) {
      let Mname = "/OrgServer/Manager/SysUserManager/EnableSysUser";
      let updataData = JSON.parse(JSON.stringify(row));
      let data = {
        id: row.id
      };
      if (row.status === 0) {
        // 下架状态
        data.is_enable = "true";
        updataData.status = 1;
      } else if (row.status === 1) {
        data.is_enable = "false";
        updataData.status = 0;
      }
      getLogin(Mname, data).then(res => {
        this.$message.success("操作成功");
        this.$set(this.tableData, index, updataData);
        this.getList()
      });
    },
    handleSizeChange(val) {
        this.pageSize = val
        this.pageNumber = 1
        this.getList()
    },
    handleCurrentChange(val) {
        this.pageNumber = val
        this.getList()
    },
    //计算table高度(动态设置table高度)
    getTableHeight() {
      let tableH = 370; //距离页面下方的高度
      let tableHeightDetil = window.innerHeight - tableH;
      if (tableHeightDetil <= 300) {
        this.tableHeight = 300;
      } else {
        this.tableHeight = window.innerHeight - tableH;
      }
    },
    // 用户类型列表
    getUserAccountTypeList(){
        let MethodName = "/OrgServer/DictManager/GetSysUserAccountTypeList";
        getLogin(MethodName, {})
        .then((res) => {
            if(res.status===1){
                this.typeList = this.typeList.concat(res.account_type_list)
            }
        })
        .catch(() => {
            this.loading = false
        });
    }
  },
  //生命周期 - 创建完成（可以访问当前this实例）
  created() {
    this.getTableHeight();
    this.getUserAccountTypeList()
    this.getList()
  },
  //生命周期 - 挂载完成（可以访问DOM元素）
  mounted() {

  },
  //生命周期-创建之前
  beforeCreated() { },
  //生命周期-挂载之前
  beforeMount() { },
  //生命周期-更新之前
  beforUpdate() { },
  //生命周期-更新之后
  updated() { },
  //生命周期-销毁之前
  beforeDestory() { },
  //生命周期-销毁完成
  destoryed() { },
  //如果页面有keep-alive缓存功能，这个函数会触发
  activated() { }
}
</script>
<style lang="scss" scoped>
/* @import url(); 引入css类 */
</style>
<style lang="scss">
.personal-inner{
    .user-info{
        .cell{
            display: flex;
            align-items: center;
            .touxiang{
                width: 24px;
                height: 24px;
                border-radius: 50%;
                margin-right: 8px;
            }
        }
    }
    .type-info{
        background: #F2F3F5;
        border-radius: 2px;
        color: #1D2129;
        padding: 2px 8px 3px 8px;
        font-weight: 500;
        font-size: 14px;
        line-height: 22px;
        height: auto;
        border: none;
    }
}
</style>