category-select.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 { getTreeByPid } from '@/api/material/manage.js';
  18. export default {
  19. props: {
  20. // 选中的数据(v-model)
  21. value: [Number, String],
  22. // 提示信息
  23. placeholder: {
  24. type: String,
  25. default: '请选择'
  26. },
  27. pid: {
  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 () {
  42. const data = await getTreeByPid(this.pid);
  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>