index.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <el-select v-model="artCatId" placeholder="请选择" collapse-tags popper-class="artCatSelect" @change="selectChange">
  3. <el-option :key="artCatId" style="height: auto" :value="artCatId" :label="artCatTitleFilters(artCatId)">
  4. <el-tree ref="tree" :data="treedata" node-key="artCatId" highlight-current :props="defaultProps" @node-click="handleCheckChange" />
  5. </el-option>
  6. </el-select>
  7. </template>
  8. <script>
  9. import { getArtCatByList } from '@/api/system/artCatApi'
  10. import { packageTreeData } from '@/utils'
  11. export default {
  12. name: 'ArtCatSelector',
  13. props: {
  14. value: {
  15. type: [Number, String],
  16. default: undefined
  17. }
  18. },
  19. data() {
  20. return {
  21. artCatId: undefined,
  22. artCatTitle: undefined,
  23. artCatList: [],
  24. treedata: [],
  25. defaultProps: {
  26. children: 'children',
  27. label: 'artCatTitle'
  28. }
  29. }
  30. },
  31. watch: {
  32. value(val) {
  33. this.artCatId = val
  34. },
  35. artCatId(val) {
  36. this.$emit('input', val)
  37. }
  38. },
  39. created() {
  40. this.initArtCatData()
  41. },
  42. mounted() {},
  43. methods: {
  44. // 文章分类
  45. initArtCatData() {
  46. getArtCatByList().then((resp) => {
  47. const { code, data, msg } = resp
  48. if (code === 200) {
  49. this.artCatList = data
  50. this.treedata = packageTreeData({
  51. data,
  52. id: 'artCatId'
  53. })
  54. } else {
  55. this.$message.error(msg)
  56. }
  57. }).catch((error) => {
  58. console.log(error)
  59. })
  60. },
  61. artCatTitleFilters(val) {
  62. if (!val) return ''
  63. const artCatItem = this.artCatList.filter((item) => item.artCatId === val)[0]
  64. if (!artCatItem.artCatTitle) return ''
  65. return artCatItem.artCatTitle
  66. },
  67. selectChange(e) {
  68. var arrNew = []
  69. var dataLength = this.mineStatusValue.length
  70. var eleng = e.length
  71. for (let i = 0; i < dataLength; i++) {
  72. for (let j = 0; j < eleng; j++) {
  73. if (e[j] === this.mineStatusValue[i].label) {
  74. arrNew.push(this.mineStatusValue[i])
  75. }
  76. }
  77. }
  78. this.$refs.tree.setCheckedNodes(arrNew)// 设置勾选的值
  79. },
  80. handleCheckChange(node) {
  81. this.artCatId = node.artCatId
  82. this.artCatTitle = node.artCatTitle
  83. }
  84. }
  85. }
  86. </script>
  87. <style lang="scss">
  88. .artCatSelect{
  89. .el-tree{
  90. color: #333;
  91. .el-tree-node.is-current > .el-tree-node__content,.el-tree-node__content:hover{
  92. background-color: inherit !important;
  93. }
  94. .el-tree-node.is-current > .el-tree-node__content{
  95. color: #333;
  96. }
  97. }
  98. }
  99. </style>