Your Name
2022-04-08 1f2a259f8cbb7eb0b12d12895116c309eb8cd609
src/views/systemManage/userManage/index.vue
@@ -1,6 +1,6 @@
<template>
    <div class="app-container">
        <div>
        <div class="filter-container">
            <el-form :inline="true" :model="queryForm">
                <el-form-item label="用户名">
                    <el-input
@@ -49,6 +49,7 @@
                <el-form-item>
                    <el-button
                        v-if="getBtnPermission('add')"
                        v-show="userType != 3"
                        class="filter-item"
                        style="margin-left: 10px;"
                        type="primary"
@@ -59,6 +60,7 @@
                <el-form-item>
                    <el-button
                        v-if="getBtnPermission('import')"
                        v-show="userType != 3"
                        class="filter-item"
                        style="margin-left: 10px;"
                        type="primary"
@@ -66,77 +68,66 @@
                        @click="showImportHandle"
                    >导入</el-button>
                </el-form-item>
                <el-form-item>
                    <el-button
                        v-if="getBtnPermission('import')"
                        v-show="userType != 3"
                        class="filter-item"
                        style="margin-left: 10px;"
                        type="primary"
                        icon="el-icon-upload2"
                        @click="showImportHandle2"
                    >导入统一社会信用代码</el-button>
                </el-form-item>
            </el-form>
        </div>
        <div style="display: block;margin-top: -10px">
            <div class="basic_search">
                <span>区域:</span>
                <el-select v-model="queryForm.province" clearable filterable @change="changeArea('province')">
                    <el-option
                        v-for="item in provinceList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.name"
                    >
                    </el-option>
                </el-select>
            </div>
            <div class="basic_search">
                <el-select v-model="queryForm.city" prop="city" clearable filterable @change="changeArea('city')">
                    <el-option
                        v-for="item in cityList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.name"
                    >
                    </el-option>
                </el-select>
            </div>
            <div class="basic_search">
                <el-select v-model="queryForm.area" clearable filterable @change="changeArea('area')">
                    <el-option
                        v-for="item in districtList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.name"
                    >
                    </el-option>
                </el-select>
            </div>
            <div class="basic_search">
                <el-select v-model="queryForm.town" clearable filterable @change="changeArea('town')" >
                    <el-option
                        v-for="item in streetList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.name"
                    >
                    </el-option>
                </el-select>
            </div>
            <div class="basic_search">
                <el-select v-model="queryForm.community" clearable filterable>
                    <el-option
                        v-for="item in committeeList"
                        :key="item.id"
                        :label="item.name"
                        :value="item.name"
                    >
                    </el-option>
                </el-select>
            </div>
        </div>
        <!--        <div style="display: block;margin-top: -10px;margin-bottom: 10px">-->
        <!--            <div class="basic_search">-->
        <!--                <span>区域:</span>-->
        <!--                <el-select v-model="queryForm.province" clearable filterable @change="changeArea('province')">-->
        <!--                    <el-option-->
        <!--                        v-for="item in provinceList"-->
        <!--                        :key="item.id"-->
        <!--                        :label="item.name"-->
        <!--                        :value="item.name"-->
        <!--                    >-->
        <!--                    </el-option>-->
        <!--                </el-select>-->
        <!--            </div>-->
        <!--            <div class="basic_search">-->
        <!--                <el-select v-model="queryForm.city" prop="city" clearable filterable @change="changeArea('city')">-->
        <!--                    <el-option-->
        <!--                        v-for="item in cityList"-->
        <!--                        :key="item.id"-->
        <!--                        :label="item.name"-->
        <!--                        :value="item.name"-->
        <!--                    >-->
        <!--                    </el-option>-->
        <!--                </el-select>-->
        <!--            </div>-->
        <!--            <div class="basic_search">-->
        <!--                <el-select v-model="queryForm.area" clearable filterable @change="changeArea('area')">-->
        <!--                    <el-option-->
        <!--                        v-for="item in districtList"-->
        <!--                        :key="item.id"-->
        <!--                        :label="item.name"-->
        <!--                        :value="item.name"-->
        <!--                    >-->
        <!--                    </el-option>-->
        <!--                </el-select>-->
        <!--            </div>-->
        <!--            <div class="basic_search">-->
        <!--                <el-select v-model="queryForm.town" clearable filterable @change="changeArea('town')" >-->
        <!--                    <el-option-->
        <!--                        v-for="item in streetList"-->
        <!--                        :key="item.id"-->
        <!--                        :label="item.name"-->
        <!--                        :value="item.name"-->
        <!--                    >-->
        <!--                    </el-option>-->
        <!--                </el-select>-->
        <!--            </div>-->
        <!--            <div class="basic_search">-->
        <!--                <el-select v-model="queryForm.community" clearable filterable>-->
        <!--                    <el-option-->
        <!--                        v-for="item in committeeList"-->
        <!--                        :key="item.id"-->
        <!--                        :label="item.name"-->
        <!--                        :value="item.name"-->
        <!--                    >-->
        <!--                    </el-option>-->
        <!--                </el-select>-->
        <!--            </div>-->
        <!--        </div>-->
        <div class="table_content">
            <el-table
                v-loading="listLoading"
@@ -149,71 +140,110 @@
                @sort-change="sortUserChange"
            >
                <el-table-column type="index" label="" align="center" width="60"/>
                <el-table-column label="用户名" prop="username" align="center" sortable="custom">
                <el-table-column label="用户名" prop="username" align="center" sortable="custom" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.username }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="单位" prop="company" align="center" width="150" sortable="custom">
                <el-table-column label="真实姓名" prop="realname" align="center" sortable="custom" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.realname }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="身份证号" prop="idcard" align="center" sortable="custom" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.idcard }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="单位" prop="company" align="center" sortable="custom" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.company }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="办公电话" prop="phone" align="center" sortable="custom">
                <el-table-column label="部门" prop="department" align="center" sortable="custom" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.phone }}</span>
                        <span>{{ scope.row.department }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="手机号" prop="mobile" align="center" sortable="custom">
                    <template slot-scope="scope">
                        <span>{{ scope.row.mobile }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="邮箱" prop="email" align="center" sortable="custom">
                    <template slot-scope="scope">
                        <span>{{ scope.row.email }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="部门" prop="department" align="center" sortable="custom">
                    <template slot-scope="scope">
                        <span>{{ scope.row.department? scope.row.department.name:'' }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="职务" prop="job" align="center" sortable="custom">
                <el-table-column label="职位" prop="job" align="center" sortable="custom" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.job }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="统一社会信用代码" prop="code" align="center" sortable="custom">
                <el-table-column label="用户类型" prop="type" align="center" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.code }}</span>
                        <span>{{ scope.row.type | parseType}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="用户分类" prop="type" align="center">
                    <template slot-scope="scope">
                        <span>{{ scope.row.type | filterUserType }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="角色" prop="role" align="center">
                <el-table-column label="角色" prop="role" align="center" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.roles | parseRoles }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="管辖地区" prop="province" align="center" width="300" sortable="custom">
                <el-table-column label="人员MAC地址" prop="deviceNo" align="center" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.province+'-'+scope.row.city+'-'+scope.row.area+'-'+scope.row.town+'-'+scope.row.community | parseGX}}</span>
                        <span>{{ scope.row.deviceNo}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="更新时间" prop="lastmodifieddate" align="center" sortable="custom">
                <el-table-column label="人脸数据" prop="role" align="center" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.lastmodifieddate | parseTime('{y}-{m}-{d}') }}</span>
                        <span>{{ scope.row.code == null || scope.row.code === '' ?"":"已采集" }}</span>
                    </template>
                </el-table-column>
                <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
                <el-table-column label="是否通过考试" prop="ispass" align="center" width="100px">
                    <template slot-scope="scope">
                        <div v-for="item in isList">
                            <div v-if="item.id === scope.row.ispass">
                                <span>{{item.name}}</span>
                            </div>
                        </div>
                    </template>
                </el-table-column>
                <el-table-column label="考试合格有效期" prop="starttime" align="center" width="300px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.starttime}}</span>
                        <span>-</span>
                        <span>{{ scope.row.endtime}}</span>
                    </template>
                </el-table-column>
                <el-table-column label="是否单位负责人" prop="iscompany" align="center" width="100px">
                    <template slot-scope="scope">
                        <div v-for="item in isList">
                            <div v-if="item.id === scope.row.iscompany">
                                <span>{{item.name}}</span>
                            </div>
                        </div>
                    </template>
                </el-table-column>
                <el-table-column label="是否部门负责人" prop="isdepartment" align="center" width="100px">
                    <template slot-scope="scope">
                        <div v-for="item in isList">
                            <div v-if="item.id === scope.row.isdepartment">
                                <span>{{item.name}}</span>
                            </div>
                        </div>
                    </template>
                </el-table-column>
                <el-table-column label="状态" prop="status" align="center" width="100px">
                    <template slot-scope="scope">
                        <span>{{ scope.row.status | parseStatus }}</span>
                    </template>
                </el-table-column>
                <!--                <el-table-column label="更新时间" prop="lastmodifieddate" align="center" sortable="custom">-->
                <!--                    <template slot-scope="scope">-->
                <!--                        <span>{{ scope.row.lastmodifieddate | parseTime('{y}-{m}-{d}') }}</span>-->
                <!--                    </template>-->
                <!--                </el-table-column>-->
                <el-table-column label="操作" align="center" width="250" class-name="small-padding fixed-width" fixed="right">
                    <template slot-scope="scope">
                        <el-button type="text" @click="showEditHandle(scope.row)">编辑</el-button>
                        <el-button  v-show="userType != 3" :disabled="disableRole(scope.row)" type="text" align="center" @click="showAssignRole(scope.row)">分配角色</el-button>
                        <el-button   :disabled="scope.row.type==1" type="text" style="color:red;" @click="deleteHandle(scope.row)">删除</el-button>
                        <el-button type="text" @click="showWorkLicense(scope.row)">查看工作证</el-button>
                        <el-button  v-show="userType != 3" :disabled="scope.row.type==1" type="text" style="color:red;" @click="deleteHandle(scope.row)">删除</el-button>
                        <el-button  v-if="scope.row.cardId === ''" v-show="userType !== 3" :disabled="scope.row.type===1" type="text" @click="bindCardHandle(scope.row)">绑定人员卡</el-button>
                        <el-button  v-else v-show="userType !== 3" :disabled="scope.row.type===1" type="text" style="color:red;" @click="setInvalidDel(scope.row)">删除人员卡</el-button>
                    </template>
                </el-table-column>
            </el-table>
@@ -231,108 +261,175 @@
                @current-change="handleCurrentChange"
            />
        </div>
        <el-dialog :title="dialogStatus==='create'?'新增':'编辑'" :visible.sync="dialogFormVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="700px">
            <el-form ref="dataForm" :rules="dataFormRules" :model="dataForm" label-position="right" label-width="100px" style="margin-left:50px;width:500px;" element-loading-text="保存中...">
                <el-form-item label="用户名:" prop="username">
                    <el-input v-model.trim="dataForm.username"/>
                </el-form-item>
        <el-dialog :title="dialogStatus==='create'?'新增':'编辑'" :visible.sync="dialogFormVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="50%">
            <el-form ref="dataForm" :rules="dialogStatus==='create'?dataFormRules:rules" :model="dataForm" label-position="right" label-width="150px" style="padding-right: 50px" element-loading-text="保存中...">
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="用户名(手机号):" prop="username">
                            <el-input v-model.trim="dataForm.username"/>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="真实姓名:" prop="realname">
                            <el-input v-model.trim="dataForm.realname"/>
                        </el-form-item>
                    </el-col>
                </el-row>
                <div v-if="dialogStatus=='create'">
                    <el-form-item label="密码:" prop="password">
                        <el-input v-model.trim="dataForm.password" :type="passwordType" placeholder="请输入密码">
                            <el-button slot="append" icon="el-icon-view" @click="showPwd"/>
                        </el-input>
                    </el-form-item>
                    <el-form-item label="确认密码:" prop="confirmPassword">
                        <el-input v-model.trim="dataForm.confirmPassword" :type="confirmPasswordType" placeholder="请输入确认密码" @change="passwordChangeEvent">
                            <el-button slot="append" icon="el-icon-view" @click="showConfirmPwd"/>
                        </el-input>
                    </el-form-item>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="密码:" prop="password">
                                <el-input v-model.trim="dataForm.password" :type="passwordType" placeholder="请输入密码">
                                    <el-button slot="append" icon="el-icon-view" @click="showPwd"/>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="确认密码:" prop="confirmPassword">
                                <el-input v-model.trim="dataForm.confirmPassword" :type="confirmPasswordType" placeholder="请输入确认密码" @change="passwordChangeEvent">
                                    <el-button slot="append" icon="el-icon-view" @click="showConfirmPwd"/>
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                </div>
                <div v-else>
                    <el-form-item label="密码:">
                        <el-input v-model.trim="dataForm.password" :type="passwordType" placeholder="请输入密码">
                            <el-button slot="append" icon="el-icon-view" @click="showPwd"/>
                        </el-input>
                    </el-form-item>
                    <el-form-item label="确认密码:">
                        <el-input v-model.trim="dataForm.confirmPassword" :type="confirmPasswordType" placeholder="请输入确认密码" @change="passwordChangeEvent">
                            <el-button slot="append" icon="el-icon-view" @click="showConfirmPwd"/>
                        </el-input>
                    </el-form-item>
                    <el-row>
                        <el-col :span="12">
                            <el-form-item label="密码:" prop="password">
                                <el-input v-model.trim="dataForm.password" :type="passwordType" placeholder="请输入密码">
                                    <el-button slot="append" icon="el-icon-view" @click="showPwd"/>
                                </el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="12">
                            <el-form-item label="确认密码:" prop="confirmPassword">
                                <el-input v-model.trim="dataForm.confirmPassword" :type="confirmPasswordType" placeholder="请输入确认密码" @change="passwordChangeEvent">
                                    <el-button slot="append" icon="el-icon-view" @click="showConfirmPwd"/>
                                </el-input>
                            </el-form-item>
                        </el-col>
                    </el-row>
                </div>
                <el-form-item label="单位:" prop="company">
                    <el-input v-model.trim="dataForm.company"/>
                </el-form-item>
                <el-form-item label="办公电话:" prop="phone">
                    <el-input v-model.trim="dataForm.phone"/>
                </el-form-item>
                <el-form-item label="手机号:" prop="mobile">
                    <el-input v-model.trim="dataForm.mobile" oninput="value=value.replace(/^\.+|[^\d.]/g,'')"/>
                </el-form-item>
                <el-form-item label="邮箱:" prop="email">
                    <el-input v-model.trim="dataForm.email"/>
                </el-form-item>
                <el-form-item label="部门:" prop="department">
                    <el-input v-model.trim="dataForm.department"/>
                </el-form-item>
                <el-form-item label="职务:" prop="job">
                    <el-input v-model.trim="dataForm.job"/>
                </el-form-item>
                <el-form-item label="统一社会信用代码:" prop="job">
                    <el-input v-model.trim="dataForm.code"/>
                </el-form-item>
                <el-form-item label="管辖地区:">
                    <el-select v-model="dataForm.province" filterable placeholder="请选择省份" @change="resetCity">
                        <el-option
                            v-for="item in provinceList"
                            :key="item.name"
                            :label="item.name"
                            :value="item.name">
                        </el-option>
                    </el-select>
                    <el-select v-model="dataForm.city"  placeholder="请选择城市" @change="resetArea">
                        <el-option
                            v-for="item in cityList"
                            :key="item.name"
                            :label="item.name"
                            :value="item.name"
                        >
                        </el-option>
                    </el-select>
                    <el-select v-model="dataForm.area"  placeholder="请选择区县" @change="resetTown">
                        <el-option
                            v-for="item in areaList"
                            :key="item.name"
                            :label="item.name"
                            :value="item.name"
                        >
                        </el-option>
                    </el-select>
                    <el-select v-model="dataForm.town"  placeholder="请选择街道" @change="resetCommunity">
                        <el-option
                            v-for="item in townList"
                            :key="item.name"
                            :label="item.name"
                            :value="item.name"
                        >
                        </el-option>
                    </el-select>
                    <el-select v-model="dataForm.community"  placeholder="请选择社区">
                        <el-option
                            v-for="item in communityList"
                            :key="item.name"
                            :label="item.name"
                            :value="item.name"
                        >
                        </el-option>
                    </el-select>
                </el-form-item>
                <el-form-item label="用户类型:" prop="type">
                    <el-select v-model.trim="dataForm.type" placeholder="请选择用户类型" auto-complete="on" style="width:100%;">
                        <el-option v-show="userType != 3" :value="2" label="管理员"/>
                        <el-option :value="3" label="普通用户"/>
                    </el-select>
                </el-form-item>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="身份证号:" prop="idcard">
                            <el-input v-model.trim="dataForm.idcard"/>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="邮箱:" prop="email">
                            <el-input v-model.trim="dataForm.email"/>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="单位:" prop="company">
                            <el-select v-model.trim="dataForm.company"  auto-complete="on" style="width:100%;">
                                <el-option
                                    v-for="item in companyList"
                                    :key="item.id"
                                    :value="item.company"
                                    :label="item.company"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="部门:" prop="department">
                            <el-select v-model.trim="dataForm.department"  auto-complete="on" style="width:100%;">
                                <el-option
                                    v-for="item in departmentList"
                                    :key="item.id"
                                    :value="item.department"
                                    :label="item.department"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="职务:" prop="job">
                            <el-input v-model.trim="dataForm.job"/>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="用户类型:" prop="type">
                            <el-select v-model.trim="dataForm.type" placeholder="请选择用户类型" auto-complete="on" style="width:100%;">
                                <el-option
                                    v-for="item in typeList"
                                    :key="item.id"
                                    :value="item.id"
                                    :label="item.name"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="是否单位负责人:" prop="iscompany">
                            <el-select v-model.trim="dataForm.iscompany"   style="width:100%;">
                                <el-option
                                    v-for="item in isList"
                                    :key="item.id"
                                    :value="item.id"
                                    :label="item.name"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="是否部门负责人:" prop="isdepartment">
                            <el-select v-model.trim="dataForm.isdepartment" style="width:100%;">
                                <el-option
                                    v-for="item in isList"
                                    :key="item.id"
                                    :value="item.id"
                                    :label="item.name"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="状态:" prop="status">
                            <el-select v-model.trim="dataForm.status"  auto-complete="on" style="width:100%;">
                                <el-option
                                    v-for="item in statusList"
                                    :key="item.id"
                                    :value="item.id"
                                    :label="item.name"
                                >
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="12">
                        <el-form-item label="定位卡编号:" prop="empNo">
                            <el-input v-model.trim="dataForm.empNo"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="12">
                        <el-form-item label="定位卡MAC地址:" prop="deviceNo">
                            <el-input v-model.trim="dataForm.deviceNo"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button @click="dialogFormVisible = false">取消</el-button>
@@ -379,38 +476,48 @@
            </div>
        </el-dialog>
        <el-dialog
            :visible.sync="importDialogFormVisible2"
            :visible.sync="bindDialogFormVisible"
            :modal-append-to-body="false"
            :close-on-click-modal="false"
            title="用户统一社会信用代码导入"
            width="700px"
            title="绑定人员卡"
            width="550px"
        >
            <el-form
                ref="importForm"
                label-position="right"
                label-width="120px"
                style="margin-left:50px;width:500px;"
                element-loading-text="导入中..."
            >
                <el-form-item label="导入文件:">
                    <input ref="importLabInput2" type="file" accept=".xls, .xlsx" >
                </el-form-item>
                <el-form-item label="excel参考模板:">
                    <el-button type="text" @click="viewHandle2">下载模板</el-button>
                </el-form-item>
                style="margin-left:30px;width:400px;">
                <el-row>
                    <el-col :span="24">
                        <el-form-item label="定位卡编号:" prop="empNo">
                            <el-input v-model.trim="cardDataForm.empNo"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
                <el-row>
                    <el-col :span="24">
                        <el-form-item label="定位卡MAC地址:" prop="deviceNo">
                            <el-input v-model.trim="cardDataForm.deviceNo"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
            </el-form>
            <div slot="footer" class="dialog-footer">
                <el-button @click="importDialogFormVisible2 = false">取消</el-button>
                <el-button :disabled="importDisabled2" type="primary" @click="importHandle2()">导入</el-button>
                <el-button @click="bindDialogFormVisible = false">取消</el-button>
                <el-button type="primary" @click="bindCard()">确认</el-button>
            </div>
        </el-dialog>
        <div style="clear: both;"/>
        <workLicense ref="workLicense"></workLicense>
    </div>
</template>
<script>
    import workLicense from './components/workLicense/index'
    import { mapGetters } from 'vuex'
    import { userList, createUser, deleteUser, updateUser, importUser,importUserCode, importDistrict,getDistrict,getDistrictByName,updateUserRole} from '@/api/user'
    import { userList, createUser, deleteUser, updateUser, importUser,
        importDistrict,getDistrict,getDistrictByName,updateUserRole,setInvalidDel,bindCard} from '@/api/user'
    import { checkBtnPermission } from '@/utils/permission'
    import { roleList } from '@/api/role'
    import { parseTime, computePageCount, parseUserType } from '@/utils'
@@ -418,8 +525,9 @@
    import Cookies from 'js-cookie'
    import { Message, MessageBox } from 'element-ui'
    import {getCityListData, getProvinceListData} from "@/api/area";
    import { getAllCompany } from '../../../api/unitManage'
    import { getAllDepartment } from '../../../api/departmentManage'
    const exampleFile = require('@/assets/example/user.xlsx')
    const exampleFile2 = require('@/assets/example/userCode.xlsx')
    export default {
        name: 'UserTable',
        filters: {
@@ -435,6 +543,20 @@
                    message = message.substring(0, message.lastIndexOf(','))
                }
                return message
            },
            parseType(type){
                let typeList = [{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}]
                if(type){
                    let a = typeList.find(item => item.id === type)
                    return a.name
                }
            },
            parseStatus(status){
                if(status === 1){
                    return "正常"
                }else if(status === 0){
                    return "停用"
                }
            },
            filterSafety(value) {
                if (value) {
@@ -483,6 +605,9 @@
                'username'
            ])
        },
        components:{
            workLicense
        },
        data() {
            let _ref = this;
            const validateEmail = (rule, value, callback) => {
@@ -509,6 +634,7 @@
                tableKey: 0,
                userData: null,
                listLoading: true,
                iscompanyList:[{id:1,name:'否'},{id:0,name:'是'}],
                queryForm: {
                    username: '',
                    company:'',
@@ -524,42 +650,58 @@
                    id: '',
                    username: '',
                    password: '',
                    email: '',
                    phone: '',
                    mobile: '',
                    company: '',
                    department: '',
                    province: '',
                    city: '',
                    area: '',
                    town: '',
                    community: '',
                    type:'',
                    realname:'',
                    idcard:'',
                    email:'',
                    company:'',
                    department:'',
                    job:'',
                    code:'',
                    type:'',
                    iscompany:'',
                    isdepartment:'',
                    ispass:'',
                    starttime:'',
                    endtime:'',
                    status:'',
                    createdby:'',
                    createddate:'',
                    lastmodifiedby:'',
                    lastmodifieddate:'',
                    empNo:'',
                    deviceNo:'',
                },
                cardDataForm:{
                    username:'',
                    empNo:'',
                    deviceNo:''
                },
                importDialogFormVisible: false,
                importDialogFormVisible2: false,
                importDisabled: false,
                importDisabled2: false,
                dialogFormVisible: false,
                dialogFormVisible2: false,
                bindDialogFormVisible: false,
                dialogStatus: '',
                dataFormRules: {
                    name: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
                    email: [{ validator: validateEmail, trigger: 'blur' }],
                    username: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
                    realname: [{ required: true, message: '真实姓名不能为空', trigger: 'blur' }],
                    // email: [{ validator: validateEmail, trigger: 'blur' }],
                    password: [{ required: true, message: '密码不能为空', trigger: 'blur' }],
                    confirmPassword: [{ required: true, message: '确认密码不能为空', trigger: 'blur' }],
                    type: [{ required: true, message: '用户类型不能为空', trigger: 'blur' }]
                    type: [{ required: true, message: '用户类型不能为空', trigger: 'change' }],
                    status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
                    isanalysis: [{ required: true, message: '是否气体检测中心不能为空', trigger: 'change' }]
                },
                provinceList:[],
                cityList:[],
                areaList:[],
                townList:[],
                communityList:[],
                districtList:[],
                streetList:[],
                committeeList:[],
                rules: {
                    username: [{ required: true, message: '用户名不能为空', trigger: 'blur' }],
                    realname: [{ required: true, message: '真实姓名不能为空', trigger: 'blur' }],
                    // email: [{ validator: validateEmail, trigger: 'blur' }],
                    // password: [{ required: true, message: '密码不能为空', trigger: 'blur' }],
                    // confirmPassword: [{ required: true, message: '确认密码不能为空', trigger: 'blur' }],
                    type: [{ required: true, message: '用户类型不能为空', trigger: 'change' }],
                    status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
                    isanalysis: [{ required: true, message: '是否气体检测中心不能为空', trigger: 'change' }]
                },
                isList:[{id:1,name:'是'},{id:0,name:'否'}],
                typeList:[{id:1,name:'超级管理员'},{id:2,name:'管理员'},{id:3,name:'普通用户'}],
                dialogUserRoleFormVisible: false,
                userRoleDataForm: {
                    userRoles: [],
@@ -573,13 +715,16 @@
                confirmPasswordType: 'password',
                templateRadio: '',
                instituteList: [],
                departmentList: []
                departmentList: [],
                companyList:[],
                statusList:[{id:1,name:'正常'},{id:0,name:'停用'}],
            }
        },
        created() {
            console.log(this.userType)
            this.getUserList()
            this.getProvince()
            this.getDepartmentData()
            this.getCompanyData()
        },
        methods: {
            refreshHandle: function() {
@@ -602,9 +747,10 @@
                params['pageIndex'] = _this.currentPage
                params['pageSize'] = _this.pageSize
                params['type'] = _this.userType
                params['isMain'] = true
                for (const i in _this.queryForm) {
                    if (_this.queryForm[i] != undefined && _this.queryForm[i].toString() != '') {
                        params[i] = this.queryForm[i]
                        params[i] = _this.queryForm[i]
                    }
                }
                _this.listLoading = true
@@ -618,7 +764,7 @@
                        _this.currentPage = result.pageIndex
                        _this.userData = result.result
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                    _this.listLoading = false
                }).catch(error => {
@@ -626,6 +772,11 @@
                    parseError({ error: error, vm: _this })
                })
            },
            showWorkLicense(row){
                this.$refs.workLicense.openWorkLicense(row)
            },
            createHandle: function() {
                this.$refs['dataForm'].validate((valid) => {
                    const _this = this
@@ -646,7 +797,7 @@
                                })
                                _this.getUserList()
                            } else {
                                parseError({ error: res.message, vm: _this })
                                parseError({ error: res.data.message, vm: _this })
                            }
                        }).catch(error => {
                            parseError({ error: error, vm: _this })
@@ -682,7 +833,7 @@
                        })
                        _this.getUserList()
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                }).catch(error => {
                    parseError({ error: error, vm: _this })
@@ -693,23 +844,52 @@
                    id: '',
                    username: '',
                    password: '',
                    email: '',
                    phone: '',
                    mobile: '',
                    company: '',
                    department: '',
                    province: '',
                    city: '',
                    area: '',
                    town: '',
                    community: '',
                    type: '',
                    job: ''
                    realname:'',
                    idcard:'',
                    email:'',
                    company:'',
                    department:'',
                    job:'',
                    type:'',
                    iscompany:'',
                    isdepartment:'',
                    ispass:'',
                    starttime:'',
                    endtime:'',
                    status:'',
                    createdby:'',
                    createddate:'',
                    lastmodifiedby:'',
                    lastmodifieddate:'',
                }
                this.cityList = []
                this.areaList = []
                this.townList = []
                this.communityList = []
            },
            getDepartmentData(){
                getAllDepartment().then(res=>{
                    if(res.data.code === '200'){
                        this.departmentList = res.data.result
                    }else{
                        this.$message({
                            type:'warning',
                            message:res.data.message
                        })
                    }
                }).catch(error =>{
                    parseError({error:error,vm:this})
                })
            },
            getCompanyData(){
                getAllCompany().then(res=>{
                    if(res.data.code === '200'){
                        this.companyList = res.data.result
                    }else{
                        this.$message({
                            type:'warning',
                            message:res.data.message
                        })
                    }
                }).catch(error =>{
                    parseError({error:error,vm:this})
                })
            },
            showCreateHandle() {
                this.resetDataForm()
@@ -741,7 +921,7 @@
                                })
                                _this.getUserList()
                            } else {
                                parseError({ error: res.message, vm: _this })
                                parseError({ error: res.data.message, vm: _this })
                            }
                        }).catch(error => {
                            parseError({ error: error, vm: _this })
@@ -758,7 +938,7 @@
                        const roleList = res.result
                        _this.roleList = roleList
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                })
            },
@@ -799,7 +979,7 @@
                                })
                                _this.getUserList()
                            } else {
                                parseError({ error: res.message, vm: _this })
                                parseError({ error: res.data.message, vm: _this })
                            }
                        })
                    }
@@ -807,43 +987,12 @@
            },
            showEditHandle: function(row) {
                this.resetDataForm()
                this.dialogStatus = 'editor'
                this.dataForm.id = row.id
                this.dataForm.username = row.username
                this.dataForm.email = row.email
                this.dataForm.phone = row.phone
                this.dataForm.company = row.company
                this.dataForm.department = row.department
                this.dataForm.province = row.province
                this.dataForm.city = row.city
                this.dataForm.area = row.area
                this.dataForm.town = row.town
                this.dataForm.community = row.community
                this.dataForm.job = row.job
                this.dataForm.type = row.type
                this.dataForm = row
                this.dataForm.password = null
                this.dialogStatus = 'update'
                this.dialogFormVisible = true
                this.$nextTick(() => {
                    this.$refs['dataForm'].clearValidate()
                })
                const _this = this
                const params = {}
                params['province'] = row.province
                params['city'] = row.city
                params['area'] = row.area
                params['town'] = row.town
                params['community'] = row.community
                getDistrictByName(params).then(response => {
                    const res = response.data
                    if (res.code == 200){
                        this.provinceList = res.result.provinceList;
                        this.cityList = res.result.cityList;
                        this.areaList = res.result.areaList;
                        this.townList = res.result.townList;
                        this.communityList = res.result.communityList;
                    } else {
                        parseError({ error: res.message, vm: _this })
                    }
                }).catch(error => {
                })
            },
@@ -900,15 +1049,8 @@
                this.importDisabled = false
                this.importDialogFormVisible = true
            },
            showImportHandle2() {
                this.importDisabled2 = false
                this.importDialogFormVisible2 = true
            },
            viewHandle() {
                window.open(exampleFile, '_blank')
            },
            viewHandle2() {
                window.open(exampleFile2, '_blank')
            },
            importHandle() {
                const _this = this
@@ -931,35 +1073,7 @@
                            })
                            _this.getUserList()
                        } else {
                            parseError({ error: res.message, vm: _this })
                        }
                    })
                    .catch((error) => {
                        parseError({ error: error, vm: _this })
                    })
            },
            importHandle2() {
                const _this = this
                const formData = new FormData()
                const userName = Cookies.get('userName')
                formData.append('operator', userName)
                const files = this.$refs['importLabInput2'].files
                if (files && files.length > 0) {
                    formData.append('file', files[0])
                }
                formData.append('action', 'import')
                importUserCode(formData)
                    .then((response) => {
                        const res = response.data
                        if (res.code == 200) {
                            _this.importDialogFormVisible = false
                            _this.$message({
                                message: '导入成功',
                                type: 'success'
                            })
                            _this.getUserList()
                        } else {
                            parseError({ error: res.message, vm: _this })
                            parseError({ error: res.data.message, vm: _this })
                        }
                    })
                    .catch((error) => {
@@ -976,7 +1090,7 @@
                    if (res.code == 200){
                        this.provinceList = res.result;
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                }).catch(error => {
                })
@@ -999,7 +1113,7 @@
                        this.dataForm.town = '';
                        this.dataForm.community = '';
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                }).catch(error => {
                })
@@ -1020,7 +1134,7 @@
                        this.dataForm.town = '';
                        this.dataForm.community = '';
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                }).catch(error => {
                })
@@ -1039,7 +1153,7 @@
                        this.dataForm.town = '';
                        this.dataForm.community = '';
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                }).catch(error => {
                })
@@ -1056,7 +1170,7 @@
                        this.communityList = res.result;
                        this.dataForm.community = '';
                    } else {
                        parseError({ error: res.message, vm: _this })
                        parseError({ error: res.data.message, vm: _this })
                    }
                }).catch(error => {
                })
@@ -1114,6 +1228,54 @@
                    }
                }
            },//市、镇、街道、委员会
            bindCardHandle(row){
                this.cardDataForm = {
                    username:'',
                    empNo:'',
                    deviceNo:''
                };
                this.cardDataForm.username = row.username;
                this.bindDialogFormVisible = true;
            },
            bindCard(){
                const _this = this;
                bindCard(_this.cardDataForm).then(response => {
                    const res = response.data
                    debugger
                    if (res.code === '200'){
                        _this.$message({
                            message: '绑定成功',
                            type: 'success'
                        })
                        this.bindDialogFormVisible = false;
                        _this.getUserList();
                    } else {
                        parseError({ error: res.message, vm: _this })
                    }
                }).catch(error => {
                })
            },
            setInvalidDel(row){
                const _this = this;
                setInvalidDel(row).then(response => {
                    const res = response.data
                    if (res.code === '200'){
                        _this.$message({
                            message: '删除成功',
                            type: 'success'
                        })
                        _this.getUserList();
                    } else {
                        parseError({ error: res.message, vm: _this })
                    }
                }).catch(error => {
                })
            },
        }
    }
</script>