caipin 4 gadi atpakaļ
vecāks
revīzija
ccb6531ed4
3 mainītis faili ar 242 papildinājumiem un 166 dzēšanām
  1. 166 166
      .vscode/settings.json
  2. 70 0
      src/components/Menu/index.tsx
  3. 6 0
      tsconfig.json

+ 166 - 166
.vscode/settings.json

@@ -1,172 +1,172 @@
-// {
-//   "editor.tabSize": 2,
-//   "path-intellisense.mappings": {
-//     "@": "${workspaceRoot}"
-//   },
-//   // "typescript.suggest.paths": false,
-//   "editor.formatOnSave": false,
-//   "css.validate": false,
-//   "scss.validate": false,
-//   "typescript.validate.enable": false
-// }
-
 {
-  "editor.codeActionsOnSave": {
-    "source.fixAll.eslint": true,
-    "source.fixAll.stylelint": true,
-    "source.organizeImports": true
-  },
-  "files.associations": {
-    "*.tag": "html",
-    "*.cshtml": "html",
-    "*.html": "html",
-    "*.njk": "html",
-    "*.mustache": "html",
-    "*.html.md": "html",
-    "*.json": "jsonc"
-  },
-  // 以下是性能优化
-  "files.exclude": {
-    "**/node_modules/**": true,
-    "**/.git": true,
-    "**/.DS_Store": true,
-    "**/__pycache__": true,
-    "**/.pytest_cache": true,
-    "venv": true,
-    "*.sublime-*": true,
-    "env*": true,
-    "dist": true
-  },
-  "search.exclude": {
-    "**/node_modules": true,
-    "**/bower_components": true,
-    "**/env": true,
-    "**/venv": true,
-    "dist": true
-  },
-  "files.watcherExclude": {
-    "**/.git/objects/**": true,
-    "**/.git/subtree-cache/**": true,
-    "**/node_modules/**": true,
-    "**/env/**": true,
-    "**/venv/**": true,
-    "env-*": true,
-    "dist": true
+  "editor.tabSize": 2,
+  "path-intellisense.mappings": {
+    "@": "${workspaceRoot}"
   },
-  "eslint.validate": [
-    "javascript",
-    "javascriptreact",
-    "typescript",
-    "typescriptreact"
-  ],
-
-  "files.trimTrailingWhitespace": true,
-  "files.insertFinalNewline": true,
-  "editor.fontFamily": "Consolas, 'Courier New', monospace",
-  "editor.cursorBlinking": "phase",
-  "editor.fontLigatures": true,
-  "window.title": "${dirty} ${rootName}${separator}${activeEditorMedium}",
-  "breadcrumbs.enabled": true,
-  "editor.minimap.renderCharacters": false,
-  "editor.minimap.maxColumn": 200,
-  "editor.minimap.showSlider": "always",
-  "editor.unfoldOnClickAfterEndOfLine": true,
-  "editor.wordWrap": "on",
-  "editor.wordWrapColumn": 100,
-  "editor.rulers": [
-    {
-      "column": 100,
-      "color": "#2d3858"
-    }
-  ],
-  "editor.suggestSelection": "first",
-  "editor.autoClosingQuotes": "always",
-  "editor.suggest.localityBonus": true,
-  "editor.suggest.shareSuggestSelections": true,
-  // 格式化配置
+  // "typescript.suggest.paths": false,
   "editor.formatOnSave": false,
-  // "editor.codeActionsOnSave": {
-  //   "source.fixAll.eslint": true,
-  //   "source.fixAll.stylelint": true,
-  //   "source.organizeImports": true
-  // },
-  "[scss]": {
-    "editor.formatOnSave": true,
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
-  },
-  "[json]": {
-    "editor.formatOnSave": false
-  },
-  "[jsonc]": {
-    "editor.formatOnSave": true,
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
-  },
-  // git相关配置
-  "git.confirmSync": false,
-  "git.autofetch": true,
-  "merge-conflict.autoNavigateNextConflict.enabled": true,
-  // 图标主题配置
-  "material-icon-theme.activeIconPack": "vue_vuex",
-  "material-icon-theme.folders.theme": "specific",
-  "material-icon-theme.hidesExplorerArrows": false,
-  "material-icon-theme.folders.color": "#26a69a",
-  // 主题配置
-  "workbench.iconTheme": "material-icon-theme",
-  "workbench.colorTheme": "SynthWave '84",
-  "editor.tokenColorCustomizations": {
-    "[SynthWave '84]": {
-      "comments": "#d4922f" // 注释颜色
-    }
-  },
-  // css智能提示
-  "html-css-class-completion.enableEmmetSupport": true,
-  "html-css-class-completion.enableScssFindUsage": true,
-  // "html-css-class-completion.excludeGlobPattern": "{node_modules,doc,docs,.bundle,vendor}/**",
-  "html-css-class-completion.includeGlobPattern": "**/src/assets/css/**",
-  // emmet语法
-  "emmet.showExpandedAbbreviation": "always",
-  "emmet.triggerExpansionOnTab": true,
-  "emmet.includeLanguages": {
-    "vue-html": "html",
-    "vue": "html",
-    "ejs": "html"
-  },
-  "git.enableSmartCommit": true,
-  // npm设置
-  "npm.enableTouchbar": true,
-  "npm.packageManager": "yarn",
-  "npm.enableRunFromFolder": true,
-  // log输出提示置顶
-  "editor.snippetSuggestions": "top",
-  "workbench.startupEditor": "welcomePage",
-  "typescript.validate.enable": false,
-  "javascript.updateImportsOnFileMove.enabled": "always",
-  // "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
-  // "terminal.integrated.shellArgs.windows": ["--login", "-i"],
-  "extensions.autoUpdate": true,
-  "terminal.integrated.fontSize": 13,
-  "editor.fontSize": 14,
-  "[javascript]": {
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
-  },
-  "[html]": {
-    "editor.defaultFormatter": "vscode.html-language-features"
-  },
-  "[javascriptreact]": {
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
-  },
-  "[typescriptreact]": {
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
-  },
-  "[typescript]": {
-    "editor.defaultFormatter": "esbenp.prettier-vscode"
-  },
-  "explorer.confirmDelete": false,
-  "editor.tabSize": 2,
-  "typescript.updateImportsOnFileMove.enabled": "always",
   "css.validate": false,
-  "less.validate": false,
-  "scss.validate": false
-  // "html-css-class-completion.includeGlobPattern": "**/src/**",
+  "scss.validate": false,
+  "typescript.validate.enable": false
 }
 
+// {
+//   "editor.codeActionsOnSave": {
+//     "source.fixAll.eslint": true,
+//     "source.fixAll.stylelint": true,
+//     "source.organizeImports": true
+//   },
+//   "files.associations": {
+//     "*.tag": "html",
+//     "*.cshtml": "html",
+//     "*.html": "html",
+//     "*.njk": "html",
+//     "*.mustache": "html",
+//     "*.html.md": "html",
+//     "*.json": "jsonc"
+//   },
+//   // 以下是性能优化
+//   "files.exclude": {
+//     "**/node_modules/**": true,
+//     "**/.git": true,
+//     "**/.DS_Store": true,
+//     "**/__pycache__": true,
+//     "**/.pytest_cache": true,
+//     "venv": true,
+//     "*.sublime-*": true,
+//     "env*": true,
+//     "dist": true
+//   },
+//   "search.exclude": {
+//     "**/node_modules": true,
+//     "**/bower_components": true,
+//     "**/env": true,
+//     "**/venv": true,
+//     "dist": true
+//   },
+//   "files.watcherExclude": {
+//     "**/.git/objects/**": true,
+//     "**/.git/subtree-cache/**": true,
+//     "**/node_modules/**": true,
+//     "**/env/**": true,
+//     "**/venv/**": true,
+//     "env-*": true,
+//     "dist": true
+//   },
+//   "eslint.validate": [
+//     "javascript",
+//     "javascriptreact",
+//     "typescript",
+//     "typescriptreact"
+//   ],
+
+//   "files.trimTrailingWhitespace": true,
+//   "files.insertFinalNewline": true,
+//   "editor.fontFamily": "Consolas, 'Courier New', monospace",
+//   "editor.cursorBlinking": "phase",
+//   "editor.fontLigatures": true,
+//   "window.title": "${dirty} ${rootName}${separator}${activeEditorMedium}",
+//   "breadcrumbs.enabled": true,
+//   "editor.minimap.renderCharacters": false,
+//   "editor.minimap.maxColumn": 200,
+//   "editor.minimap.showSlider": "always",
+//   "editor.unfoldOnClickAfterEndOfLine": true,
+//   "editor.wordWrap": "on",
+//   "editor.wordWrapColumn": 100,
+//   "editor.rulers": [
+//     {
+//       "column": 100,
+//       "color": "#2d3858"
+//     }
+//   ],
+//   "editor.suggestSelection": "first",
+//   "editor.autoClosingQuotes": "always",
+//   "editor.suggest.localityBonus": true,
+//   "editor.suggest.shareSuggestSelections": true,
+//   // 格式化配置
+//   "editor.formatOnSave": false,
+//   // "editor.codeActionsOnSave": {
+//   //   "source.fixAll.eslint": true,
+//   //   "source.fixAll.stylelint": true,
+//   //   "source.organizeImports": true
+//   // },
+//   "[scss]": {
+//     "editor.formatOnSave": true,
+//     "editor.defaultFormatter": "esbenp.prettier-vscode"
+//   },
+//   "[json]": {
+//     "editor.formatOnSave": false
+//   },
+//   "[jsonc]": {
+//     "editor.formatOnSave": true,
+//     "editor.defaultFormatter": "esbenp.prettier-vscode"
+//   },
+//   // git相关配置
+//   "git.confirmSync": false,
+//   "git.autofetch": true,
+//   "merge-conflict.autoNavigateNextConflict.enabled": true,
+//   // 图标主题配置
+//   "material-icon-theme.activeIconPack": "vue_vuex",
+//   "material-icon-theme.folders.theme": "specific",
+//   "material-icon-theme.hidesExplorerArrows": false,
+//   "material-icon-theme.folders.color": "#26a69a",
+//   // 主题配置
+//   "workbench.iconTheme": "material-icon-theme",
+//   "workbench.colorTheme": "SynthWave '84",
+//   "editor.tokenColorCustomizations": {
+//     "[SynthWave '84]": {
+//       "comments": "#d4922f" // 注释颜色
+//     }
+//   },
+//   // css智能提示
+//   "html-css-class-completion.enableEmmetSupport": true,
+//   "html-css-class-completion.enableScssFindUsage": true,
+//   // "html-css-class-completion.excludeGlobPattern": "{node_modules,doc,docs,.bundle,vendor}/**",
+//   "html-css-class-completion.includeGlobPattern": "**/src/assets/css/**",
+//   // emmet语法
+//   "emmet.showExpandedAbbreviation": "always",
+//   "emmet.triggerExpansionOnTab": true,
+//   "emmet.includeLanguages": {
+//     "vue-html": "html",
+//     "vue": "html",
+//     "ejs": "html"
+//   },
+//   "git.enableSmartCommit": true,
+//   // npm设置
+//   "npm.enableTouchbar": true,
+//   "npm.packageManager": "yarn",
+//   "npm.enableRunFromFolder": true,
+//   // log输出提示置顶
+//   "editor.snippetSuggestions": "top",
+//   "workbench.startupEditor": "welcomePage",
+//   "typescript.validate.enable": false,
+//   "javascript.updateImportsOnFileMove.enabled": "always",
+//   // "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
+//   // "terminal.integrated.shellArgs.windows": ["--login", "-i"],
+//   "extensions.autoUpdate": true,
+//   "terminal.integrated.fontSize": 13,
+//   "editor.fontSize": 14,
+//   "[javascript]": {
+//     "editor.defaultFormatter": "esbenp.prettier-vscode"
+//   },
+//   "[html]": {
+//     "editor.defaultFormatter": "vscode.html-language-features"
+//   },
+//   "[javascriptreact]": {
+//     "editor.defaultFormatter": "esbenp.prettier-vscode"
+//   },
+//   "[typescriptreact]": {
+//     "editor.defaultFormatter": "esbenp.prettier-vscode"
+//   },
+//   "[typescript]": {
+//     "editor.defaultFormatter": "esbenp.prettier-vscode"
+//   },
+//   "explorer.confirmDelete": false,
+//   "editor.tabSize": 2,
+//   "typescript.updateImportsOnFileMove.enabled": "always",
+//   "css.validate": false,
+//   "less.validate": false,
+//   "scss.validate": false
+//   // "html-css-class-completion.includeGlobPattern": "**/src/**",
+// }
+

+ 70 - 0
src/components/Menu/index.tsx

@@ -0,0 +1,70 @@
+import logo from '@/assets/img/logo.png'
+import { userStore } from '@/store/mobx'
+import { iMenuItem } from '@/types/router'
+import { Button, Dropdown, Menu } from "antd"
+import { observer } from 'mobx-react'
+import React, { Component } from 'react'
+import { Link } from "react-router-dom"
+import styles from './index.module.scss'
+import './index.scss'
+import MenuItem from './MenuItem'
+interface iMenuProps {
+  list: iMenuItem[]
+}
+@observer
+class NavSider extends Component<iMenuProps, any> {
+  render() {
+    const { list: MeunList } = this.props
+    return (
+      <div className="main-nav">
+        <div className="logo"><img src={logo}></img></div>
+        <div className="nav-content">
+          <div className="nav-top">
+            {
+              MeunList?.map((item: iMenuItem, idx: number) =>
+                item.isTop && <MenuItem key={idx} item={item}></MenuItem>
+              )
+            }
+          </div>
+          <div className="nav-footer">
+            {
+              MeunList?.map((item: iMenuItem, idx: number) => {
+                if (item.path === '/console/management') {
+                  return userStore.role === 'ADMIN' ? !item.isTop && <MenuItem key={idx} item={item}></MenuItem> : ''
+                } else {
+                  return !item.isTop && <MenuItem key={idx} item={item}></MenuItem>
+                }
+              })
+            }
+            <div className="pi-text-center">
+              <Dropdown overlay={() => {
+                return (
+                  <Menu>
+                    <Menu.Item key="0">
+                      <Link to="/acount/safe">账号资料</Link>
+                    </Menu.Item>
+                    <Menu.Item key="1">
+                      <Link to="/acount/safe">账号安全</Link>
+                    </Menu.Item>
+                    <Menu.Divider />
+                    <Menu.Item key="2">
+                      <Link to="/acount/safe">帮助中心</Link>
+                    </Menu.Item>
+                    <Menu.Item key="3">
+                      {/* <Link to="/login">退出登录</Link> */}
+                      <span onClick={() => userStore.logout()}>退出登录</span>
+                    </Menu.Item>
+                  </Menu>
+                )
+              }} trigger={[ 'click' ]} placement="topRight">
+                <Button size="small" className={styles.bottomBtn}>{userStore.userInfo.name}</Button>
+              </Dropdown>
+            </div>
+          </div>
+        </div>
+      </div>
+    )
+  }
+}
+
+export default NavSider

+ 6 - 0
tsconfig.json

@@ -1,3 +1,9 @@
+/*
+ * @description:
+ * @Author: CP
+ * @Date: 2020-11-11 11:14:31
+ * @FilePath: \management\tsconfig.json
+ */
 {
   "compilerOptions": {
     "target": "es5",