areaList.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { getArea } from '@/api/data'
  2. const areaList = {
  3. template: `
  4. <a-cascader
  5. :value="defaultVal"
  6. allowClear
  7. :change-on-select="changeOnSelect"
  8. @change="handleChange"
  9. :options="list"
  10. expand-trigger="hover"
  11. :show-search="{ filterOption }"
  12. :placeholder="placeholder"
  13. :id="id"
  14. :fieldNames="{ label: 'name', value: 'areaSn', children:'children'}"/>
  15. `,
  16. props: {
  17. value: {
  18. type: Array,
  19. defatut: function(){
  20. return []
  21. }
  22. },
  23. id: {
  24. type: String,
  25. default: ''
  26. },
  27. placeholder:{
  28. type: String,
  29. default: '请选择'
  30. },
  31. changeOnSelect:{
  32. type: Boolean,
  33. default: false
  34. },
  35. level:{
  36. type: [String,Number],
  37. default: ''
  38. }
  39. },
  40. data() {
  41. return {
  42. defaultVal: this.value,
  43. list: []
  44. };
  45. },
  46. mounted() {
  47. this.getArea()
  48. },
  49. watch: {
  50. value(newValue, oldValue) {
  51. this.defaultVal = newValue
  52. }
  53. },
  54. methods: {
  55. filterOption(inputValue, path) {
  56. return path.some(option => option.name.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);
  57. },
  58. handleChange(value,opts) {
  59. this.defaultVal = value;
  60. this.$emit('input', value);
  61. this.$emit('change', value,opts);
  62. },
  63. getArea () {
  64. getArea({}).then(res => {
  65. if (res.status == 200) {
  66. this.list = this.getBylevel(res.data)
  67. } else {
  68. this.list = []
  69. }
  70. })
  71. },
  72. getBylevel(data){
  73. const a = data.filter(item => item.type == 2) // 省
  74. const b = data.filter(item => item.type == 3) // 市
  75. const c = data.filter(item => item.type == 4) // 县
  76. // 显示一级分类
  77. if(this.level == 1){
  78. return a
  79. }
  80. // 显示二级分类
  81. if(this.level == 2){
  82. a.map(item => {
  83. item.children = b.filter(k => k.parentId == item.id)
  84. })
  85. console.log(a)
  86. return a
  87. }
  88. // 全部显示
  89. b.map(item => {
  90. item.children = c.filter(k => k.parentId == item.id)
  91. })
  92. a.map(item => {
  93. item.children = b.filter(k => k.parentId == item.id)
  94. })
  95. return a
  96. }
  97. },
  98. };
  99. export default areaList