diff --git a/README.md b/README.md index 8c23ef59..30c779c0 100644 --- a/README.md +++ b/README.md @@ -36,4 +36,240 @@ yarn dev:force ### 备注 * 项目在开发模式下,首页加载慢属于正常现象; -* 打开F12后页面卡顿是`vuetools`引起,[https://github.com/vuejs/devtools/issues/1987](https://github.com/vuejs/devtools/issues/1987) \ No newline at end of file +* 打开F12后页面卡顿是`vuetools`引起,[https://github.com/vuejs/devtools/issues/1987](https://github.com/vuejs/devtools/issues/1987) + +## 更改配置 + +### 默认图标以及系统名称 + +#### 1.基础配置 + +首先启动项目,找到顶部菜单的 系统管理 -> 基础配置 + +此处可以更改系统名称、主题色、系统logo、浏览器页签等 + +#### 2.默认配置 + +在代码根目录找到`config\config.ts`文件 + +> 默认图标以及系统名称优先使用基础配置的数据! + +```javascript +export default { + ... + logo: '/favicon.ico', // 浏览器标签页logo(不要修改,如需修改默认图标请在根目录public\favicon.ico替换此文件) + title: 'Jetlinks', // 浏览器标签页title(刷新状态时浏览器标签页名称) + layout: { + title: '物联网平台', // 平台title(默认配置不生效,优先使用基础配置的数据) + logo: '/logo.png', // 平台logo(不要修改,如需修改默认logo请在根目录public\logo.png替换此文件) + ... + } +} +``` + +### 去掉可视化部分以及修改备案信息 + +#### 去掉可视化部分 + +在`src\views\user\Login\index.vue`文件 + +在第140行左右,注释以下代码 +```javascript +//
+//
+// JETLINKS团队全新力作可视化大屏系统 +//
+//
+//
+// +//
+// +// 体验DEMO +// +//
+//
+``` + + +#### 修改备案信息 + +在`src\views\user\Login\index.vue`文件 + +在第16行左右,修改以下代码`备案: xxx(自己的备案信息)` +```javascript + + 备案: xxx(自己的备案信息) + +``` + +### 去掉导航栏右上角jetlinks文档 + +在`src\components\Layout\BasicLayoutPage.vue`文件 +在第23行左右,注释以下代码 + +```javascript + +``` + +### 新增菜单 + +新增或者修改菜单有两种方式,第一个是代码内的初始化菜单,第二个系统管理的菜单管理 + +* 初始化菜单 +初始化菜单是默认的菜单,在进行系统初始化会使用到。 +> 在进行菜单初始化时,如果只在菜单管理新增或修改,但是没有在初始化菜单里新增或者修改,则只会保留初始化菜单! + +* 菜单管理 +菜单管理是 系统管理 -> 菜单管理 的菜单,可以动态修改,新增或者更改 +> 如果需要系统初始化时不丢失,请在`src\views\init-home\data\baseMenu.ts`文件下新增或者修改初始化菜单 + + +**新增或者修改菜单之前,确保`src\views`文件夹下有对应的文件夹以及index.vue入口文件** + +#### 1.菜单管理 + +新建文件夹以及文件`src\views\test\Home\index.vue` + +##### 新增顶部菜单 test菜单 + +1. 启动项目,找到顶部菜单的 系统管理 -> 菜单管理,点击菜单配置旁边的新增按钮。 + +2. 完成菜单图标、名称、编码、页面地址、权限配置等 +> 编码是唯一的,必须和文件路径一致此处是顶级菜单编码填入: test +> 页面地址建议和文件路径保持一致: /test + +3. 点击保存,刷新页面后生效 + +4. 按钮权限 顶级菜单没有页面可以不用添加按钮权限 + +##### 新增子菜单 + +1. 在菜单管理 test菜单 新增子菜单 + +2. 完成菜单图标、名称、编码、页面地址、权限配置等 +> 编码是唯一的,必须和文件路径一致此处是test菜单下的二级菜单编码填入: test/Home +> 页面地址建议和文件路径保持一致: /test/Home + +4. 点击保存,刷新页面后生效 + +5. 按钮权限 如果有权限控制可以添加对应权限 + + +#### 2.初始化菜单 + +建议在菜单管理新增或修改菜单之后,再来新增或修改初始化菜单 + +##### 新增顶部菜单test以及子菜单 + +**确定有对应的文件夹以及文件`src\views\test\Home\index.vue`** + +1. 启动项目,找到顶部菜单的 系统管理 -> 菜单管理 + 打开控制台(F12),选中网络(Network),点击菜单管理的搜索或者重置,直到有 tree 的接口请求。 + 点击接口请求 tree , 并选中响应或者预览选项,找到刚刚新增code为test的数据,复制test菜单的数据 + +2. 在`src\views\init-home\data\baseMenu.ts`文件中添加配置 + + 把第一步test菜单的数据复制到对应位置即可 + +```javascript +export default [ + // 物联网 + ... + // 视频中心 + ... + // 系统管理 + ... + // 物联卡 + ... + + // test菜单 + { + "id": "eb2858ec8dc6d12645a19ee0ed6aba36", + "parentId": "", + "path": "FwY9", + "sortIndex": 5, + "level": 1, + "owner": "iot", + "name": "test菜单", + "code": "test", + "describe": "", + "url": "/test", + "icon": "StepForwardOutlined", + "status": 1, + "permissions": [], + "accessSupport": { + "text": "不支持", + "value": "unsupported" + }, + "indirectMenus": [], + "children": [ + { + "id": "1995dcd016aaad7c5515f8ead14ca617", + "parentId": "eb2858ec8dc6d12645a19ee0ed6aba36", + "path": "FwY9-T6lF", + "sortIndex": 1, + "level": 2, + "owner": "iot", + "name": "首页", + "code": "test/Home", + "describe": "", + "url": "/test/Home", + "icon": "HeatMapOutlined", + "status": 1, + "permissions": [], + "accessSupport": { + "text": "不支持", + "value": "unsupported" + }, + "indirectMenus": [], + "buttons": [ + { + "id": "add", + "name": "新增", + "permissions": [ + { + "permission": "role", + "actions": [ + "query", + "save", + "delete" + ] + } + ] + } + ], + "creatorId": "1199596756811550720", + "createTime": 1688032521555, + "supportDataAccess": false + } + ], + "creatorId": "1199596756811550720", + "createTime": 1688032467222, + "supportDataAccess": false + } +] +``` + +> 新增初始化菜单之后需要进行系统初始化才能生效 + +##### 修改初始化菜单 + +同上,在菜单管理修改对应的数据,复制对应的菜单数据,然后替换掉`baseMenu.ts`对应数据即可。 + +> 修改初始化菜单之后需要进行菜单初始化才能生效 + +##### 系统初始化 + +在浏览器顶部修改页面路径,`/#/`后边输入`init-home`,回车进入系统初始化页面 +例如: `http://localhost:5174/#/init-home` + +填写好基本信息,角色初始化等,点击确定 diff --git a/config/config.ts b/config/config.ts index 6b94b56b..fc15fd10 100644 --- a/config/config.ts +++ b/config/config.ts @@ -7,9 +7,6 @@ export default { layout: { title: '物联网平台', // 平台title logo: '/logo.png', // 平台logo - siderWidth: 208, // 左侧菜单栏宽度 - headerHeight: 48, // 头部高度 - collapsedWidth: 48, mode: 'inline', theme: 'light', // 'dark' 'light' } diff --git a/src/components/Layout/BasicLayoutPage.vue b/src/components/Layout/BasicLayoutPage.vue index 653dc88b..8f97ad37 100644 --- a/src/components/Layout/BasicLayoutPage.vue +++ b/src/components/Layout/BasicLayoutPage.vue @@ -4,7 +4,7 @@ v-model:openKeys="state.openKeys" v-model:collapsed="state.collapsed" v-model:selectedKeys="state.selectedKeys" - :headerHeight='60' + :headerHeight='layout.headerHeight' :pure="state.pure" :breadcrumb="{ routes: breadcrumb }" @backClick='routerBack' @@ -54,11 +54,11 @@ const route = useRoute(); const menu = useMenuStore(); const system = useSystem(); -const {configInfo} = storeToRefs(system); +const {configInfo,layout} = storeToRefs(system); const layoutConf = reactive({ theme: DefaultSetting.layout.theme, - siderWidth: DefaultSetting.layout.siderWidth, + siderWidth: layout.value.siderWidth, logo: DefaultSetting.layout.logo, title: DefaultSetting.layout.title, menuData: [...clearMenuItem(menu.siderMenus), AccountMenu], diff --git a/src/store/system.ts b/src/store/system.ts index ae7da083..6d7d93a1 100644 --- a/src/store/system.ts +++ b/src/store/system.ts @@ -9,13 +9,23 @@ import { SystemConst } from '@/utils/consts' type SystemStateType = { isCommunity: boolean; configInfo: Partial; + layout:{ + siderWidth: string | number | undefined; // 左侧菜单栏宽度 + headerHeight: string | number | undefined; // 头部高度 + collapsedWidth: string | number | undefined; + } } export const useSystem = defineStore('system', { state: (): SystemStateType => ({ isCommunity: false, // configInfo: [] as any[] - configInfo: {} + configInfo: {}, + layout:{ + siderWidth: 208, // 左侧菜单栏宽度 + headerHeight: 60, // 头部高度 + collapsedWidth: 48, + } }), actions: { getSystemVersion(): Promise {