| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <div> |
| | | <div class="filter-container"> |
| | | <el-form :inline="true" :model="queryForm"> |
| | | <el-form-item label="用户名"> |
| | | <el-input |
| | |
| | | <el-form-item> |
| | | <el-button |
| | | v-if="getBtnPermission('add')" |
| | | v-show="userType != 3" |
| | | class="filter-item" |
| | | style="margin-left: 10px;" |
| | | type="primary" |
| | |
| | | <el-form-item> |
| | | <el-button |
| | | v-if="getBtnPermission('import')" |
| | | v-show="userType != 3" |
| | | class="filter-item" |
| | | style="margin-left: 10px;" |
| | | type="primary" |
| | |
| | | @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" |
| | |
| | | @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> |
| | |
| | | @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> |
| | |
| | | </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' |
| | |
| | | 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: { |
| | |
| | | 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) { |
| | |
| | | 'username' |
| | | ]) |
| | | }, |
| | | components:{ |
| | | workLicense |
| | | }, |
| | | data() { |
| | | let _ref = this; |
| | | const validateEmail = (rule, value, callback) => { |
| | |
| | | tableKey: 0, |
| | | userData: null, |
| | | listLoading: true, |
| | | iscompanyList:[{id:1,name:'否'},{id:0,name:'是'}], |
| | | queryForm: { |
| | | username: '', |
| | | company:'', |
| | |
| | | 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: [], |
| | |
| | | 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() { |
| | |
| | | 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 |
| | |
| | | _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 => { |
| | |
| | | parseError({ error: error, vm: _this }) |
| | | }) |
| | | }, |
| | | |
| | | showWorkLicense(row){ |
| | | this.$refs.workLicense.openWorkLicense(row) |
| | | }, |
| | | |
| | | createHandle: function() { |
| | | this.$refs['dataForm'].validate((valid) => { |
| | | const _this = this |
| | |
| | | }) |
| | | _this.getUserList() |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | parseError({ error: error, vm: _this }) |
| | |
| | | }) |
| | | _this.getUserList() |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | parseError({ error: error, vm: _this }) |
| | |
| | | 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() |
| | |
| | | }) |
| | | _this.getUserList() |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | parseError({ error: error, vm: _this }) |
| | |
| | | const roleList = res.result |
| | | _this.roleList = roleList |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }) |
| | | }, |
| | |
| | | }) |
| | | _this.getUserList() |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }) |
| | | } |
| | |
| | | }, |
| | | 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 => { |
| | | }) |
| | | |
| | | }, |
| | |
| | | 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 |
| | |
| | | }) |
| | | _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) => { |
| | |
| | | if (res.code == 200){ |
| | | this.provinceList = res.result; |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | }) |
| | |
| | | this.dataForm.town = ''; |
| | | this.dataForm.community = ''; |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | }) |
| | |
| | | this.dataForm.town = ''; |
| | | this.dataForm.community = ''; |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | }) |
| | |
| | | this.dataForm.town = ''; |
| | | this.dataForm.community = ''; |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | }) |
| | |
| | | this.communityList = res.result; |
| | | this.dataForm.community = ''; |
| | | } else { |
| | | parseError({ error: res.message, vm: _this }) |
| | | parseError({ error: res.data.message, vm: _this }) |
| | | } |
| | | }).catch(error => { |
| | | }) |
| | |
| | | } |
| | | } |
| | | },//市、镇、街道、委员会 |
| | | |
| | | 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> |