doum
2025-09-25 c5675caab8392bfafd217d06529c2547edaa6aa8
最新版本541200007
已修改20个文件
247 ■■■■■ 文件已修改
admin/.env 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/index.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaPlatformGroupWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/CommonHeader.vue 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/MenuSelect.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/system/menu/OperaMenuWindow.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/main.js 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/store/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/inoutRecord.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/userActionOther.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/platformGroup.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/set/group.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/menu.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/category.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/components/OperaCategoryWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/model/SystemMenu.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/resources/mappers/SystemMenuMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env
@@ -10,4 +10,4 @@
VUE_APP_API_PREFIX = '/gateway_interface'
# 项目名称
VUE_APP_TITLE = '安泰智慧物流园区系统'
VUE_APP_TITLE = '芜湖烟草智慧安消安全防范系统'
admin/public/index.html
@@ -5,11 +5,11 @@
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title>安泰智慧物流园区系统</title>
    <title>芜湖烟草智慧安消安全防范系统</title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but 安泰智慧物流园区系统 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
      <strong>We're sorry but 芜湖烟草智慧安消安全防范系统 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
admin/src/components/business/OperaPlatformGroupWindow.vue
@@ -18,8 +18,8 @@
      </el-form-item>
      <el-form-item label="业务类型:" prop="type">
        <el-radio-group v-model="form.type" >
          <el-radio  :label="0"  >安泰物流卸货</el-radio>
          <el-radio  :label="1"  >安泰物流装货</el-radio>
          <el-radio  :label="0"  >物流卸货</el-radio>
          <el-radio  :label="1"  >物流装货</el-radio>
          <el-radio  :label="2"  >市公司卸货</el-radio>
        </el-radio-group>
      </el-form-item>
admin/src/components/common/CommonHeader.vue
@@ -4,19 +4,10 @@
      <div class="logo">
        <div class="title">{{ title }}</div>
        <div class="list">
          <div class="item active">
            <div>服务中心</div>
            <div class="linellae"></div>
          </div>
          <div  class="item" v-for="(item,index) in topMenuList.list" :key="item.id"  @click="getHeaderNav(item)" :index="index">{{item.label}}</div>
<!--          <div class="item" @click="getHeaderNav('0')">安防中心</div>
          <div class="item" @click="getHeaderNav('1')">消控中心</div>
          <div class="item" @click="getHeaderNav('2')">能管中心</div>
          <div class="item" @click="getHeaderNav('7')">后勤中心</div>
          <div class="item" @click="getHeaderNav('3')">驾驶舱</div>-->
          <!-- <div class="item" @click="handleTest">测试</div> -->
            <div  :class="index==currentIndex?'item active':'item'" v-for="(item,index) in topMenuList.list" :key="item.id"  @click="getHeaderNav(item,index)" :index="index">{{item.label}}
              <div v-if="index==currentIndex" class="linellae"></div>
            </div>
        </div>
        <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
      </div>
      <div class="user">
        <el-dropdown v-if="isLogined" trigger="click">
@@ -75,6 +66,7 @@
    return {
      title: process.env.VUE_APP_TITLE,
      headerNavData: {},
      currentIndex: 0,
      visible: {
        // 修改密码
        changePwd: false
@@ -134,7 +126,7 @@
    }
  },
  methods: {
    ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo']),
    ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo', 'setTopMenuCurrent']),
    // 修改密码
    changePwd () {
      this.visible.changePwd = true
@@ -162,11 +154,16 @@
        }
      }
    },
    getHeaderNav (item) {
      if (item.url && item.url === 'goHKAF' && item.params != null) {
        this.getHKAFHeaderNav(item.params)
      } else if (item.url && item.url.indexOf('http') === 0) {
        window.open(item.url, '_blank')
    getHeaderNav (item,index) {
      this.currentIndex = index
      if(item.linkType === 0){
        this.setTopMenuCurrent(item)
      }else{
        if (item.url && item.url === 'goHKAF' && item.params != null) {
          this.getHKAFHeaderNav(item.params)
        } else if (item.url && item.url.indexOf('http') === 0) {
          window.open(item.url, '_blank')
        }
      }
    },
    getHKAFHeaderNav (type) {
@@ -295,31 +292,32 @@
.list {
  flex: 1;
  display: flex;
  align-items: center;
  margin-left: 60px;
  .item {
    margin-right: 40px;
    font-size: 16px;
    font-weight: 400;
  margin-top: 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    height: 40px;
    cursor: pointer;
    .item {
      margin-right: 40px;
      font-size: 16px;
      font-weight: 400;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: flex-start;
      height: 40px;
      cursor: pointer;
    .linellae {
      width: 64px;
      height: 2px;
      background: #FFFFFF;
      .linellae {
        width: 64px;
        height: 2px;
        background: #FFFFFF;
      }
    }
  }
  .active {
    font-weight: 500;
  }
    .active {
      font-weight: 500;
    }
}
.header {
@@ -344,7 +342,8 @@
    align-items: center;
    .title {
      width: 240px;
      font-size: 18px;
      width: 320px;
    }
    // display: inline;
@@ -356,7 +355,7 @@
  }
  .user {
    width: 212px;
    width: 152px;
    box-sizing: border-box;
    height: 56px;
    padding-right: 25px;
admin/src/components/common/MenuSelect.vue
@@ -36,7 +36,8 @@
      default: false
    },
    // 需被排除的部门ID
    excludeId: {}
    excludeId: {},
    topMenuId: {}
  },
  data () {
    return {
@@ -45,6 +46,9 @@
  },
  watch: {
    excludeId () {
      this.fetchData()
    },
    topMenuId () {
      this.fetchData()
    }
  },
@@ -64,7 +68,17 @@
        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)
@@ -74,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 = {
admin/src/components/system/menu/OperaMenuWindow.vue
@@ -20,6 +20,12 @@
      <el-form-item label="携带参数" prop="params">
        <el-input v-model="form.params" placeholder="请输入携带参数" v-trim maxlength="200"/>
      </el-form-item>
      <el-form-item label="菜单类型" prop="linkType" >
        <el-radio-group v-model="form.linkType">
          <el-radio :label="0" :value="0" >内部菜单</el-radio>
          <el-radio :label="1" :value="1" >外部系统</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="图标" prop="icon" class="form-item-icon" v-if="form.type !== 1">
        <el-radio-group v-model="form.icon">
          <el-radio :label="icon" v-for="icon in icons" :key="icon">
@@ -59,12 +65,16 @@
        path: '',
        icon: '',
        type: '',
        linkType: 0,
        remark: ''
      },
      // 验证规则
      rules: {
        name: [
          { required: true, message: '请输入菜单名称' }
        ],
        linkType: [
          { required: true, message: '请输入菜单名称' }
        ]
      }
    }
admin/src/main.js
@@ -37,7 +37,7 @@
  router,
  store,
  computed: {
    ...mapState(['userInfo', 'homePage'])
    ...mapState(['userInfo', 'homePage','topMenuCurrent','menuData'])
  },
  watch: {
    async userInfo () {
@@ -48,7 +48,7 @@
    }
  },
  methods: {
    ...mapMutations(['switchCollapseMenu', 'setHomePage']),
    ...mapMutations(['switchCollapseMenu', 'setHomePage', 'setTopMenuCurrent', 'setTopMenuCurrent']),
    // 初始化本地配置
    initLocalConfig () {
      // 菜单状态配置
@@ -74,15 +74,27 @@
      await fetchMenuTree()
        .then(allmenus => {
          // 添加菜单
          var menus = allmenus.filter(item => {
            return item.type !== 1
          })
          var topList = allmenus.filter(item => {
            return item.type === 1
          })
          console.log(topList)
          storeMenus.push.apply(storeMenus, menus)
          storeTopMenus.push.apply(storeTopMenus, topList)
          var topCurrent = null
          topList.forEach(item => {
            if (item.linkType === 0 && topCurrent == null) {
              topCurrent = item
            }
          })
          this.setTopMenuCurrent(topCurrent)
          // console.log(topList)
          // var menus = []
          // topList.forEach(item => {
          //   console.log(topCurrent.id, item.id)
          //   if (item.id == this.topMenuCurrent.id) {
          //     menus = item.children
          //   }
          // })
          console.log('menus', this.menuData.list)
          storeMenus.push.apply(storeMenus, this.menuData.list)
          // 添加路由
          this.__addRouters(storeMenus)
          // 404
admin/src/store/index.js
@@ -16,6 +16,8 @@
    // 是否收起
    collapse: false
  },
  topMenuCurrent: {
  },
  topMenuList: {
    // 菜单列表
    list: [],
@@ -56,8 +58,22 @@
  setHomePage (state, homePage) {
    state.homePage = homePage
  },
  // 设置首页路由信息
  setTopMenuCurrent (state, current) {
    console.log("setTopMenuCurrent",current)
    if(current.id !== state.topMenuCurrent.id){
      state.topMenuList.list.forEach(item => {
        console.log(item.id, item.id)
        if (current.id == item.id) {
          state.topMenuCurrent = current
          state.menuData.list = item.children
        }
      })
    }
  },
  // 重置菜单
  resetMenus: (state) => {
    state.topMenuId=null;
    state.menuData.list = []
  },
  //  tags
admin/src/views/business/inoutRecord.vue
@@ -162,8 +162,8 @@
        { key: 1, name: '外协运输车辆' },
        { key: 2, name: '市公司卸货车辆' },
        { key: 3, name: '加工烟卸货车辆' },
        { key: 4, name: '安泰物流公务用车' },
        { key: 5, name: '安泰物流货运车辆' },
        { key: 4, name: '物流公务用车' },
        { key: 5, name: '物流货运车辆' },
        { key: 6, name: '未知车辆' }
      ]
    }
admin/src/views/business/userActionOther.vue
@@ -12,7 +12,7 @@
                    <el-option label="删除访客报备" :value="19"></el-option>
                    <el-option label="删除月台预约任务" :value="20"></el-option>
                    <el-option label="删除公车申请" :value="21"></el-option>
                    <el-option label="删除安泰物流作业任务" :value="22"></el-option>
                    <el-option label="删除物流作业任务" :value="22"></el-option>
                    <el-option label="删除隐患随手拍" :value="23"></el-option>
                </el-select>
            </el-form-item>
admin/src/views/login.vue
@@ -3,7 +3,7 @@
    <img src="@/assets/images/bg@2x.png" class="main_bg" alt="">
    <div class="login_wrap">
      <div class="login_img">
        <div class="h2">安徽安泰物流有限责任公司</div>
        <div class="h2">芜湖烟草智慧安消安全防范系统</div>
        <div class="h3">智慧物流园区安消一体化系统</div>
      </div>
      <div class="form_wrap">
admin/src/views/platform/platformGroup.vue
@@ -22,8 +22,8 @@
        </el-table-column>
        <el-table-column prop="type" label="业务类型"  align="center" min-width="100px">
          <template scope="{row}">
            <span v-if="row.type == 0">安泰物流卸货</span>
            <span v-if="row.type == 1">安泰物流装货</span>
            <span v-if="row.type == 0">物流卸货</span>
            <span v-if="row.type == 1">物流装货</span>
            <span v-if="row.type == 2">市公司卸货</span>
          </template>
        </el-table-column>
admin/src/views/platform/set/group.vue
@@ -60,8 +60,8 @@
        </el-form-item>
        <el-form-item label="关联入园事由">
          <el-checkbox-group v-model="param.checkList">
            <el-checkbox label="0">安泰装货</el-checkbox>
            <el-checkbox label="0">安泰卸货</el-checkbox>
            <el-checkbox label="0">装货</el-checkbox>
            <el-checkbox label="0">卸货</el-checkbox>
            <el-checkbox label="0">市公司卸货</el-checkbox>
          </el-checkbox-group>
        </el-form-item>
admin/src/views/system/menu.vue
@@ -11,7 +11,7 @@
    <!-- 表格和分页 -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['system:menu:create', 'system:menu:delete', 'system:menu:sort']">
        <li><el-button type="primary" @click="$refs.operaMenuWindow.open(activeGroup==0?'新建一级菜单':'新建顶部导航菜单',null,null,activeGroup)" icon="el-icon-plus" v-permissions="['system:menu:create']">新建</el-button></li>
        <li><el-button type="primary" @click="$refs.operaMenuWindow.open(activeType==0?'新建一级菜单':'新建顶部导航菜单',null,null,activeType)" icon="el-icon-plus" v-permissions="['system:menu:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['system:menu:delete']">删除</el-button></li>
        <li><el-button @click="sort('top')" :loading="isWorking.sort" icon="el-icon-sort-up" v-permissions="['system:menu:sort']">上移</el-button></li>
        <li><el-button @click="sort('bottom')" :loading="isWorking.sort" icon="el-icon-sort-down" v-permissions="['system:menu:sort']">下移</el-button></li>
@@ -35,9 +35,14 @@
            <template v-else>未设置</template>
          </template>
        </el-table-column>
        <el-table-column prop="path" label="访问路径" show-tooltip-when-overflow min-width="220px"></el-table-column>
        <el-table-column prop="path" label="访问路径" show-tooltip-when-overflow min-width="200px"></el-table-column>
        <el-table-column prop="params" label="参数" min-width="120px"></el-table-column>
        <el-table-column prop="remark" label="备注" min-width="120px"></el-table-column>
        <el-table-column prop="linkType" label="菜单类型" min-width="80px">
          <template slot-scope="{row}">
            {{row.linkType == 1 ? '外部系统' : '内部系统'}}
          </template>
        </el-table-column>
        <el-table-column prop="remark" label="备注" min-width="150px" show-tooltip-when-overflow></el-table-column>
        <el-table-column prop="createUser" label="创建人" min-width="100px">
          <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
        </el-table-column>
@@ -58,8 +63,8 @@
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('编辑菜单', row,null,activeGroup)" v-permissions="['system:menu:update']">编辑</el-button>
            <el-button v-if="activeGroup !== 1" type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('新建子菜单', null, row,activeGroup)" v-permissions="['system:menu:create']">新建子菜单</el-button>
            <el-button type="text" icon="el-icon-edit" @click="$refs.operaMenuWindow.open('编辑菜单', row,null,activeType)" v-permissions="['system:menu:update']">编辑</el-button>
            <el-button v-if="activeGroup !== 1" type="text" icon="el-icon-plus" @click="$refs.operaMenuWindow.open('新建子菜单', null, row,activeType)" v-permissions="['system:menu:create']">新建子菜单</el-button>
            <el-button v-if="!row.fixed" type="text" icon="el-icon-delete" @click="deleteById(row)" v-permissions="['system:menu:delete']">删除</el-button>
          </template>
        </el-table-column>
@@ -82,8 +87,10 @@
  data () {
    return {
      // 是否正在处理中
      activeGroup: 0,
      groupList:[{id:0,name: "服务中心菜单"},{id:1,name: "顶部导航配置"}],
      activeGroup: -1,
      activeType: 1,
      topMenuId:null,
      groupList:[{id:-1,name: "顶部导航配置",type:1},{id:-2,name: "系统左侧菜单",type:0}],
      isWorking: {
        sort: false
      }
@@ -92,14 +99,36 @@
  methods: {
    groupClick(item){
      this.activeGroup = item.id
      this.activeType = item.type
      this.handlePageChange();
    },
    // 查询数据
    handlePageChange () {
      this.isWorking.search = true
      fetchTree({type: this.activeGroup})
      fetchTree({type: this.activeType == 1?this.activeType:null})
        .then(records => {
          this.tableData.list = records
          if(this.activeType === 1){
            this.tableData.list = records
            this.groupList = [{id:-1,name: "顶部导航配置",type:1}]
            var tops = []
            this.tableData.list.forEach(item=>{
              if(item.linkType !== 1){
                tops.push({id:item.id,name: item.name,type:0})
              }
            })
            if(tops.length){
              this.groupList.push(...tops)
            }else {
              this.groupList.push({id:0,name: "系统左侧菜单",type:0})
            }
          }else{
            //如果是内部菜单
            records.forEach(item =>{
              if(item.id === this.activeGroup){
                this.tableData.list =item.children
              }
            })
          }
        })
        .catch(e => {
          this.$tip.apiFailed(e)
admin/src/views/vehicle/category.vue
@@ -30,8 +30,8 @@
                      <span  v-else-if="row.bizType ==1">外协运输车辆</span>
                      <span  v-else-if="row.bizType ==2">市公司卸货车辆</span>
                      <span  v-else-if="row.bizType ==3">加工烟卸货车辆</span>
                      <span  v-else-if="row.bizType ==4">安泰物流公务用车</span>
                      <span  v-else-if="row.bizType ==5">安泰物流货运车辆</span>
                      <span  v-else-if="row.bizType ==4">物流公务用车</span>
                      <span  v-else-if="row.bizType ==5">物流货运车辆</span>
                      <span  v-else >-</span>
                    </template>
              </el-table-column>
admin/src/views/vehicle/components/OperaCategoryWindow.vue
@@ -50,8 +50,8 @@
        { key: 1, name: '外协运输车辆' },
        { key: 2, name: '市公司卸货车辆' },
        { key: 3, name: '加工烟卸货车辆' },
        { key: 4, name: '安泰物流公务用车' },
        { key: 5, name: '安泰物流货运车辆' }
        { key: 4, name: '物流公务用车' },
        { key: 5, name: '物流货运车辆' }
      ],
      // 验证规则
      rules: {
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemMenuBizImpl.java
@@ -137,6 +137,7 @@
                nodeVO.setUrl(menu.getPath());
                nodeVO.setParams(menu.getParams());
                nodeVO.setType(menu.getType());
                nodeVO.setLinkType(menu.getLinkType());
                nodeVO.setIcon(menu.getIcon());
                nodeVO.setChildren(new ArrayList<>());
                rootNodes.add(nodeVO);
@@ -230,6 +231,7 @@
                child.setParams(menu.getParams());
                child.setIcon(menu.getIcon());
                child.setType(menu.getType());
                child.setLinkType(menu.getLinkType());
                child.setIndex("menu_" + menu.getId());
                child.setChildren(new ArrayList<>());
                parent.getChildren().add(child);
server/system_service/src/main/java/com/doumee/dao/system/model/SystemMenu.java
@@ -34,6 +34,8 @@
    private Integer parentId;
    @ApiModelProperty(value = "类型 0服务中心菜单 1顶部导航,默认 0", example = "1")
    private Integer type;
    @ApiModelProperty(value = "关联类型 0系统内部菜单 1外部系统", example = "1")
    private Integer linkType;
    @ApiModelProperty(value = "菜单名称")
    @NotBlank(message = "菜单名称不能为空", groups = {OperaType.Create.class, OperaType.Update.class})
server/system_service/src/main/java/com/doumee/dao/system/vo/SystemMenuNodeVO.java
@@ -25,6 +25,8 @@
    private String index;
    @ApiModelProperty(value = "菜单类型 0服务中心 1顶部导航")
    private Integer type;
    @ApiModelProperty(value = "菜单类型 0服务中心 1顶部导航")
    private Integer linkType;
    @ApiModelProperty(value = "图标")
    private String icon;
server/system_service/src/main/resources/mappers/SystemMenuMapper.xml
@@ -16,7 +16,7 @@
  </resultMap>
  <select id="selectManageList" resultMap="SystemMenuListVO" parameterType="com.doumee.dao.system.model.SystemMenu">
    SELECT
    menu.`ID`, menu.`type`, menu.`PARENT_ID`,menu.params, menu.`NAME`, menu.`PATH`, menu.`FIXED`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`,
    menu.`ID`, menu.`type`,menu.`link_type`, menu.`PARENT_ID`,menu.params, menu.`NAME`, menu.`PATH`, menu.`FIXED`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`,
      create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME,
      update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME
    FROM SYSTEM_MENU menu
@@ -25,6 +25,7 @@
    <where>
      menu.DELETED = 0
      <if test="type!=null"> and menu.type=#{type}</if>
      <if test="linkType!=null"> and menu.link_type=#{linkType}</if>
    </where>
    ORDER BY menu.SORT
  </select>
@@ -32,7 +33,7 @@
  <!-- 查询菜单树 -->
  <select id="selectByUserId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemMenu">
    SELECT
      DISTINCT menu.`ID`, menu.`type`,menu.`PARENT_ID`,menu.params, menu.`NAME`, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
      DISTINCT menu.`ID`, menu.`type`,menu.`link_type`,menu.`PARENT_ID`,menu.params, menu.`NAME`, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
    FROM `SYSTEM_MENU` menu
    INNER JOIN SYSTEM_ROLE_MENU role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
    INNER JOIN SYSTEM_USER_ROLE user_role ON user_role.ROLE_ID = role_menu.ROLE_ID AND user_role.DELETED = 0
@@ -47,9 +48,9 @@
  <!-- 根据角色ID查询菜单列表 -->
  <select id="selectByRoleId" parameterType="java.lang.Integer" resultType="com.doumee.dao.system.model.SystemMenu">
    SELECT
      menu.`ID`, menu.`type`,menu.`PARENT_ID`, menu.`NAME`,menu.params, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
    FROM `SYSTEM_MENU` menu
    INNER JOIN `SYSTEM_ROLE_MENU` role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
      menu.`ID`,menu.`link_type`, menu.`type`,menu.`PARENT_ID`, menu.`NAME`,menu.params, menu.`PATH`, menu.`REMARK`, menu.`DISABLED`, menu.SORT, menu.`ICON`, menu.`CREATE_TIME`, menu.`UPDATE_TIME`, menu.`CREATE_USER`, menu.`UPDATE_USER`, menu.`DELETED`
      FROM `SYSTEM_MENU` menu
      INNER JOIN `SYSTEM_ROLE_MENU` role_menu ON role_menu.MENU_ID = menu.ID AND role_menu.DELETED = 0
    <where>
      menu.DELETED = 0
      AND role_menu.ROLE_ID = #{roleId}