all.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <template>
  2. <div class="app-container">
  3. <el-row :gutter="20">
  4. <!--部门数据-->
  5. <el-col :span="4" :xs="24">
  6. <div class="head-container">
  7. <el-input v-model="deptName" placeholder="请输入部门名称" clearable size="small" prefix-icon="el-icon-search" style="margin-bottom: 20px" />
  8. </div>
  9. <div class="head-container">
  10. <el-tree :data="deptOptions" :props="defaultProps" :expand-on-click-node="false" :filter-node-method="filterNode" ref="tree" @node-click="handleNodeClick" />
  11. </div>
  12. </el-col>
  13. <!--用户数据-->
  14. <el-col :span="20" :xs="24">
  15. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  16. <el-form-item label="员工姓名" prop="nickName">
  17. <el-input v-model="queryParams.nickName" placeholder="请输入员工姓名" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
  18. </el-form-item>
  19. <el-form-item label="手机号" prop="phonenumber">
  20. <el-input v-model="queryParams.phonenumber" placeholder="请输入手机号" clearable size="small" style="width: 240px" @keyup.enter.native="handleQuery" />
  21. </el-form-item>
  22. <el-form-item>
  23. <el-button icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  24. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  25. </el-form-item>
  26. </el-form>
  27. <el-table height="500" border v-loading="loading" :data="userList" >
  28. <el-table-column label="员工编号" align="center" prop="userName" width="120" />
  29. <el-table-column label="员工姓名" align="center" prop="nickName" :show-overflow-tooltip="true" >
  30. <template slot-scope="scope">
  31. <!--  <el-popover
  32.             placement="right"
  33.             title=""
  34.             trigger="hover"
  35.           >
  36.             <img slot="reference" :src="baseUrl+scope.row.avatar" width="60"  >
  37.             <img :src="baseUrl+scope.row.avatar" style="max-width: 100px;"  >
  38.           </el-popover> -->
  39. {{scope.row.nickName}}
  40. </template>
  41. </el-table-column>
  42. <el-table-column label="手机号码" align="center" prop="phonenumber" width="120" />
  43. <el-table-column label="部门" align="center" prop="dept.deptName" :show-overflow-tooltip="true" />
  44. <el-table-column label="岗位" align="center" prop="dept.deptName" :show-overflow-tooltip="true" >
  45. <template slot-scope="scope">
  46. {{ parsePost(scope.row.posts)}}
  47. </template>
  48. </el-table-column>
  49. </el-table>
  50. <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
  51. </el-col>
  52. </el-row>
  53. </div>
  54. </template>
  55. <script>
  56. import {
  57. getAddressBookList} from "@/api/company/companyUser";
  58. import { getToken } from "@/utils/auth";
  59. import { treeselect } from "@/api/company/companyDept";
  60. import Treeselect from "@riophae/vue-treeselect";
  61. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  62. export default {
  63. name: "User",
  64. components: { Treeselect },
  65. data() {
  66. return {
  67. baseUrl: process.env.VUE_APP_BASE_API,
  68. // 遮罩层
  69. loading: true,
  70. // 选中数组
  71. ids: [],
  72. // 非单个禁用
  73. single: true,
  74. // 非多个禁用
  75. multiple: true,
  76. // 显示搜索条件
  77. showSearch: true,
  78. // 总条数
  79. total: 0,
  80. // 用户表格数据
  81. userList: null,
  82. // 弹出层标题
  83. title: "",
  84. // 部门树选项
  85. deptOptions: undefined,
  86. // 是否显示弹出层
  87. open: false,
  88. // 部门名称
  89. deptName: undefined,
  90. // 默认密码
  91. initPassword: undefined,
  92. // 日期范围
  93. dateRange: [],
  94. // 状态数据字典
  95. statusOptions: [],
  96. // 性别状态字典
  97. sexOptions: [],
  98. // 岗位选项
  99. postOptions: [],
  100. // 角色选项
  101. roleOptions: [],
  102. // 表单参数
  103. defaultProps: {
  104. children: "children",
  105. label: "label",
  106. },
  107. // 查询参数
  108. queryParams: {
  109. pageNum: 1,
  110. pageSize: 10,
  111. userName: undefined,
  112. phonenumber: undefined,
  113. status: undefined,
  114. deptId: undefined,
  115. },
  116. };
  117. },
  118. watch: {
  119. // 根据名称筛选部门树
  120. deptName(val) {
  121. this.$refs.tree.filter(val);
  122. },
  123. },
  124. created() {
  125. this.getList();
  126. this.getTreeselect();
  127. this.getDicts("company_user_sex").then((response) => {
  128. this.sexOptions = response.data;
  129. });
  130. },
  131. methods: {
  132. /** 查询用户列表 */
  133. getList() {
  134. this.loading = true;
  135. getAddressBookList(this.addDateRange(this.queryParams, this.dateRange)).then(
  136. (response) => {
  137. this.userList = response.rows;
  138. this.total = response.total;
  139. this.loading = false;
  140. }
  141. );
  142. },
  143. /** 查询部门下拉树结构 */
  144. getTreeselect() {
  145. treeselect().then((response) => {
  146. this.deptOptions = response.data;
  147. });
  148. },
  149. // 筛选节点
  150. filterNode(value, data) {
  151. if (!value) return true;
  152. return data.label.indexOf(value) !== -1;
  153. },
  154. // 节点单击事件
  155. handleNodeClick(data) {
  156. this.queryParams.deptId = data.id;
  157. this.getList();
  158. },
  159. /** 搜索按钮操作 */
  160. handleQuery() {
  161. this.queryParams.page = 1;
  162. this.getList();
  163. },
  164. /** 重置按钮操作 */
  165. resetQuery() {
  166. this.dateRange = [];
  167. this.resetForm("queryForm");
  168. this.handleQuery();
  169. },
  170. },
  171. };
  172. </script>