Browse Source

Merge branch 'fengrui' of yinet2020/YinetOASystemWeb into master

冯瑞 4 years ago
parent
commit
a206504bb8
1 changed files with 195 additions and 0 deletions
  1. 195 0
      src/components/SelectRen/index.vue

+ 195 - 0
src/components/SelectRen/index.vue

@@ -0,0 +1,195 @@
+<template>
+    <el-row :gutter="20" style="padding: 10px;margin:0px;background-color: #ECECEC">
+      <!--部门数据-->
+      <el-col :span="6" :xs="24" style="padding-right:10px">
+        <el-tree
+          :data="deptOptions"
+          :props="defaultProps"
+          :expand-on-click-node="false"
+          :filter-node-method="filterNode"
+          ref="tree"
+          default-expand-all
+          @node-click="handleNodeClick"
+          style="padding:10px;"
+        />
+      </el-col>
+      <!--用户数据-->
+      <el-col :span="18" :xs="24" style="padding:10px; background-color: #fff;">
+        <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+          <el-form-item label="用户名称" prop="userName">
+            <el-input
+              v-model="queryParams.userName"
+              placeholder="请输入用户名称"
+              clearable
+              size="small"
+              style="width: 240px"
+              suffix-icon="el-icon-search"
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+
+        <el-table v-loading="loading" :data="userList" ref="userList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="50" align="center" />
+          <el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" />
+          <el-table-column label="用户昵称" align="center" prop="nickName" :show-overflow-tooltip="true" />
+          <el-table-column label="部门" align="center" prop="dept.deptName" :show-overflow-tooltip="true" />
+          <el-table-column label="手机号码" align="center" prop="phonenumber" width="120" />
+        </el-table>
+
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="queryParams.pageNum"
+          :limit.sync="queryParams.pageSize"
+          @pagination="getList"
+        />
+      </el-col>
+    </el-row>
+</template>
+
+<script>
+  import { listUser } from "@/api/system/user";
+  import { treeselect } from "@/api/system/dept";
+  import Treeselect from "@riophae/vue-treeselect";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+    export default {
+      name: "index",
+      components: { Treeselect },
+      data(){
+        return {
+          multipleSelection:null,
+          // 选中人员昵称数组
+          names: [],
+          // 选中人员账号数组
+          accounts: [],
+          // // 非单个禁用
+          // single: true,
+          // // 非多个禁用
+          // multiple: true,
+          // 总条数
+          total: 0,
+          // 用户表格数据
+          olduserList: null,
+          userList: null,
+          deptOptions: undefined,
+          defaultProps: {
+            children: "children",
+            label: "label"
+          },
+          // 查询参数
+          queryParams: {
+            pageNum: 1,
+            pageSize: 10,
+            userName: undefined,
+            phonenumber: undefined,
+            status: 0,
+            deptId: undefined
+          }
+        }
+      },
+      watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+          this.$refs.tree.filter(val);
+        },
+        userList(n,o){
+          // this.multipleSelection.forEach(row => {
+          //   // 不能自己自定义对象来设置选中(原因如下分析),那我可以从列表中找到需要选中的那个对象,然后把它拿过来作为选中的项就可以了
+          //   // this.$refs.userList.toggleRowSelection(this.userList.find(item => {
+          //   //   return row.userName == item.userName;  // 注意这里寻找的字段要唯一,示例仅参考
+          //   // }), true);
+          //   //this.$refs.userList.toggleRowSelection(this.userList[1], true);
+          // });
+          // this.$nextTick( ()=> {
+          //   console.log("xuanzhong "+this.multipleSelection.length);
+          //   console.log(this.multipleSelection);
+          //   this.multipleSelection.forEach(row => {
+          //     console.log(row.name+"12313");
+          //   });
+          //   //this.$refs.userList.toggleRowSelection(this.userList[1],true);
+          //   //console.log("这是选中行的循环kaishi");
+          // })
+        }
+      },
+      created() {
+        this.getList();
+        this.getTreeselect();
+        this.olduserList = this.userList;
+      },
+      methods:{
+        /** 查询用户列表 */
+        getList() {
+          this.loading = true;
+          listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+              this.userList = response.rows;
+              this.total = response.total;
+              this.loading = false;
+              // if(this.multipleSelection!=null)
+              // {
+              //   //alert("获取用户列表"+this.multipleSelection.length);
+              //   this.multipleSelection.forEach(row => {
+              //     // 不能自己自定义对象来设置选中(原因如下分析),那我可以从列表中找到需要选中的那个对象,然后把它拿过来作为选中的项就可以了
+              //     this.$refs.userList.toggleRowSelection(this.userList.find(item => {
+              //       return row.userName == item.userName;  // 注意这里寻找的字段要唯一,示例仅参考
+              //     }), true);
+              //     //this.$refs.userList.toggleRowSelection(this.userList[1], true);
+              //   });
+              // }
+              // else{
+              //   //alert("第一次获取用户列表,暂时还没有选中记录");
+              // }
+            }
+          );
+        },
+        /** 查询部门下拉树结构 */
+        getTreeselect() {
+          treeselect().then(response => {
+            this.deptOptions = response.data;
+          });
+        },
+        // 筛选节点
+        filterNode(value, data) {
+          if (!value) return true;
+          return data.label.indexOf(value) !== -1;
+        },
+        // 节点单击事件
+        handleNodeClick(data) {
+          this.queryParams.deptId = data.id;
+          this.getList();
+        },
+        /** 搜索按钮操作 */
+        handleQuery() {
+          this.queryParams.page = 1;
+          this.getList();
+        },
+        /** 重置按钮操作 */
+        resetQuery() {
+          this.resetForm("queryForm");
+          this.handleQuery();
+        },
+        // 多选框选中数据
+        handleSelectionChange(selection) {
+          this.names = selection.map(item => item.nickName);
+          this.accounts = selection.map(item => item.userName);
+          // if(this.multipleSelection==null){
+          //   this.multipleSelection = selection;
+          // }
+          // else{
+          //   //合并
+          //   this.multipleSelection
+          // }
+        }
+      }
+    }
+</script>
+
+<style>
+  .pagination-container{padding:0px;}
+</style>
+