zuozhengqing
2023-12-12 23811de7f45e5c40136be9dd072b448334db3e66
新增无权限展示页
3个文件已添加
4个文件已修改
151 ■■■■ 已修改文件
src/api/menus/index.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/noJurisdiction.png 补丁 | 查看 | 原始文档 | blame | 历史
src/common/untils/request.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/layout/components/appsidebar/index.vue 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/NoData/index.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/menus/index.js
New file
@@ -0,0 +1,10 @@
import request from "@/common/untils/request.js"
// 左侧菜单
export function getMenuTreeByRole(data) {
  return request({
    url: "/api/menu/getMenuTreeByRole",
    method: "get",
    data
  })
}
src/assets/img/noJurisdiction.png
src/common/untils/request.js
@@ -33,7 +33,7 @@
        prod:`//${window.location.hostname}:9080`,
        test:`//192.168.20.119:9080`,
        // 想跳到本地启动的登录页的话需要把dev改成你本地项目路径
        dev: `//192.168.20.124:8081`
        dev: `//192.168.8.111:8081`
    }
    return loginPathMap[environmentType()]
@@ -70,7 +70,8 @@
      return res
    } else if([2012,2013,2014,2015].includes(res.data.code)){
      if (isDev){
          alert("JWT失效")
        alert("JWT失效")
        window.location = getApsPage()+'/'
      }else {
        //   JWT鉴权失效 跳转到登录页
        window.location = getApsPage()+'/login'
@@ -88,7 +89,8 @@
  (error) => {
    if (error.response.status === 401){
      if (isDev){
          alert("JWT失效")
        alert("JWT失效")
        window.location = getApsPage()+'/'
      }else {
        //   JWT鉴权失效 跳转到登录页
        window.location = getApsPage()+'/login'
src/components/layout/components/appsidebar/index.vue
@@ -13,41 +13,20 @@
        text-color="#bfcbd9"
        active-text-color="#fff"
      >
        <el-submenu index="1">
        <el-submenu v-for="item in menus" :key="item.id" :index="item.id" >
          <template slot="title">
            <i class="el-icon-money icon"></i>
            <span>客户管理</span>
            <span>{{ item.title }}</span>
          </template>
          <el-menu-item index="/client/salesLead">销售线索</el-menu-item>
          <el-menu-item v-for="itm in item.children" :key="itm.id" :index="itm.path">{{ itm.title }}</el-menu-item>
          <!-- <el-menu-item index="/client/salesLead">销售线索</el-menu-item>
          <el-menu-item index="/client/clientManage">客户管理</el-menu-item>
          <el-menu-item index="/client/contacts">联系人</el-menu-item>
          <el-menu-item index="/client/followupRecords">跟进记录</el-menu-item>
          <el-menu-item index="/client/followupRecords">跟进记录</el-menu-item> -->
        </el-submenu>
        <el-submenu index="2">
          <template slot="title">
            <i class="el-icon-phone-outline icon"></i>
            <span>销售管理</span>
          </template>
          <el-menu-item index="/sales/salesOpportunity">销售机会</el-menu-item>
          <el-menu-item index="/sales/quotation">报价单</el-menu-item>
          <el-menu-item index="/sales/masterOrder">销售总单</el-menu-item>
          <el-menu-item index="/sales/subOrder">销售子单</el-menu-item>
          <el-menu-item index="/sales/salesDetails">销售明细单</el-menu-item>
          <el-menu-item index="/sales/salesReturn">销售退货单</el-menu-item>
          <el-menu-item index="/sales/refundForm">销售退款单</el-menu-item>
          <el-menu-item index="/sales/contractManage">合同管理</el-menu-item>
          <!-- <el-menu-item index="/sales/generatePlan">生成计划</el-menu-item> -->
        </el-submenu>
        <el-submenu index="3">
          <template slot="title">
            <i class="el-icon-service icon"></i>
            <span>服务管理</span>
          </template>
          <el-menu-item index="/service/serviceContract">服务合同</el-menu-item>
          <el-menu-item index="/service/clientServiceOrder">客户服务单</el-menu-item>
          <el-menu-item index="/service/serviceFollowup">服务回访单</el-menu-item>
          <!-- <el-menu-item index="/service/serviceFeeManage">服务收费管理</el-menu-item> -->
        </el-submenu>
        <!-- <el-submenu index="4">
          <template slot="title">
            <i class="el-icon-location"></i>
@@ -62,11 +41,14 @@
</template>
<script>
import {getMenuTreeByRole} from "@/api/menus/index"
export default {
  name: "AppSidebar",
  props: {},
  data() {
    return {}
    return {
      menus:[]
    }
  },
  watch: {
    // $route: {
@@ -76,8 +58,19 @@
  },
  created() {
    this.initNavMenu()
    this.getMenuTreeByRole()
  },
  methods: {
    getMenuTreeByRole(){
      getMenuTreeByRole().then((res)=>{
        console.log(res.data.list,"crm菜单")
        res.data.list.map((item)=>{
          if(item.systemType===2){
            this.menus=item.menus
          }
        })
      })
    },
    // 监听路由
    initNavMenu() {
      // console.log(this.$route.name)
src/router/index.js
@@ -12,9 +12,20 @@
const client = (resolve) => require(["@/views/client/index"], resolve)
const sales = (resolve) => require(["@/views/sales/index"], resolve)
const service = (resolve) => require(["@/views/service/index"], resolve)
const noData = (resolve) => require(["@/views/NoData/index"], resolve)
// const background = (resolve) => require(["@/views/backgroundConfig/index"], resolve)
export const routes = [
  // 无数据页面
  {
    path: "/",
    name: "NoData",
    meta: {
      title: "",
      auth: true,
    },
    component: noData,
  },
  {
    path: "client", // 客户管理
    name: "client",
src/views/NoData/index.vue
New file
@@ -0,0 +1,62 @@
<template>
  <d2-container>
    <div class="content">
      <el-empty :image="require('@/assets/img/noJurisdiction.png')" description="您尚未获得访问权限。">
        <p>请您联系主账号登录访问控制,为您授予服务的相关权限。</p>
      </el-empty>
    </div>
  </d2-container>
</template>
<script>
export default {
  name: "NoData",
  components: {
  },
  computed: {
  },
  data() {
    return {
    };
  },
  mounted() {},
  methods: {
  },
};
</script>
<style lang="scss" scoped>
// 显示列表
.content {
  width: 100%;
  height:100%;
  min-height: 300px;
  overflow: hidden;
  background:#fff;
  padding:30px 0;
  border-radius: 4px;
  .el-empty{
    width: 100%;
    height:calc(100% - 280px);
    p{
      margin: 0;
      font-size: 14px;
      color: #909399;
    }
  }
}
::v-deep .el-empty__bottom{
  margin: 0 !important;
}
::v-deep .el-empty__description{
  margin: 0 !important;
}
</style>
vue.config.js
@@ -13,6 +13,13 @@
  productionSourceMap: false, // 如果你不需要生产环境的source map, 可以将其设置为false 以加速生产环境构建
  devServer: {
    proxy: {
      "/api/menu":{
        target: "http://192.168.20.119:8001", // http://192.168.20.119:8002 http://fai365.com:30150/
        // 建道本地环境
        // target: "http://192.168.20.118:8002",
        ws: true,
        changeOrigin: true
      },
      "/api": {
        target: "http://192.168.20.119:8002", // http://192.168.20.119:8002 http://fai365.com:30150/
        // 建道本地环境