doum
2025-09-25 c5675caab8392bfafd217d06529c2547edaa6aa8
admin/src/components/common/MenuSelect.vue
@@ -12,7 +12,8 @@
<script>
import TreeSelect from './TreeSelect'
import { fetchTree, fetchTree1 } from '@/api/system/menu'
// import { fetchTree, fetchTree1 } from '@/api/system/menu'
import { fetchTree } from '@/api/system/menu'
export default {
  name: 'MenuSelect',
  components: { TreeSelect },
@@ -35,7 +36,8 @@
      default: false
    },
    // 需被排除的部门ID
    excludeId: {}
    excludeId: {},
    topMenuId: {}
  },
  data () {
    return {
@@ -45,25 +47,38 @@
  watch: {
    excludeId () {
      this.fetchData()
    },
    topMenuId () {
      this.fetchData()
    }
  },
  methods: {
    // 获取所有菜单
    fetchData () {
      if (this.type === '1') {
        fetchTree1()
          .then(records => {
            this.data = []
            this.__fillData(this.data, records)
          })
          .catch(e => {
            this.$tip.apiFailed(e)
          })
        // fetchTree1()
        //   .then(records => {
        //     this.data = []
        //     this.__fillData(this.data, records)
        //   })
        //   .catch(e => {
        //     this.$tip.apiFailed(e)
        //   })
      } else {
        fetchTree()
          .then(records => {
            this.data = []
            this.__fillData(this.data, records)
            var res = [];
            if(this.topMenuId){
              records.forEach(item => {
                if(item.id == this.topMenuId){
                  res = item.children
                }
              })
            }else{
              res = records
            }
            this.__fillData(this.data, res)
          })
          .catch(e => {
            this.$tip.apiFailed(e)
@@ -73,7 +88,7 @@
    // 填充菜单树
    __fillData (list, pool) {
      for (const menu of pool) {
        if (menu.id === this.excludeId) {
        if (menu.id === this.excludeId || menu.linkType ===1) {
          continue
        }
        const menuNode = {