首页
产品
跨平台多应用终端
小程序商城
PC端商城
H5公众号商城
安卓APP商城
苹果APP商城
管理后台
特色功能
限时秒杀
拼团/砍价
优惠券
积分签到
大转盘抽奖
商家入驻
自动打单
分销系统
会员折扣
佣金提现
更多功能
产品系列
单商户标准商城系统-PHP
100%开源 | B2C | 单商户标准版 | 自营商城
产品介绍
产品演示
Gitee
GitHub
单商户商城系统-JAVA
100%开源 | B2C | 单商户Java版 | 自营商城
产品介绍
产品演示
单商户高级商城系统-PHP
100%开源 | B2C | 单商户高级版 | 自营商城
产品介绍
产品演示
单商户SaaS商城系统-PHP
100%开源 | B2C | 单商户SaaS版 | 无限多开 | 自营商城
产品介绍
产品演示
多商户商城系统-PHP
100%开源 | B2B2C | 多商户 | 平台商城
产品介绍
产品演示
多商户高级商城系统-PHP
100%开源 | B2B2C PLUS| 多商户 | 平台商城
产品介绍
产品演示
社区团购系统-PHP
100%开源 | 社区团购 | 生鲜团购系统 | 社区团购开源
产品介绍
产品演示
连锁点餐系统-PHP
100%开源 | 外卖点餐 | 总部+多门店 | 茶饮
产品介绍
产品演示
上门家政专业版-PHP
100%开源 | 上门家政 | 家政系统 | 一站式家政解决方案
产品介绍
产品演示
上门家政系统-JAVA
100%开源 | 上门家政 | 家政系统 | 一站式家政解决方案
产品介绍
产品演示
知识付费系统-PHP
100%开源 | 知识付费|在线学习 | 专业内容付费系统
产品介绍
产品演示
知识付费系统-JAVA
100%开源 | 知识付费|在线学习 | 专业内容付费系统
产品介绍
产品演示
回收租赁系统-PHP
100%开源 | 回收租赁 | 商城+回收+租赁
产品介绍
产品演示
同城跑腿系统-PHP
100%开源 | 跑腿系统 | 同城跑腿系统
产品介绍
产品演示
CRM系统-JAVA
CRM | CRM系统 | CRM Java |
产品介绍
产品演示
CRM系统-PHP
CRM | CRM系统 | CRM PHP |
产品介绍
产品演示
价格
文档
正版
授权查询
更多
关于我们
提交工单
联系我们
AI编程
likeadmin
ChatMoneyAI
演示中心
源码下载
登录/注册
likeshop开发文档
单商户高级版-开发文档
展开
❗ 必看说明
说明
✅ 部署上线
服务器域名准备工作
阿里云怎么安装宝塔面板、域名解析、开放端口等①
腾讯云怎么安装宝塔面板、域名解析、开放端口等②
华为云怎么安装宝塔面板、域名解析、开放端口③
宝塔部署
服务端宝塔面板部署①
phpStudy部署安装②
发布上线
准备工作
微信小程序如何发布上线①
微信公众号商城发布上线②
安卓苹果APP③
PC端SEO模式④
定时任务
宝塔定时任务配置①
linux定时任务配置②
在线客服
环境配置
系统设置
短信配置
腾讯短信配置
🅰️ 数据接口
必看
接口文档
📘 数据库字典
数据库字典
🛠️ 二次开发
功能
后台DIY组件二次开发
后台菜单
目录结构
likeshop单商户高级版目录结构
前端
管理后台二开编译上线
nuxt.js PC端如何并发布
uniapp H5(手机网页)编译后如何发布
服务端
接口说明
列表类使用
导出功能
问题合集
支付宝支付后,后台订单显示未支付
显示当前无法更新版本
进行授权后无法访问
前端使用nvm切换node版本问题
后台菜单
## 服务端菜单目录结构 \server\app\adminapi\config下的 **├─📂config ** **│ ├─auth.php ** //菜单文件 **│ ├─menu.php ** //权限文件 ------------ #### menu.php文件示例: ```php [ 'name' => '商品', //一级菜单名称 'type' => 1, //类型:1-菜单;2-权限 'sons' => [ //子级 [ 'name' => '商品管理', //二级菜单名称 'type' => 1, //类型:1-菜单;2-权限 'sons' => [ [ 'name' => '查看', //权限名称 'type' => 2, //类型:1-菜单;2-权限 'auth_key' => 'goods/goods.view' //权限key,key要确保唯一,该字段可拆分goods、goods、view在auth.php中使用 ], [ 'name' => '管理', 'type' => 2, 'auth_key' => 'goods/goods.manage' ] ], ], [ 'name' => '分类管理', 'type' => 1, 'sons' => [ [ 'name' => '查看', 'type' => 2, 'auth_key' => 'goods/category.view' ], [ 'name' => '管理', 'type' => 2, 'auth_key' => 'goods/category.manage' ] ] ], ], ], ``` #### auth_key字段设计规则是: 菜单/菜单.权限 #### auth.php文件示例: ```php //商品 'goods' => [ //'goods'=> 对应menu.php商品管理的auth_key=>'goods/goods.view' 中的第一个goods //商品管理 'goods' => [ //'goods'=> 对应menu.php商品管理的auth_key=>'goods/goods.view' 中的第二个goods 'page_path' => '/goods/lists', //该字段表示前端的页面路径,用于跳转 'view' => [ //查看权限,对应menu.php商品管理的auth_key=>'goods/goods.view' 中的view 'button_auth' => ['view'], //view下的按钮权限(现在没用到,可随便填,该设计是方便以后将权限分到按钮) 'action_auth' => ['goods.goods/lists','goods.goods/otherlist'], ], //服务端接口权限 'manage' => [ //管理权限,对应menu.php商品管理的auth_key=>'goods/goods.manage' 中的manage 'button_auth' => ['auth_all'], 'action_auth' => [ //服务端接口权限 'goods.goods/add', 'goods.goods/edit', 'goods.goods/del', 'goods.goods/status', 'goods.goods/sort', 'goods.goods/export', ] ], ], //分类管理 'category' => [ 'page_path' => '/goods/category', 'view' => [ 'button_auth' => ['view'], 'action_auth' => ['goods.goodscategory/lists'], ], 'manage' => [ 'button_auth' => ['auth_all'], 'action_auth' => [ 'goods.category/add', 'goods.category/edit', 'goods.category/status', 'goods.category/del', ] ], ] ], ``` #### menu.php和auth.php文件主要是通过auth_key关联,新增菜单请确保唯一 ------------ ## 角色菜单权限添加 #### 在后台设置-平台权限-角色中权限里面设置好菜单权限就可以了。 ![](https://md.likeshop.cn/server/index.php?s=/api/attachment/visitFile&sign=08954a8c6da0d5c13ff3e93ac67596a4) ** 注:如果菜单权限设置好没生效,请检查menu.php中的auth_key字段和auth.php各个索引有没有对上。** ## 前端路由 \web\src\router下的 **├─📂router ** **│ ├─modules ** //各个模块的路由配置 **│ ├─index.ts ** //路由入口文件 ```js //# router/index.ts // 权限路由,根据路由渲染菜单 export const asyncRoutes: Array
= [ ...index, //首页 ...shop, //店铺 ...goods, //商品 ...order, //订单 ...user, //用户 ...marketing, //营销 ...application, //应用 ...finance, //财务 ...data, //数据 ...channel, //渠道 ...setting //设置 ] //不受权限控制且不会出现在左侧菜单的路由 const constantRoutes: Array
= [ { path: '*', redirect: '/error/404' }, { path: '/account', name: 'account', component: Secondary, redirect: '/account/login', children: [ { path: '/account/login', name: 'login', meta: { title: '登录', parentPath: '/account' }, component: () => import('@/views/account/login.vue') } ] }, ... ] ``` ### 路由信息 ```js meta: { hidden: true, //是否在左侧菜单中隐藏 title: '', //页面标题 parentPath: '', // 父级路径(用于1级菜单的选中) prevPath: '', // 上一个页面的路径(用于详情页时选中对应的菜单) moduleName: '' //模块名称 (定义为一个模块,则2,3级菜单中只会显示对应模块的菜单,如营销,应用下面的子模块) icon: '', //图标名称 permission: ['view'] //权限字符,固定写法,是一个菜单页面才需要 } ```