2023西安数博会CIM演示-【前端】-Web
AdaKing88
2023-08-21 bc03b832caa49bbcd2674fe4cae3701b5059bf95
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<template>
  <div>
    <el-radio-group v-model="radio">
      <el-radio :label="3">所有用户可访问</el-radio>
      <el-radio :label="6">指定用户可访问</el-radio>
      <el-radio :label="9">指定机构可访问</el-radio>
    </el-radio-group>
    <el-transfer v-if="radio === 6" filterable :props="userProps" filter-placeholder="请输入用户名" v-model="valueUser"
      :titles="['未选用户', '已选用户']" :data="dataUser">
    </el-transfer>
 
    <div v-else-if="radio === 9">
      <el-input placeholder="输入关键字进行过滤" v-model="filterText">
      </el-input>
      <el-tree :data="dataDept" show-checkbox default-expand-all node-key="deptId" ref="deptTree"
        :filter-node-method="filterNode" style="height:250px;overflow-y: auto;" highlight-current :props="defaultProps">
      </el-tree>
    </div>
  </div>
</template>
<script>
import { listUser } from "@/api/system/user";
import { listDept } from "@/api/system/dept";
export default {
  name: "shareElementItem",
  data() {
    return {
      valueUser: [],
      dataUser: [],
      valueDept: [],
      dataDept: [],
      userProps: {
        key: 'userId',
        label: 'nickName'
      },
      filterText: '',
 
      radio: 3,
 
      dataDept: [],
      defaultProps: {
        children: 'children',
        label: 'deptName',
      }
    };
  },
  methods: {
    getData() {
      listUser({ pageNum: 1, pageSize: 9999 }).then((res) => {
        if (res.code == 200) {
          this.dataUser = res.rows
        }
      })
      listDept({ pageNum: 1, pageSize: 9999 }).then(res => {
        if (res.code == 200) {
          this.dataDept = this.handleTree(res.data, "deptId");
        }
      });
    },
    filterNode(value, data) {
      if (!value) return true;
      return data.deptName.indexOf(value) !== -1;
    }
  },
  watch: {
    filterText(val) {
      this.$refs.deptTree.filter(val);
    }
  },
  mounted() {
    this.getData()
  },
};
</script>
 
<style scoped lang="less">
/deep/.el-transfer-panel__filter .el-input__inner {
  color: #5c6d96 !important;
}
</style>