dept-select.vue 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <!-- 部门树形选择下拉框 -->
  2. <template>
  3. <ele-tree-select
  4. clearable
  5. :value="value || ''"
  6. :data="treeData"
  7. label-key="name"
  8. value-key="id"
  9. default-expand-all
  10. ref="treeSelect"
  11. :placeholder="placeholder"
  12. @input="updateValue"
  13. @change="changeChoose"
  14. />
  15. </template>
  16. <script>
  17. import { listOrganizations } from '@/api/system/organization';
  18. export default {
  19. props: {
  20. // 选中的数据(v-model)
  21. value: [Number, String],
  22. // 提示信息
  23. placeholder: {
  24. type: String,
  25. default: '请选择'
  26. }
  27. },
  28. data () {
  29. return {
  30. treeData: []
  31. };
  32. },
  33. created () {
  34. this.getData();
  35. },
  36. methods: {
  37. async getData (params = {}) {
  38. const data = await listOrganizations(params);
  39. this.treeData = this.$util.toTreeData({
  40. data: data || [],
  41. idField: 'id',
  42. parentIdField: 'parentId'
  43. });
  44. },
  45. /* 更新选中数据 */
  46. updateValue (value) {
  47. this.$emit('input', value);
  48. },
  49. changeChoose (val) {
  50. this.$emit(
  51. 'changeGroup',
  52. val,
  53. this.$refs.treeSelect.getNodeByValue(val)
  54. );
  55. }
  56. }
  57. };
  58. </script>