dept-select.vue 1.3 KB

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