|
@@ -1,69 +1,83 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div class="app-container calendar-list-container">
|
|
|
|
|
-
|
|
|
|
|
- <!-- 查询和其他操作 -->
|
|
|
|
|
- <div class="filter-container">
|
|
|
|
|
- <el-input clearable class="filter-item" style="width: 200px;" placeholder="请输入用户名称" v-model="listQuery.username">
|
|
|
|
|
- </el-input>
|
|
|
|
|
- <el-input clearable class="filter-item" style="width: 200px;" placeholder="请输入用户昵称" v-model="listQuery.nickname">
|
|
|
|
|
- </el-input>
|
|
|
|
|
- <el-button class="filter-item" type="primary" v-waves icon="el-icon-search" @click="handleQuery">查找</el-button>
|
|
|
|
|
- <el-button class="filter-item" icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
|
|
|
|
- <el-button class="filter-item" type="primary" @click="handleCreate" icon="el-icon-plus">添加</el-button>
|
|
|
|
|
- <el-button class="filter-item" v-waves icon="el-icon-download" @click="handleDownload">导出</el-button>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 查询结果 -->
|
|
|
|
|
- <el-table size="small" :data="list" v-loading="listLoading" element-loading-text="正在查询中。。。" border fit highlight-current-row>
|
|
|
|
|
- <!--<el-table-column align="center" width="100px" label="用户ID" prop="id" sortable>
|
|
|
|
|
- </el-table-column>-->
|
|
|
|
|
- <el-table-column type="index" label="序号" header-align="center" align="center">
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
-
|
|
|
|
|
- <el-table-column align="center" min-width="100px" label="用户名称" prop="username">
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
|
|
+ <div class="app-container">
|
|
|
|
|
+ <!-- 查询表单区域 -->
|
|
|
|
|
+ <el-form :model="listQuery" size="small" :inline="true" label-position="top">
|
|
|
|
|
+ <el-row :gutter="20">
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item label="用户名称">
|
|
|
|
|
+ <el-input v-model="listQuery.username" placeholder="请输入用户名称" style="width: 100%" clearable></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item label="用户昵称">
|
|
|
|
|
+ <el-input v-model="listQuery.nickname" placeholder="请输入用户昵称" style="width: 100%" clearable></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ <el-row :gutter="20">
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item label="搜索">
|
|
|
|
|
+ <el-button style="width: 100%;" type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item label="重置">
|
|
|
|
|
+ <el-button style="width: 100%;" icon="el-icon-refresh" type="primary" @click="resetQuery">重置</el-button>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
|
|
|
- <el-table-column align="center" min-width="100px" label="用户昵称" prop="nickname">
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
|
|
+ <!-- 操作按钮区域 -->
|
|
|
|
|
+ <el-row :gutter="10" class="mb8">
|
|
|
|
|
+ <el-col :span="1.5">
|
|
|
|
|
+ <el-button type="primary" class="editButton" size="small" icon="el-icon-plus" @click="handleCreate">添加</el-button>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="1.5">
|
|
|
|
|
+ <el-button type="warning" icon="el-icon-download" size="small" @click="handleDownload">导出</el-button>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
|
|
|
- <el-table-column align="center" min-width="100px" label="用户头像" prop="avatar">
|
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
|
- <img class="user-avatar" :src="scope.row.avatar?scope.row.avatar:require('@/assets/avatar.gif')">
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
|
|
+ <!-- 表格区域 -->
|
|
|
|
|
+ <div class="border-card">
|
|
|
|
|
+ <el-table height="450" size="small" :data="list" v-loading="listLoading" element-loading-text="正在查询中。。。" border fit highlight-current-row>
|
|
|
|
|
+ <el-table-column type="index" label="序号" header-align="center" align="center" width="55"></el-table-column>
|
|
|
|
|
+ <el-table-column align="center" min-width="100px" label="用户名称" prop="username"></el-table-column>
|
|
|
|
|
+ <el-table-column align="center" min-width="100px" label="用户昵称" prop="nickname"></el-table-column>
|
|
|
|
|
+ <el-table-column align="center" min-width="100px" label="用户头像" prop="avatar">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <img class="user-avatar" :src="scope.row.avatar?scope.row.avatar:require('@/assets/avatar.gif')">
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column align="center" label="操作" width="240px" class-name="small-padding fixed-width">
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-button type="text" icon="el-icon-edit" class="editText" size="small" @click="handleUpdate(scope.row, false)">编辑</el-button>
|
|
|
|
|
+ <el-button type="text" icon="el-icon-user" class="plusText" size="small" @click="handleUpdate(scope.row, true)">角色</el-button>
|
|
|
|
|
+ <el-button type="text" icon="el-icon-delete" class="deleteText" size="small" @click="handleDelete(scope.row)">删除</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
|
|
|
- <el-table-column align="center" label="操作" width="250" class-name="small-padding fixed-width">
|
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
|
- <el-button type="primary" size="small" @click="handleUpdate(scope.row, false)">编辑</el-button>
|
|
|
|
|
- <el-button type="primary" size="small" @click="handleUpdate(scope.row, true)">角色</el-button>
|
|
|
|
|
- <el-button type="danger" size="small" @click="handleDelete(scope.row)">删除</el-button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- </el-table>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 分页 -->
|
|
|
|
|
- <div class="pagination-container">
|
|
|
|
|
- <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listQuery.page"
|
|
|
|
|
- :page-sizes="[10,20,30,50]" :page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total">
|
|
|
|
|
- </el-pagination>
|
|
|
|
|
|
|
+ <!-- 分页 -->
|
|
|
|
|
+ <div class="pagination-container">
|
|
|
|
|
+ <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listQuery.page"
|
|
|
|
|
+ :page-sizes="[10,20,30,50]" :page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total">
|
|
|
|
|
+ </el-pagination>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 添加或修改对话框 -->
|
|
<!-- 添加或修改对话框 -->
|
|
|
- <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
|
|
|
|
|
|
|
+ <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible" width="40%">
|
|
|
<template v-if="!dialogFlag">
|
|
<template v-if="!dialogFlag">
|
|
|
- <el-form :rules="rules" ref="dataForm" :model="dataForm" status-icon label-position="left" label-width="120px" style='width: 400px; margin-left:50px;'>
|
|
|
|
|
- <!-- <el-form-item label="用户名称" prop="username">
|
|
|
|
|
- <el-input v-if="dialogStatus=='create'" v-model="dataForm.username" auto-complete="off"></el-input>
|
|
|
|
|
- <el-input v-else v-model="dataForm.username" disabled auto-complete="off"></el-input>
|
|
|
|
|
- </el-form-item> -->
|
|
|
|
|
|
|
+ <el-form :rules="rules" ref="dataForm" :model="dataForm" status-icon label-position="left" label-width="120px">
|
|
|
<el-form-item label="用户" prop="username">
|
|
<el-form-item label="用户" prop="username">
|
|
|
- <el-select :disabled="dialogStatus=='create'?false:true" v-model="dataForm.username" filterable clearable placeholder="请选择" style="width: 280px">
|
|
|
|
|
- <el-option :key="item.loginId" v-for="item in recipientsList" :label="item.deptName+'_'+item.userName+'_'+item.employeNo" :value="item.loginId">
|
|
|
|
|
- </el-option>
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+ <el-select :disabled="dialogStatus=='create'?false:true" v-model="dataForm.username" filterable clearable placeholder="请选择" style="width: 100%">
|
|
|
|
|
+ <el-option :key="item.loginId" v-for="item in recipientsList" :label="item.deptName+'_'+item.userName+'_'+item.employeNo" :value="item.loginId">
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="用户密码" prop="password">
|
|
<el-form-item label="用户密码" prop="password">
|
|
|
- <el-input type="password" v-model="dataForm.password" auto-complete="off"></el-input>
|
|
|
|
|
|
|
+ <el-input type="password" v-model="dataForm.password" auto-complete="off"></el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="确认密码" prop="checkPassword">
|
|
<el-form-item label="确认密码" prop="checkPassword">
|
|
|
<el-input type="password" v-model="dataForm.checkPassword" auto-complete="off"></el-input>
|
|
<el-input type="password" v-model="dataForm.checkPassword" auto-complete="off"></el-input>
|
|
@@ -71,15 +85,9 @@
|
|
|
<el-form-item label="用户昵称" prop="nickname">
|
|
<el-form-item label="用户昵称" prop="nickname">
|
|
|
<el-input v-model="dataForm.nickname"></el-input>
|
|
<el-input v-model="dataForm.nickname"></el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
-
|
|
|
|
|
- <!--<el-form-item label="关联微信" prop="phone">
|
|
|
|
|
- <el-tooltip class="item" effect="dark" content="输入手机号码" placement="top-start">
|
|
|
|
|
- <el-input ref="phone" v-model="dataForm.phone" @blur="getWxUserId"></el-input>
|
|
|
|
|
- </el-tooltip>
|
|
|
|
|
- </el-form-item>-->
|
|
|
|
|
<el-form-item label="关联微信用户" prop="userId">
|
|
<el-form-item label="关联微信用户" prop="userId">
|
|
|
<el-select
|
|
<el-select
|
|
|
- style="width: 280px"
|
|
|
|
|
|
|
+ style="width: 100%"
|
|
|
v-model="dataForm.userId"
|
|
v-model="dataForm.userId"
|
|
|
:filterable="selectfilterable"
|
|
:filterable="selectfilterable"
|
|
|
:remote="selectremote"
|
|
:remote="selectremote"
|
|
@@ -94,7 +102,6 @@
|
|
|
</el-option>
|
|
</el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
-
|
|
|
|
|
<el-form-item label="用户头像" prop="avatar">
|
|
<el-form-item label="用户头像" prop="avatar">
|
|
|
<el-input v-model="dataForm.avatar"></el-input>
|
|
<el-input v-model="dataForm.avatar"></el-input>
|
|
|
<el-upload action="#" list-type="picture" :show-file-list="false" :limit="1" :http-request="uploadAvatar">
|
|
<el-upload action="#" list-type="picture" :show-file-list="false" :limit="1" :http-request="uploadAvatar">
|
|
@@ -104,9 +111,9 @@
|
|
|
</el-form>
|
|
</el-form>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-else>
|
|
<template v-else>
|
|
|
- <el-form status-icon label-position="left" label-width="100px" style='width: 400px; margin-left:50px;'>
|
|
|
|
|
|
|
+ <el-form status-icon label-position="left" label-width="100px">
|
|
|
<el-form-item label="用户角色">
|
|
<el-form-item label="用户角色">
|
|
|
- <el-select v-model="role" multiple placeholder="请选择">
|
|
|
|
|
|
|
+ <el-select v-model="role" multiple placeholder="请选择" style="width: 100%">
|
|
|
<el-option
|
|
<el-option
|
|
|
v-for="item in roleList"
|
|
v-for="item in roleList"
|
|
|
:key="item.id"
|
|
:key="item.id"
|
|
@@ -124,7 +131,7 @@
|
|
|
<el-button v-else type="primary" @click="updateData">确定</el-button>
|
|
<el-button v-else type="primary" @click="updateData">确定</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="dialogFlag">
|
|
<template v-if="dialogFlag">
|
|
|
- <el-button type="primary" @click="updateUserRoles">确定</el-button>
|
|
|
|
|
|
|
+ <el-button type="primary" @click="updateUserRoles">确定</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</div>
|
|
</div>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
@@ -163,7 +170,6 @@
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|
|
|
|
|
|
|
|
-
|
|
|
|
|
<script>
|
|
<script>
|
|
|
import { listAdmin, createAdmin, updateAdmin, deleteAdmin, getWxUserId, getUser} from '@/api/admin'
|
|
import { listAdmin, createAdmin, updateAdmin, deleteAdmin, getWxUserId, getUser} from '@/api/admin'
|
|
|
import { selectUserByUserName } from "@/api/organize"
|
|
import { selectUserByUserName } from "@/api/organize"
|
|
@@ -201,7 +207,6 @@ export default {
|
|
|
callback(new Error('请输入密码'))
|
|
callback(new Error('请输入密码'))
|
|
|
} else {
|
|
} else {
|
|
|
const reg = /([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*/;
|
|
const reg = /([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*/;
|
|
|
- //const reg = /^(?!\d+$)[\da-zA-Z]+$/;
|
|
|
|
|
if (!reg.test(value)) {
|
|
if (!reg.test(value)) {
|
|
|
callback(new Error('请输入字母、数字组合'))
|
|
callback(new Error('请输入字母、数字组合'))
|
|
|
}
|
|
}
|
|
@@ -467,7 +472,7 @@ export default {
|
|
|
if(userId != 0) {
|
|
if(userId != 0) {
|
|
|
this.dataForm.userId = userId
|
|
this.dataForm.userId = userId
|
|
|
} else {
|
|
} else {
|
|
|
- this.$alert('无法查询该手机关联的微信用户Id,请重新输入', '提示', {
|
|
|
|
|
|
|
+ this.$alert('无法查询该手机关联的微信用户 Id,请重新输入', '提示', {
|
|
|
type: 'warning',
|
|
type: 'warning',
|
|
|
callback: action => {
|
|
callback: action => {
|
|
|
this.dataForm.phone = undefined
|
|
this.dataForm.phone = undefined
|
|
@@ -482,4 +487,4 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-</script>
|
|
|
|
|
|
|
+</script>
|