From 841b4bc49494f3069e5cd93124d09a0458cc8e67 Mon Sep 17 00:00:00 2001 From: chuzhixin <1204505056@qq.com> Date: Sat, 3 Oct 2020 20:23:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E4=BA=8Eantdv=20vue3.0=E7=9A=84?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E9=A6=96=E6=AC=A1=E6=8F=90=E4=BA=A4=20?= =?UTF-8?q?=E6=84=9F=E8=B0=A2vue=E4=BD=9C=E8=80=85=E5=B0=A4=E9=9B=A8?= =?UTF-8?q?=E6=BA=AA=20=E6=84=9F=E8=B0=A2antdv=E4=BD=9C=E8=80=85=E5=94=90?= =?UTF-8?q?=E9=87=91=E5=B7=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .browserslistrc | 3 + .eslintrc.js | 14 + .gitattributes | 10 + .gitignore | 24 ++ .stylelintrc.js | 3 + README.md | Bin 18 -> 4128 bytes babel.config.js | 3 + deploy.sh | 16 + mock/controller/router.js | 59 +++ mock/controller/user.js | 103 +++++ mock/index.js | 16 + mock/mockServer.js | 94 +++++ mock/utils/index.js | 43 ++ package.json | 62 +++ prettier.config.js | 16 + public/favicon.ico | Bin 0 -> 4286 bytes public/index.html | 17 + src/App.vue | 6 + src/api/router.js | 9 + src/api/user.js | 43 ++ src/assets/error_images/401.png | Bin 0 -> 150203 bytes src/assets/error_images/404.png | Bin 0 -> 71577 bytes src/assets/error_images/cloud.png | Bin 0 -> 2029 bytes src/assets/logo.png | Bin 0 -> 6849 bytes src/config/settings.js | 73 ++++ src/layout/index.vue | 201 ++++++++++ src/layout/vab-avatar/index.vue | 53 +++ src/layout/vab-content/index.vue | 51 +++ src/layout/vab-icon/index.vue | 24 ++ src/layout/vab-logo/index.vue | 37 ++ src/layout/vab-menu/components/MenuItem.vue | 42 ++ src/layout/vab-menu/components/Submenu.vue | 34 ++ src/layout/vab-menu/index.vue | 60 +++ src/layout/vab-tabs/index.vue | 159 ++++++++ src/main.js | 17 + src/router/index.js | 87 ++++ src/store/index.js | 17 + src/store/modules/acl.js | 33 ++ src/store/modules/routes.js | 60 +++ src/store/modules/settings.js | 179 +++++++++ src/store/modules/tagsBar.js | 146 +++++++ src/store/modules/user.js | 138 +++++++ src/utils/accessToken.js | 66 +++ src/utils/hasRole.js | 51 +++ src/utils/index.js | 265 ++++++++++++ src/utils/pageTitle.js | 15 + src/utils/request.js | 126 ++++++ src/utils/routes.js | 77 ++++ src/utils/static.js | 52 +++ src/utils/validate.js | 268 +++++++++++++ src/vab/index.js | 5 + src/vab/plugins/permissions.js | 74 ++++ src/vab/styles/normalize.less | 379 ++++++++++++++++++ src/vab/styles/vab.less | 29 ++ src/views/401.vue | 212 ++++++++++ src/views/404.vue | 210 ++++++++++ .../index/components/VersionInformation.vue | 90 +++++ src/views/index/index.vue | 13 + src/views/login/index.vue | 86 ++++ vue-admin-beautiful | 1 + vue.config.js | 189 +++++++++ 61 files changed, 4160 insertions(+) create mode 100644 .browserslistrc create mode 100644 .eslintrc.js create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .stylelintrc.js create mode 100644 babel.config.js create mode 100644 deploy.sh create mode 100644 mock/controller/router.js create mode 100644 mock/controller/user.js create mode 100644 mock/index.js create mode 100644 mock/mockServer.js create mode 100644 mock/utils/index.js create mode 100644 package.json create mode 100644 prettier.config.js create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 src/App.vue create mode 100644 src/api/router.js create mode 100644 src/api/user.js create mode 100644 src/assets/error_images/401.png create mode 100644 src/assets/error_images/404.png create mode 100644 src/assets/error_images/cloud.png create mode 100644 src/assets/logo.png create mode 100644 src/config/settings.js create mode 100644 src/layout/index.vue create mode 100644 src/layout/vab-avatar/index.vue create mode 100644 src/layout/vab-content/index.vue create mode 100644 src/layout/vab-icon/index.vue create mode 100644 src/layout/vab-logo/index.vue create mode 100644 src/layout/vab-menu/components/MenuItem.vue create mode 100644 src/layout/vab-menu/components/Submenu.vue create mode 100644 src/layout/vab-menu/index.vue create mode 100644 src/layout/vab-tabs/index.vue create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/acl.js create mode 100644 src/store/modules/routes.js create mode 100644 src/store/modules/settings.js create mode 100644 src/store/modules/tagsBar.js create mode 100644 src/store/modules/user.js create mode 100644 src/utils/accessToken.js create mode 100644 src/utils/hasRole.js create mode 100644 src/utils/index.js create mode 100644 src/utils/pageTitle.js create mode 100644 src/utils/request.js create mode 100644 src/utils/routes.js create mode 100644 src/utils/static.js create mode 100644 src/utils/validate.js create mode 100644 src/vab/index.js create mode 100644 src/vab/plugins/permissions.js create mode 100644 src/vab/styles/normalize.less create mode 100644 src/vab/styles/vab.less create mode 100644 src/views/401.vue create mode 100644 src/views/404.vue create mode 100644 src/views/index/components/VersionInformation.vue create mode 100644 src/views/index/index.vue create mode 100644 src/views/login/index.vue create mode 160000 vue-admin-beautiful create mode 100644 vue.config.js diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..214388f --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,3 @@ +> 1% +last 2 versions +not dead diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..2734abe --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,14 @@ +module.exports = { + root: true, + env: { + node: true, + }, + extends: ["plugin:vue/vue3-essential", "eslint:recommended", "@vue/prettier"], + parserOptions: { + parser: "babel-eslint", + }, + rules: { + "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", + "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", + }, +}; diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b9edb39 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,10 @@ +*.html text eol=lf +*.css text eol=lf +*.js text eol=lf +*.scss text eol=lf +*.vue text eol=lf +*.hbs text eol=lf +*.sh text eol=lf +*.md text eol=lf +*.json text eol=lf +*.yml text eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4711a78 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +.DS_Store +node_modules +/dist +/package-lock.json + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000..f521455 --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ["stylelint-config-recess-order", "stylelint-config-prettier"], +}; diff --git a/README.md b/README.md index d61ee39473173ddf6d97753c139cd0ad49f35289..e907b446d212dd1621739c2e410dbc6fdf9cbe6b 100644 GIT binary patch literal 4128 zcmdT{TW{M&7Jk>Sm{ovagO(<#izRg}7rQ|h+X7qUWeXI+q8U*miM2$kq$oK>9u&ut z<+~HxN!E$$D2`(<(#lSo#EvA}|E1-S)KmHs_6#XGR;zTq+w`F}Ak&qwef0ud20fR5RuCDNNHz;@P?{)2!&xqGXn9p9 z@1mTXOlAqfN)jcoG?vy>10GYF3VRaw3Fk;j)y801CrP9#=o5pWcTg7?`p1Xet$0ZD zsLyxq9HRI4=z7`b>rnmg6U89wG=h;iTT7^(vwdbsr zU2E<-x^xj@qA$O*){o)Anx3`pH(#}<|M|yWb^2;DEcc2 z_#SOOrcYNPtt_D%O}k!Z5rDz|x3sd;xv}Fs+l6j{RCdY}oyxqu^4yucd6Lqab z=3pA+{~?wiH|Ca*R}f^jmT7a@Ylqk6^%i^6_hm*Nmz7^#T-elpaNTU)eB+*H9{4lX zjm^R0taYQ(Sw6BBw%jH&K9NZYS+}RG`X-dic~P-8Z?Uo7Zqbt$~nZ|Y8l%}`_x=kv&3*|2~!+IQ{kGHea= zi#*1FJy^r6KXiF!(rmq;x8}^FV{3jN-q8ImTG=<-Yfj_e*2Io^TxXLxTeH@;*cTs9 zbe^{9(H(2=Ss%Dl#rza2P|1%;fp_uo9@Y;$eq%74`VO66bs9%bqfQrR%+@B9jKQrf z(SHF!)ac@_vt6ZgxBD#F5@e^`S!sC2C)DJby$R1pcV*)pDFij0IKe;>sFQ zhSSIw2GI-NWHCm*q^UVsCydcx`dIpUX@%keX8{SbL94&C?=|e^HmyAY8)tXldO87} z-iM@ADh+)B`+u3i3e=82yQrxO1@S z>^=1PuCd@hCsG0Zs-J7%h{ebV9 z4fg6f!f>(PL zRehi*%vN~!^DK@a98Z$@pT1c%_1S?hars_8td+j9-4T!C@57H-j{dGlbN)~d8p19=2(4oVQCj7Cy@LJyRI+wBR% zkd?F_6|j~jg}DE-L>4P!e$Y@%D(Z!+SrYdrR4qv~PQyvr(BF&2V)^l(NJm`6;6WFe zE&9Tzix40QojHtDDV3A4`nDnozOf*I7(fn$#9kzcgb<5F5+NZhNhy)R zmPm+*Q4&f)ZDQeQGz`%U_ZNi8UXV6VVMYQ&#z z&Su3tT6dn`_9^)slHn!OjUe9L(+$z3T~H-mY|KJ46a@WTBt8hhoj(?`r%T7X@{|KY zOBP>8-p_Ami=IpLJNvz4gAwFUu7}9GlR1qYr_r>J9-&wy5DJEaVhlu!Cmxp4^M$82qx%_ns64y~~ou{+foobpU2F|)}H zIH { + const obj = require(item); + mocks.push(...obj); +}); +module.exports = { + mocks, +}; diff --git a/mock/mockServer.js b/mock/mockServer.js new file mode 100644 index 0000000..23944fd --- /dev/null +++ b/mock/mockServer.js @@ -0,0 +1,94 @@ +const chokidar = require("chokidar"); +const bodyParser = require("body-parser"); +const chalk = require("chalk"); +const path = require("path"); +const Mock = require("mockjs"); +const { baseURL } = require("../src/config/settings"); +const mockDir = path.join(process.cwd(), "mock"); + +/** + * + * @param app + * @returns {{mockStartIndex: number, mockRoutesLength: number}} + */ +const registerRoutes = (app) => { + let mockLastIndex; + const { mocks } = require("./index.js"); + const mocksForServer = mocks.map((route) => { + return responseFake(route.url, route.type, route.response); + }); + for (const mock of mocksForServer) { + app[mock.type](mock.url, mock.response); + mockLastIndex = app._router.stack.length; + } + const mockRoutesLength = Object.keys(mocksForServer).length; + return { + mockRoutesLength: mockRoutesLength, + mockStartIndex: mockLastIndex - mockRoutesLength, + }; +}; + +/** + * + * @param url + * @param type + * @param respond + * @returns {{response(*=, *=): void, type: (*|string), url: RegExp}} + */ +const responseFake = (url, type, respond) => { + return { + url: new RegExp(`${baseURL}${url}`), + type: type || "get", + response(req, res) { + res.status(200); + if (JSON.stringify(req.body) !== "{}") { + console.log(chalk.green(`> 请求地址:${req.path}`)); + console.log(chalk.green(`> 请求参数:${JSON.stringify(req.body)}\n`)); + } else { + console.log(chalk.green(`> 请求地址:${req.path}\n`)); + } + res.json( + Mock.mock(respond instanceof Function ? respond(req, res) : respond) + ); + }, + }; +}; +/** + * + * @param app + */ +module.exports = (app) => { + app.use(bodyParser.json()); + app.use( + bodyParser.urlencoded({ + extended: true, + }) + ); + + const mockRoutes = registerRoutes(app); + let mockRoutesLength = mockRoutes.mockRoutesLength; + let mockStartIndex = mockRoutes.mockStartIndex; + chokidar + .watch(mockDir, { + ignored: /mock-server/, + ignoreInitial: true, + }) + .on("all", (event) => { + if (event === "change" || event === "add") { + try { + app._router.stack.splice(mockStartIndex, mockRoutesLength); + + Object.keys(require.cache).forEach((item) => { + if (item.includes(mockDir)) { + delete require.cache[require.resolve(item)]; + } + }); + const mockRoutes = registerRoutes(app); + mockRoutesLength = mockRoutes.mockRoutesLength; + mockStartIndex = mockRoutes.mockStartIndex; + } catch (error) { + console.log(chalk.red(error)); + } + } + }); +}; diff --git a/mock/utils/index.js b/mock/utils/index.js new file mode 100644 index 0000000..7d6ef7c --- /dev/null +++ b/mock/utils/index.js @@ -0,0 +1,43 @@ +const { Random } = require("mockjs"); +const { join } = require("path"); +const fs = require("fs"); + +/** + * @author chuzhixin 1204505056@qq.com + * @description 随机生成图片url。 + * @param width + * @param height + * @returns {string} + */ +function handleRandomImage(width = 50, height = 50) { + return `https://picsum.photos/${width}/${height}?random=${Random.guid()}`; +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 处理所有 controller 模块,npm run serve时在node环境中自动输出controller文件夹下Mock接口,请勿修改。 + * @returns {[]} + */ +function handleMockArray() { + const mockArray = []; + const getFiles = (jsonPath) => { + const jsonFiles = []; + const findJsonFile = (path) => { + const files = fs.readdirSync(path); + files.forEach((item) => { + const fPath = join(path, item); + const stat = fs.statSync(fPath); + if (stat.isDirectory() === true) findJsonFile(item); + if (stat.isFile() === true) jsonFiles.push(item); + }); + }; + findJsonFile(jsonPath); + jsonFiles.forEach((item) => mockArray.push(`./controller/${item}`)); + }; + getFiles("mock/controller"); + return mockArray; +} +module.exports = { + handleRandomImage, + handleMockArray, +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..6464ec2 --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "name": "vue-admin-beautiful-mini", + "version": "1.0.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint", + "clear": "rimraf node_modules&&npm install --registry=https://registry.npm.taobao.org", + "use:npm": "nrm use npm", + "use:taobao": "nrm use taobao", + "update": "ncu -u --target greatest&&npm install --registry=https://registry.npm.taobao.org", + "deploy": "start ./deploy.sh" + }, + "dependencies": { + "ant-design-vue": "^2.0.0-beta.10", + "axios": "^0.20.0", + "core-js": "^3.6.5", + "dayjs": "^1.8.36", + "js-cookie": "^3.0.0-rc.1", + "mockjs": "^1.1.0", + "remixicon": "^2.5.0", + "vue": "^3.0.0", + "vue-router": "^4.0.0-beta.11", + "vuex": "^4.0.0-beta.4", + "zx-layouts": "^0.6.13" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^4.5.6", + "@vue/cli-plugin-eslint": "^4.5.6", + "@vue/cli-service": "^4.5.6", + "@vue/compiler-sfc": "^3.0.0", + "@vue/eslint-config-prettier": "^6.0.0", + "babel-eslint": "^11.0.0-beta.2", + "body-parser": "^1.19.0", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "compression-webpack-plugin": "^6.0.2", + "eslint": "^7.9.0", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-vue": "^7.0.0-beta.4", + "filemanager-webpack-plugin": "^2.0.5", + "less": "^3.12.2", + "less-loader": "^7.0.1", + "lint-staged": "^10.4.0", + "prettier": "^2.1.2", + "stylelint": "^13.7.1", + "stylelint-config-prettier": "^8.0.2", + "stylelint-config-recess-order": "^2.1.0", + "svg-sprite-loader": "^5.0.0", + "webpackbar": "^4.0.0" + }, + "gitHooks": { + "pre-commit": "lint-staged" + }, + "lint-staged": { + "*.{js,jsx,vue}": [ + "vue-cli-service lint", + "git add" + ] + } +} diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..a7628ac --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,16 @@ +module.exports = { + printWidth: 80, + tabWidth: 2, + useTabs: false, + semi: true, + singleQuote: false, + quoteProps: "as-needed", + jsxSingleQuote: false, + trailingComma: "es5", + bracketSpacing: true, + jsxBracketSameLine: false, + arrowParens: "always", + htmlWhitespaceSensitivity: "ignore", + vueIndentScriptAndStyle: true, + endOfLine: "lf", +}; diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..4123528 --- /dev/null +++ b/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + +
+ + + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..54747ea --- /dev/null +++ b/src/App.vue @@ -0,0 +1,6 @@ + + diff --git a/src/api/router.js b/src/api/router.js new file mode 100644 index 0000000..85ce309 --- /dev/null +++ b/src/api/router.js @@ -0,0 +1,9 @@ +import request from "@/utils/request"; + +export function getRouterList(params) { + return request({ + url: "/menu/navigate", + method: "get", + params, + }); +} diff --git a/src/api/user.js b/src/api/user.js new file mode 100644 index 0000000..2287a55 --- /dev/null +++ b/src/api/user.js @@ -0,0 +1,43 @@ +import request from "@/utils/request"; +import { tokenName } from "@/config/settings"; + +export async function login(data) { + return request({ + url: "/login", + method: "post", + data, + }); +} + +export async function socialLogin(data) { + return request({ + url: "/socialLogin", + method: "post", + data, + }); +} + +export function getUserInfo(accessToken) { + //此处为了兼容mock.js使用data传递accessToken,如果使用mock可以走headers + return request({ + url: "/userInfo", + method: "post", + data: { + [tokenName]: accessToken, + }, + }); +} + +export function logout() { + return request({ + url: "/logout", + method: "post", + }); +} + +export function register() { + return request({ + url: "/register", + method: "post", + }); +} diff --git a/src/assets/error_images/401.png b/src/assets/error_images/401.png new file mode 100644 index 0000000000000000000000000000000000000000..5c693f433c1bc19f5ed13ffe669dc678a6ae2597 GIT binary patch literal 150203 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 z z9?es!7|K}w)|noG6vnU~BTpC(f_yUs)zO}la8c+ev-YOs-E=c_P72Zruxhj*yi*kV zCs|9r01O@J<`N|Hbmg8jE6IRfKS_fOSNTT`P#HX1vMjTCq{Kl**-~@Rz(wZd>2Z;gR87A)5`2P<$Ae!)>oH1w~Pf=gE<=0_D&6=fZL&7?T3Ix?4t^-kHCbKV z7`;>k%}K1)wHGBvnGK0#xIes3?n@aZpCzIFFNWicRx zUhZ+26sWqckiuAjN=>L^&eWSEgV}Yqz)V{6g%HLuOl|jOjHWE|xulY+I^yW?h@)Z2 z6W15`gFiCQAO5||pTByUzj)O5OZ@@=`CzC&T9&+3CU59VL4K>Qc?t-^8`&L|1V36e z^aFfZ@~+XG@RovZ3-4oP3xoSb&|$Jx@`S`l_&!h|EyPHVNZ@_mvb);Fx#S_y%-u=hc=l7;gfk{lgISO$H(uDK9`zbffI_T^|jqk_Xi zzF9{-)gSmz)wO@AEcNAHr@Z+sFZip^KItF$#O?COzwotc_48jH^5!kGxox(0BT~wC zoa>3AXe!7%*N{uru_m?*$c?a5uuO7Wrk�D9n@RntCSf3yhttY0a}C@8TxQ(z(sm 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∓R4KUQSO2Dt3%gaCoI;DC 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 Yt}=oi2qn@#a0Gx0W9x{jN8U{OKkBBX82|tP literal 0 HcmV?d00001 diff --git a/src/assets/error_images/cloud.png b/src/assets/error_images/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..247c06b41a6d9db75dab41c01cd93d959760485e GIT binary patch literal 2029 zcmZ8ido+~m8Xv4&hS;=ZDh!%PE{&ArvdNjD*=z=*rDlt9?8=grElFn8OpXcSKtp3CI86gg^`!u0WCvti>$>hc5#9|EtB}ivbS=dujLV;-)|-5-)8E z0oaSKu!P_s=meD8=I-iun*{FKws3NH#bkusOROfrYByXQDZU}=4oB7 z#xV9$cRLQQEaWfEjtzBncDyR4#9zbPi+J1Xt1}-bN9ltDeSMvPue@!gE48^YH#hrX z;vJnn)Z5ejqAvGgYE0BEv?1b%0(X6F@#{whZJ@oirKX}N?@@3t{^yhG+Y_VIw$|q6 zD$0YT_~5Gq=O0fUWPXXh+s}`dg+TUMVo>LC5mRd)C~&fZG;gbv!C5+8s64QHn@8m}u)jOaHZ%?w)Q%o=drLRW8@Pf9gdFp48B|BJ=NCbPJyUM0&@dOCSFODZ#}WK?35 zlqgiWVQ%I)1ce-tCuhT&{vfkyY)sh;IWfS`j>yI1yLx91#5+; ze5?Bl6}Q6rQ{uuWWyZz=-Hw>jqA16-wJRDTH;h`e+@IUlZD7BB-LIn2_P*9ZN9(!j zuMWEUexnJ}G0>6~TYWP~TI8FQas|}`eNxiiT|b5H*cD`gF0rONmN=nay>$ zzgoCX*g^N~3=Bi*GV$ljW>RLdrQcCp}i` zOKxN>KBe2-sCd@)Z9F9SuMv|$_4s<3T<73mwlyQuQ65c3G_{ot&7_L6)7SE$2@)Gos3`VenRV@-BPa+#yH zl~IU#IPKgOYBBi((sCro+tI3mfW0yh2t(ZX?XWC{bZ&pbVz4WY%;ZNWDim;xH%N))6YGswVvlbdB=nc{ zyyYK~V|<+ViMKQIYO#s=&WF#tZ-)*(ZY4aqW2%$$?!ATgA6|^^6lK?=RdvDj@ps90 zVx(}$XWr!Gb8wjb!$nz0IKd%Osyn2srJ@Pv5mpwV&&*1cvkVf=w5zz+xwPZmC({>j)tC{Np~V$ z>S<>L*;js+#+=Q+ue={N-?GTu468rJ$kSF8KZ;JoD*EDt3}U7UR8>=yQDYUyGZUhlqr3o zcVJx={ZzHk^PmE52T=Lh8Pgt~yqzK{s5Z z8JkSQ>3IrGFgs5)U(fDDM<*7NjY*c$koh^T&t zej}f@qihJ44HR?coy>=y`=kNU_2mK5*<7du(FDBPNiO6m9zl4m&Dp|kHTWLvcLmmv zTi@N-aJZs11#TK0Gkx2bhNTUOhyQVb%evOKQUGr!pYMw9AE9bIg*4w TG^r)|uR|ahv@5FC!7u(_O{Ba` literal 0 HcmV?d00001 diff --git a/src/assets/logo.png b/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d2503fc2a44b5053b0837ebea6e87a2d339a43 GIT binary patch literal 6849 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 + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + + + diff --git a/src/layout/vab-avatar/index.vue b/src/layout/vab-avatar/index.vue new file mode 100644 index 0000000..544529f --- /dev/null +++ b/src/layout/vab-avatar/index.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/layout/vab-content/index.vue b/src/layout/vab-content/index.vue new file mode 100644 index 0000000..ef68de9 --- /dev/null +++ b/src/layout/vab-content/index.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/layout/vab-icon/index.vue b/src/layout/vab-icon/index.vue new file mode 100644 index 0000000..b1a234c --- /dev/null +++ b/src/layout/vab-icon/index.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/src/layout/vab-logo/index.vue b/src/layout/vab-logo/index.vue new file mode 100644 index 0000000..e0f1b7c --- /dev/null +++ b/src/layout/vab-logo/index.vue @@ -0,0 +1,37 @@ + + + + diff --git a/src/layout/vab-menu/components/MenuItem.vue b/src/layout/vab-menu/components/MenuItem.vue new file mode 100644 index 0000000..2e2a783 --- /dev/null +++ b/src/layout/vab-menu/components/MenuItem.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/layout/vab-menu/components/Submenu.vue b/src/layout/vab-menu/components/Submenu.vue new file mode 100644 index 0000000..2e3da4a --- /dev/null +++ b/src/layout/vab-menu/components/Submenu.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/layout/vab-menu/index.vue b/src/layout/vab-menu/index.vue new file mode 100644 index 0000000..1382415 --- /dev/null +++ b/src/layout/vab-menu/index.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/layout/vab-tabs/index.vue b/src/layout/vab-tabs/index.vue new file mode 100644 index 0000000..ef82504 --- /dev/null +++ b/src/layout/vab-tabs/index.vue @@ -0,0 +1,159 @@ + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..1b35376 --- /dev/null +++ b/src/main.js @@ -0,0 +1,17 @@ +import { createApp } from "vue"; +import Antd from "ant-design-vue"; +import App from "./App"; +import router from "./router"; +import store from "./store"; +import "ant-design-vue/dist/antd.css"; +import "@/vab"; +/** + * @author chuzhixin 1204505056@qq.com + * @description 正式环境默认使用mock,正式项目记得注释后再打包 + */ +if (process.env.NODE_ENV === "production") { + const { mockXHR } = require("@/utils/static"); + mockXHR(); +} + +createApp(App).use(store).use(router).use(Antd).mount("#app"); diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..13f484a --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,87 @@ +import { createRouter, createWebHashHistory } from "vue-router"; +import Layout from "@/layout"; + +export const constantRoutes = [ + { + path: "/login", + component: () => import("@/views/login"), + hidden: true, + }, + { + path: "/401", + name: "401", + component: () => import("@/views/401"), + hidden: true, + }, + { + path: "/404", + name: "404", + component: () => import("@/views/404"), + hidden: true, + }, +]; +export const asyncRoutes = [ + { + path: "/", + component: Layout, + redirect: "/index", + meta: { + title: "首页", + icon: "home-4-line", + affix: true, + }, + children: [ + { + path: "index", + name: "Index", + component: () => import("@/views/index"), + meta: { + title: "首页", + icon: "home-4-line", + affix: true, + }, + }, + ], + }, + { + path: "/error", + name: "Error", + component: Layout, + redirect: "/error/401", + meta: { + title: "错误页", + icon: "error-warning-line", + }, + children: [ + { + path: "401", + name: "Error401", + component: () => import("@/views/401"), + meta: { + title: "401", + icon: "error-warning-line", + }, + }, + { + path: "404", + name: "Error404", + component: () => import("@/views/404"), + meta: { + title: "404", + icon: "error-warning-line", + }, + }, + ], + }, + { + path: "/*", + redirect: "/404", + hidden: true, + }, +]; +const router = createRouter({ + history: createWebHashHistory(), + routes: constantRoutes, +}); + +export default router; diff --git a/src/store/index.js b/src/store/index.js new file mode 100644 index 0000000..34e49d6 --- /dev/null +++ b/src/store/index.js @@ -0,0 +1,17 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 导入所有 vuex 模块,自动加入namespaced:true,用于解决vuex命名冲突,请勿修改。 + */ +import { createStore } from "vuex"; + +const files = require.context("./modules", false, /\.js$/); +const modules = {}; +files.keys().forEach((key) => { + modules[key.replace(/(\.\/|\.js)/g, "")] = files(key).default; +}); +Object.keys(modules).forEach((key) => { + modules[key]["namespaced"] = true; +}); +export default createStore({ + modules, +}); diff --git a/src/store/modules/acl.js b/src/store/modules/acl.js new file mode 100644 index 0000000..5d05bb8 --- /dev/null +++ b/src/store/modules/acl.js @@ -0,0 +1,33 @@ +const state = { + admin: false, + role: [], + ability: [], +}; +const getters = { + admin: (state) => state.admin, + role: (state) => state.role, + ability: (state) => state.ability, +}; +const mutations = { + setFull(state, admin) { + state.admin = admin; + }, + setRole(state, role) { + state.role = role; + }, + setAbility(state, ability) { + state.ability = ability; + }, +}; +const actions = { + setFull({ commit }, admin) { + commit("setFull", admin); + }, + setRole({ commit }, role) { + commit("setRole", role); + }, + setAbility({ commit }, ability) { + commit("setAbility", ability); + }, +}; +export default { state, getters, mutations, actions }; diff --git a/src/store/modules/routes.js b/src/store/modules/routes.js new file mode 100644 index 0000000..b3bf16b --- /dev/null +++ b/src/store/modules/routes.js @@ -0,0 +1,60 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 路由拦截状态管理,目前两种模式:all模式与intelligence模式,其中partialRoutes是菜单暂未使用 + */ +import { asyncRoutes, constantRoutes } from "@/router"; +import { getRouterList } from "@/api/router"; +import { convertRouter, filterRoutes } from "@/utils/routes"; + +const state = { routes: [], partialRoutes: [] }; +const getters = { + routes: (state) => state.routes, + partialRoutes: (state) => state.partialRoutes, +}; +const mutations = { + setRoutes(state, routes) { + state.routes = routes; + }, + setPartialRoutes(state, routes) { + state.partialRoutes = routes; + }, +}; +const actions = { + /** + * @author chuzhixin 1204505056@qq.com + * @description intelligence模式设置路由 + * @param {*} { commit } + * @returns + */ + async setRoutes({ commit }) { + const finallyRoutes = filterRoutes([...constantRoutes, ...asyncRoutes]); + commit("setRoutes", finallyRoutes); + console.log(asyncRoutes); + return [...asyncRoutes]; + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description all模式设置路由 + * @param {*} { commit } + * @returns + */ + async setAllRoutes({ commit }) { + let { data } = await getRouterList(); + if (data[data.length - 1].path !== "*") + data.push({ path: "*", redirect: "/404", hidden: true }); + const asyncRoutes = convertRouter(data); + const finallyRoutes = filterRoutes([...constantRoutes, ...asyncRoutes]); + commit("setRoutes", finallyRoutes); + return [...asyncRoutes]; + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 画廊布局、综合布局设置路由 + * @param {*} { commit } + * @param accessedRoutes 画廊布局、综合布局设置路由 + */ + setPartialRoutes({ commit }, accessedRoutes) { + commit("setPartialRoutes", accessedRoutes); + }, +}; +export default { state, getters, mutations, actions }; diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js new file mode 100644 index 0000000..e231d8f --- /dev/null +++ b/src/store/modules/settings.js @@ -0,0 +1,179 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 所有全局配置的状态管理,如无必要请勿修改 + */ +import defaultSettings from "@/config/settings"; +import { isJson } from "@/utils/validate"; + +const { + logo, + title, + layout, + header, + themeName, + i18n, + showLanguage, + showProgressBar, + showRefresh, + showSearch, + showTheme, + showTagsBar, + showNotice, + showFullScreen, +} = defaultSettings; + +const getLocalStorage = (key) => { + const value = localStorage.getItem(key); + if (isJson(value)) { + return JSON.parse(value); + } else { + return false; + } +}; + +const theme = getLocalStorage("vue-admin-beautiful-pro-theme"); +const { collapse } = getLocalStorage("vue-admin-beautiful-pro-collapse"); +const { language } = getLocalStorage("vue-admin-beautiful-pro-language"); +const toggleBoolean = (key) => { + return typeof theme[key] !== "undefined" ? theme[key] : key; +}; + +const state = { + logo, + title, + collapse, + themeName: theme.themeName || themeName, + layout: theme.layout || layout, + header: theme.header || header, + device: "desktop", + language: language || i18n, + showLanguage: toggleBoolean(showLanguage), + showProgressBar: toggleBoolean(showProgressBar), + showRefresh: toggleBoolean(showRefresh), + showSearch: toggleBoolean(showSearch), + showTheme: toggleBoolean(showTheme), + showTagsBar: toggleBoolean(showTagsBar), + showNotice: toggleBoolean(showNotice), + showFullScreen: toggleBoolean(showFullScreen), +}; +const getters = { + collapse: (state) => state.collapse, + device: (state) => state.device, + header: (state) => state.header, + language: (state) => state.language, + layout: (state) => state.layout, + logo: (state) => state.logo, + title: (state) => state.title, + showLanguage: (state) => state.showLanguage, + showProgressBar: (state) => state.showProgressBar, + showRefresh: (state) => state.showRefresh, + showSearch: (state) => state.showSearch, + showTheme: (state) => state.showTheme, + showTagsBar: (state) => state.showTagsBar, + showNotice: (state) => state.showNotice, + showFullScreen: (state) => state.showFullScreen, + themeName: (state) => state.themeName, +}; +const mutations = { + toggleCollapse(state) { + state.collapse = !state.collapse; + localStorage.setItem( + "vue-admin-beautiful-pro-collapse", + `{"collapse":${state.collapse}}` + ); + }, + toggleDevice(state, device) { + state.device = device; + }, + changeHeader(state, header) { + state.header = header; + }, + changeLayout(state, layout) { + state.layout = layout; + }, + handleShowLanguage(state, showLanguage) { + state.showLanguage = showLanguage; + }, + handleShowProgressBar(state, showProgressBar) { + state.showProgressBar = showProgressBar; + }, + handleShowRefresh(state, showRefresh) { + state.showRefresh = showRefresh; + }, + handleShowSearch(state, showSearch) { + state.showSearch = showSearch; + }, + handleShowTheme(state, showTheme) { + state.showTheme = showTheme; + }, + handleShowTagsBar(state, showTagsBar) { + state.showTagsBar = showTagsBar; + }, + handleShowNotice(state, showNotice) { + state.showNotice = showNotice; + }, + handleShowFullScreen(state, showFullScreen) { + state.showFullScreen = showFullScreen; + }, + openSideBar(state) { + state.collapse = false; + }, + foldSideBar(state) { + state.collapse = true; + }, + changeLanguage(state, language) { + localStorage.setItem( + "vue-admin-beautiful-pro-language", + `{"language":"${language}"}` + ); + state.language = language; + }, +}; +const actions = { + toggleCollapse({ commit }) { + commit("toggleCollapse"); + }, + toggleDevice({ commit }, device) { + commit("toggleDevice", device); + }, + changeHeader({ commit }, header) { + commit("changeHeader", header); + }, + changeLayout({ commit }, layout) { + commit("changeLayout", layout); + }, + handleShowLanguage: ({ commit }, showLanguage) => { + commit("handleShowLanguage", showLanguage); + }, + handleShowProgressBar: ({ commit }, showProgressBar) => { + commit("handleShowProgressBar", showProgressBar); + }, + handleShowRefresh: ({ commit }, showRefresh) => { + commit("handleShowRefresh", showRefresh); + }, + handleShowSearch: ({ commit }, showSearch) => { + commit("handleShowSearch", showSearch); + }, + handleShowTheme: ({ commit }, showTheme) => { + commit("handleShowTheme", showTheme); + }, + handleShowTagsBar({ commit }, showTagsBar) { + commit("handleShowTagsBar", showTagsBar); + }, + handleShowNotice: ({ commit }, showNotice) => { + commit("handleShowNotice", showNotice); + }, + handleShowFullScreen: ({ commit }, showFullScreen) => { + commit("handleShowFullScreen", showFullScreen); + }, + openSideBar({ commit }) { + commit("openSideBar"); + }, + foldSideBar({ commit }) { + commit("foldSideBar"); + }, + changeLanguage: ({ commit }, language) => { + commit("changeLanguage", language); + }, +}; +export default { state, getters, mutations, actions }; diff --git a/src/store/modules/tagsBar.js b/src/store/modules/tagsBar.js new file mode 100644 index 0000000..e275b22 --- /dev/null +++ b/src/store/modules/tagsBar.js @@ -0,0 +1,146 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description tagsBar多标签页逻辑,前期借鉴了很多开源项目发现都有个共同的特点很繁琐并不符合框架设计的初衷,后来在github用户cyea的启发下完成了重构,请勿修改 + */ + +const state = { + visitedRoutes: [], +}; +const getters = { + visitedRoutes: (state) => state.visitedRoutes, +}; +const mutations = { + /** + * @author chuzhixin 1204505056@qq.com + * @description 添加标签页 + * @param {*} state + * @param {*} route + * @returns + */ + addVisitedRoute(state, route) { + let target = state.visitedRoutes.find((item) => item.path === route.path); + if (target) { + if (route.fullPath !== target.fullPath) Object.assign(target, route); + return; + } + state.visitedRoutes.push(Object.assign({}, route)); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页 + * @param {*} state + * @param {*} route + * @returns + */ + delVisitedRoute(state, route) { + state.visitedRoutes.forEach((item, index) => { + if (item.path === route.path) state.visitedRoutes.splice(index, 1); + }); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页以外其它全部多标签页 + * @param {*} state + * @param {*} route + * @returns + */ + delOthersVisitedRoutes(state, route) { + state.visitedRoutes = state.visitedRoutes.filter( + (item) => item.meta.affix || item.path === route.path + ); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页左边全部多标签页 + * @param {*} state + * @param {*} route + * @returns + */ + delLeftVisitedRoutes(state, route) { + let index = state.visitedRoutes.length; + state.visitedRoutes = state.visitedRoutes.filter((item) => { + if (item.name === route.name) index = state.visitedRoutes.indexOf(item); + return item.meta.affix || index <= state.visitedRoutes.indexOf(item); + }); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页右边全部多标签页 + * @param {*} state + * @param {*} route + * @returns + */ + delRightVisitedRoutes(state, route) { + let index = state.visitedRoutes.length; + state.visitedRoutes = state.visitedRoutes.filter((item) => { + if (item.name === route.name) index = state.visitedRoutes.indexOf(item); + return item.meta.affix || index >= state.visitedRoutes.indexOf(item); + }); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除全部多标签页 + * @param {*} state + * @param {*} route + * @returns + */ + delAllVisitedRoutes(state) { + state.visitedRoutes = state.visitedRoutes.filter((item) => item.meta.affix); + }, +}; +const actions = { + /** + * @author chuzhixin 1204505056@qq.com + * @description 添加标签页 + * @param {*} { commit } + * @param {*} route + */ + addVisitedRoute({ commit }, route) { + commit("addVisitedRoute", route); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页 + * @param {*} { commit } + * @param {*} route + */ + delVisitedRoute({ commit }, route) { + commit("delVisitedRoute", route); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页以外其它全部多标签页 + * @param {*} { commit } + * @param {*} route + */ + delOthersVisitedRoutes({ commit }, route) { + commit("delOthersVisitedRoutes", route); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页左边全部多标签页 + * @param {*} { commit } + * @param {*} route + */ + delLeftVisitedRoutes({ commit }, route) { + commit("delLeftVisitedRoutes", route); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除当前标签页右边全部多标签页 + * @param {*} { commit } + * @param {*} route + */ + delRightVisitedRoutes({ commit }, route) { + commit("delRightVisitedRoutes", route); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 删除全部多标签页 + * @param {*} { commit } + */ + delAllVisitedRoutes({ commit }) { + commit("delAllVisitedRoutes"); + }, +}; +export default { state, getters, mutations, actions }; diff --git a/src/store/modules/user.js b/src/store/modules/user.js new file mode 100644 index 0000000..51a0f61 --- /dev/null +++ b/src/store/modules/user.js @@ -0,0 +1,138 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 登录、获取用户信息、退出登录、清除accessToken逻辑,不建议修改 + */ +import { getUserInfo, login, logout } from "@/api/user"; +import { + getAccessToken, + removeAccessToken, + setAccessToken, +} from "@/utils/accessToken"; +import { tokenName } from "@/config/settings"; + +const state = { + accessToken: getAccessToken(), + username: "", + avatar: "", +}; +const getters = { + accessToken: (state) => state.accessToken, + username: (state) => state.username, + avatar: (state) => state.avatar, +}; +const mutations = { + /** + * @author chuzhixin 1204505056@qq.com + * @description 设置accessToken + * @param {*} state + * @param {*} accessToken + */ + setAccessToken(state, accessToken) { + state.accessToken = accessToken; + setAccessToken(accessToken); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 设置用户名 + * @param {*} state + * @param {*} username + */ + setUsername(state, username) { + state.username = username; + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 设置头像 + * @param {*} state + * @param {*} avatar + */ + setAvatar(state, avatar) { + state.avatar = avatar; + }, +}; +const actions = { + /** + * @author chuzhixin 1204505056@qq.com + * @description 登录拦截放行时,设置虚拟角色 + * @param {*} { commit, dispatch } + */ + setVirtualRoles({ commit, dispatch }) { + dispatch("acl/setFull", true, { root: true }); + commit( + "setAvatar", + "https://i.gtimg.cn/club/item/face/img/2/15922_100.gif" + ); + commit("setUsername", "admin(未开启登录拦截)"); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 登录 + * @param {*} { commit } + * @param {*} userInfo + */ + async login({ commit }, userInfo) { + const { data } = await login(userInfo); + const accessToken = data[tokenName]; + if (accessToken) { + commit("setAccessToken", accessToken); + } else { + /* Vue.prototype.$baseMessage( + `登录接口异常,未正确返回${tokenName}...`, + "error" + ); */ + } + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 获取用户信息接口 这个接口非常非常重要,如果没有明确底层前逻辑禁止修改此方法,错误的修改可能造成整个框架无法正常使用 + * @param {*} { commit, dispatch, state } + * @returns + */ + async getUserInfo({ commit, dispatch, state }) { + const { data } = await getUserInfo(state.accessToken); + if (!data) { + /* Vue.prototype.$baseMessage("验证失败,请重新登录...", "error"); */ + return false; + } + let { username, avatar, roles, ability } = data; + if (username && roles && Array.isArray(roles)) { + dispatch("acl/setRole", roles, { root: true }); + if (ability && ability.length > 0) + dispatch("acl/setAbility", ability, { root: true }); + commit("setUsername", username); + commit("setAvatar", avatar); + } else { + console.log("用户信息接口异常"); + } + }, + + /** + * @author chuzhixin 1204505056@qq.com + * @description 退出登录 + * @param {*} { dispatch } + */ + async logout({ dispatch }) { + await logout(state.accessToken); + await dispatch("resetAll"); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 重置accessToken、roles、ability、router等 + * @param {*} { commit, dispatch } + */ + async resetAll({ dispatch }) { + await dispatch("setAccessToken", ""); + await dispatch("acl/setFull", false, { root: true }); + await dispatch("acl/setRole", [], { root: true }); + await dispatch("acl/setAbility", [], { root: true }); + removeAccessToken(); + }, + /** + * @author chuzhixin 1204505056@qq.com + * @description 设置token + */ + setAccessToken({ commit }, accessToken) { + commit("setAccessToken", accessToken); + }, +}; +export default { state, getters, mutations, actions }; diff --git a/src/utils/accessToken.js b/src/utils/accessToken.js new file mode 100644 index 0000000..c17395c --- /dev/null +++ b/src/utils/accessToken.js @@ -0,0 +1,66 @@ +import { storage, tokenTableName } from "@/config/settings"; +import cookie from "js-cookie"; + +/** + * @author chuzhixin 1204505056@qq.com + * @description 获取accessToken + * @returns {string|ActiveX.IXMLDOMNode|Promise|any|IDBRequest|MediaKeyStatus|FormDataEntryValue|Function|Promise} + */ +export function getAccessToken() { + if (storage) { + if ("localStorage" === storage) { + return localStorage.getItem(tokenTableName); + } else if ("sessionStorage" === storage) { + return sessionStorage.getItem(tokenTableName); + } else if ("cookie" === storage) { + return cookie.get(tokenTableName); + } else { + return localStorage.getItem(tokenTableName); + } + } else { + return localStorage.getItem(tokenTableName); + } +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 存储accessToken + * @param accessToken + * @returns {void|*} + */ +export function setAccessToken(accessToken) { + if (storage) { + if ("localStorage" === storage) { + return localStorage.setItem(tokenTableName, accessToken); + } else if ("sessionStorage" === storage) { + return sessionStorage.setItem(tokenTableName, accessToken); + } else if ("cookie" === storage) { + return cookie.set(tokenTableName, accessToken); + } else { + return localStorage.setItem(tokenTableName, accessToken); + } + } else { + return localStorage.setItem(tokenTableName, accessToken); + } +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 移除accessToken + * @returns {void|Promise} + */ +export function removeAccessToken() { + if (storage) { + if ("localStorage" === storage) { + return localStorage.removeItem(tokenTableName); + } else if ("sessionStorage" === storage) { + return sessionStorage.clear(); + } else if ("cookie" === storage) { + return cookie.remove(tokenTableName); + } else { + return localStorage.removeItem(tokenTableName); + } + } else { + return localStorage.removeItem(tokenTableName); + } +} diff --git a/src/utils/hasRole.js b/src/utils/hasRole.js new file mode 100644 index 0000000..4669b46 --- /dev/null +++ b/src/utils/hasRole.js @@ -0,0 +1,51 @@ +import store from "@/store"; + +export function hasRole(value) { + if (store.getters["acl/admin"]) return true; + if (value instanceof Array && value.length > 0) + return can(store.getters["acl/role"], { + role: value, + mode: "oneOf", + }); + let mode = "oneOf"; + if (Object.prototype.hasOwnProperty.call(value, "mode")) mode = value["mode"]; + let result = true; + if (Object.prototype.hasOwnProperty.call(value, "role")) + result = + result && can(store.getters["acl/role"], { role: value["role"], mode }); + if (result && Object.prototype.hasOwnProperty.call(value, "ability")) + result = + result && + can(store.getters["acl/ability"], { + role: value["ability"], + mode, + }); + return result; +} + +export function can(roleOrAbility, value) { + let hasRole = false; + if ( + value instanceof Object && + Object.prototype.hasOwnProperty.call(value, "role") && + Object.prototype.hasOwnProperty.call(value, "mode") + ) { + const { role, mode } = value; + if (mode === "allOf") { + hasRole = role.every((item) => { + return roleOrAbility.includes(item); + }); + } + if (mode === "oneOf") { + hasRole = role.some((item) => { + return roleOrAbility.includes(item); + }); + } + if (mode === "except") { + hasRole = !role.some((item) => { + return roleOrAbility.includes(item); + }); + } + } + return hasRole; +} diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..cdba404 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,265 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 格式化时间 + * @param time + * @param cFormat + * @returns {string|null} + */ +export function parseTime(time, cFormat) { + if (arguments.length === 0) { + return null; + } + const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}"; + let date; + if (typeof time === "object") { + date = time; + } else { + if (typeof time === "string" && /^[0-9]+$/.test(time)) { + time = parseInt(time); + } + if (typeof time === "number" && time.toString().length === 10) { + time = time * 1000; + } + date = new Date(time); + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay(), + }; + return format.replace(/{([ymdhisa])+}/g, (result, key) => { + let value = formatObj[key]; + if (key === "a") { + return ["日", "一", "二", "三", "四", "五", "六"][value]; + } + if (result.length > 0 && value < 10) { + value = "0" + value; + } + return value || 0; + }); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 格式化时间 + * @param time + * @param option + * @returns {string} + */ +export function formatTime(time, option) { + if (("" + time).length === 10) { + time = parseInt(time) * 1000; + } else { + time = +time; + } + const d = new Date(time); + const now = Date.now(); + + const diff = (now - d) / 1000; + + if (diff < 30) { + return "刚刚"; + } else if (diff < 3600) { + // less 1 hour + return Math.ceil(diff / 60) + "分钟前"; + } else if (diff < 3600 * 24) { + return Math.ceil(diff / 3600) + "小时前"; + } else if (diff < 3600 * 24 * 2) { + return "1天前"; + } + if (option) { + return parseTime(time, option); + } else { + return ( + d.getMonth() + + 1 + + "月" + + d.getDate() + + "日" + + d.getHours() + + "时" + + d.getMinutes() + + "分" + ); + } +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 将url请求参数转为json格式 + * @param url + * @returns {{}|any} + */ +export function paramObj(url) { + const search = url.split("?")[1]; + if (!search) { + return {}; + } + return JSON.parse( + '{"' + + decodeURIComponent(search) + .replace(/"/g, '\\"') + .replace(/&/g, '","') + .replace(/=/g, '":"') + .replace(/\+/g, " ") + + '"}' + ); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 父子关系的数组转换成树形结构数据 + * @param data + * @returns {*} + */ +export function translateDataToTree(data) { + const parent = data.filter( + (value) => value.parentId === "undefined" || value.parentId == null + ); + const children = data.filter( + (value) => value.parentId !== "undefined" && value.parentId != null + ); + const translator = (parent, children) => { + parent.forEach((parent) => { + children.forEach((current, index) => { + if (current.parentId === parent.id) { + const temp = JSON.parse(JSON.stringify(children)); + temp.splice(index, 1); + translator([current], temp); + typeof parent.children !== "undefined" + ? parent.children.push(current) + : (parent.children = [current]); + } + }); + }); + }; + translator(parent, children); + return parent; +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 树形结构数据转换成父子关系的数组 + * @param data + * @returns {[]} + */ +export function translateTreeToData(data) { + const result = []; + data.forEach((item) => { + const loop = (data) => { + result.push({ + id: data.id, + name: data.name, + parentId: data.parentId, + }); + const child = data.children; + if (child) { + for (let i = 0; i < child.length; i++) { + loop(child[i]); + } + } + }; + loop(item); + }); + return result; +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 10位时间戳转换 + * @param time + * @returns {string} + */ +export function tenBitTimestamp(time) { + const date = new Date(time * 1000); + const y = date.getFullYear(); + let m = date.getMonth() + 1; + m = m < 10 ? "" + m : m; + let d = date.getDate(); + d = d < 10 ? "" + d : d; + let h = date.getHours(); + h = h < 10 ? "0" + h : h; + let minute = date.getMinutes(); + let second = date.getSeconds(); + minute = minute < 10 ? "0" + minute : minute; + second = second < 10 ? "0" + second : second; + return y + "年" + m + "月" + d + "日 " + h + ":" + minute + ":" + second; //组合 +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 13位时间戳转换 + * @param time + * @returns {string} + */ +export function thirteenBitTimestamp(time) { + const date = new Date(time / 1); + const y = date.getFullYear(); + let m = date.getMonth() + 1; + m = m < 10 ? "" + m : m; + let d = date.getDate(); + d = d < 10 ? "" + d : d; + let h = date.getHours(); + h = h < 10 ? "0" + h : h; + let minute = date.getMinutes(); + let second = date.getSeconds(); + minute = minute < 10 ? "0" + minute : minute; + second = second < 10 ? "0" + second : second; + return y + "年" + m + "月" + d + "日 " + h + ":" + minute + ":" + second; //组合 +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 获取随机id + * @param length + * @returns {string} + */ +export function uuid(length = 32) { + const num = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + let str = ""; + for (let i = 0; i < length; i++) { + str += num.charAt(Math.floor(Math.random() * num.length)); + } + return str; +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description m到n的随机数 + * @param m + * @param n + * @returns {number} + */ +export function random(m, n) { + return Math.floor(Math.random() * (m - n) + n); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description addEventListener + * @type {function(...[*]=)} + */ +export const on = (function () { + return function (element, event, handler, useCapture = false) { + if (element && event && handler) { + element.addEventListener(event, handler, useCapture); + } + }; +})(); + +/** + * @author chuzhixin 1204505056@qq.com + * @description removeEventListener + * @type {function(...[*]=)} + */ +export const off = (function () { + return function (element, event, handler, useCapture = false) { + if (element && event) { + element.removeEventListener(event, handler, useCapture); + } + }; +})(); diff --git a/src/utils/pageTitle.js b/src/utils/pageTitle.js new file mode 100644 index 0000000..9a82239 --- /dev/null +++ b/src/utils/pageTitle.js @@ -0,0 +1,15 @@ +import { title, titleReverse, titleSeparator } from "@/config/settings"; + +/** + * @author chuzhixin 1204505056@qq.com + * @description 设置标题 + * @param pageTitle + * @returns {string} + */ +export default function getPageTitle(pageTitle) { + let newTitles = []; + if (pageTitle) newTitles.push(pageTitle); + if (title) newTitles.push(title); + if (titleReverse) newTitles = newTitles.reverse(); + return newTitles.join(titleSeparator); +} diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..c7b202a --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,126 @@ +import axios from "axios"; +import { + baseURL, + contentType, + debounce, + invalidCode, + noRoleCode, + requestTimeout, + successCode, + tokenName, +} from "@/config/settings"; +import store from "@/store"; +import qs from "qs"; +import router from "@/router"; +import { isArray } from "@/utils/validate"; + +let loadingInstance; + +/** + * @author chuzhixin 1204505056@qq.com + * @description 处理code异常 + * @param {*} code + * @param {*} msg + */ +const handleCode = (code, msg) => { + switch (code) { + case invalidCode: + alert(msg || `后端接口${code}异常`, "error"); + store.dispatch("user/resetAll").catch(() => {}); + break; + case noRoleCode: + router.push({ path: "/401" }).catch(() => {}); + break; + default: + alert(msg || `后端接口${code}异常`, "error"); + break; + } +}; + +/** + * @author chuzhixin 1204505056@qq.com + * @description axios初始化 + */ +const instance = axios.create({ + baseURL, + timeout: requestTimeout, + headers: { + "Content-Type": contentType, + }, +}); + +/** + * @author chuzhixin 1204505056@qq.com + * @description axios请求拦截器 + */ +instance.interceptors.request.use( + (config) => { + if (store.getters["user/accessToken"]) + config.headers[tokenName] = store.getters["user/accessToken"]; + if ( + config.data && + config.headers["Content-Type"] === + "application/x-www-form-urlencoded;charset=UTF-8" + ) + config.data = qs.stringify(config.data); + if (debounce.some((item) => config.url.includes(item))) { + //这里写加载动画 + } + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +/** + * @author chuzhixin 1204505056@qq.com + * @description axios响应拦截器 + */ +instance.interceptors.response.use( + (response) => { + if (loadingInstance) loadingInstance.close(); + + const { data, config } = response; + const { code, msg } = data; + // 操作正常Code数组 + const codeVerificationArray = isArray(successCode) + ? [...successCode] + : [...[successCode]]; + // 是否操作正常 + if (codeVerificationArray.includes(code)) { + return data; + } else { + handleCode(code, msg); + return Promise.reject( + "vue-admin-beautiful请求异常拦截:" + + JSON.stringify({ url: config.url, code, msg }) || "Error" + ); + } + }, + (error) => { + if (loadingInstance) loadingInstance.close(); + const { response, message } = error; + if (error.response && error.response.data) { + const { status, data } = response; + handleCode(status, data.msg || message); + return Promise.reject(error); + } else { + let { message } = error; + if (message === "Network Error") { + message = "后端接口连接异常"; + } + if (message.includes("timeout")) { + message = "后端接口请求超时"; + } + if (message.includes("Request failed with status code")) { + const code = message.substr(message.length - 3); + message = "后端接口" + code + "异常"; + } + alert(message || `后端接口未知异常`, "error"); + return Promise.reject(error); + } + } +); + +export default instance; diff --git a/src/utils/routes.js b/src/utils/routes.js new file mode 100644 index 0000000..63a4d4c --- /dev/null +++ b/src/utils/routes.js @@ -0,0 +1,77 @@ +import router from "@/router"; +import path from "path"; +import { rolesControl } from "@/config/settings"; +import { isExternal } from "@/utils/validate"; +import { hasRole } from "@/utils/hasRole"; + +/** + * @author chuzhixin 1204505056@qq.com + * @description all模式渲染后端返回路由 + * @param constantRoutes + * @returns {*} + */ +export function convertRouter(constantRoutes) { + return constantRoutes.map((route) => { + if (route.component) { + if (route.component === "Layout") { + const path = "layouts"; + route.component = (resolve) => require([`@/${path}`], resolve); + } else { + let path = "views/" + route.component; + if ( + new RegExp("^/views/.*$").test(route.component) || + new RegExp("^views/.*$").test(route.component) + ) { + path = route.component; + } else if (new RegExp("^/.*$").test(route.component)) { + path = "views" + route.component; + } else if (new RegExp("^@views/.*$").test(route.component)) { + path = route.component.slice(1); + } else { + path = "views/" + route.component; + } + route.component = (resolve) => require([`@/${path}`], resolve); + } + } + if (route.children && route.children.length) + route.children = convertRouter(route.children); + + if (route.children && route.children.length === 0) delete route.children; + + return route; + }); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 根据roles数组拦截路由 + * @param routes + * @param baseUrl + * @returns {[]} + */ +export function filterRoutes(routes, baseUrl = "/") { + return routes + .filter((route) => { + if (route.meta && route.meta.roles) + return !rolesControl || hasRole(route.meta.roles); + else return true; + }) + .map((route) => { + if (route.path !== "*" && !isExternal(route.path)) + route.path = path.resolve(baseUrl, route.path); + route.fullPath = route.path; + if (route.children) + route.children = filterRoutes(route.children, route.fullPath); + return route; + }); +} + +/** + * 根据当前页面firstMenu + * @returns {string} + */ +export function handleFirstMenu() { + const firstMenu = router.currentRoute.matched[0].path; + if (firstMenu === "") return "/"; + return firstMenu; +} diff --git a/src/utils/static.js b/src/utils/static.js new file mode 100644 index 0000000..8fc2cc1 --- /dev/null +++ b/src/utils/static.js @@ -0,0 +1,52 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 导入所有 controller 模块,浏览器环境中自动输出controller文件夹下Mock接口,请勿修改。 + */ +import Mock from "mockjs"; +import { paramObj } from "@/utils/index"; + +const mocks = []; +const files = require.context("../../mock/controller", false, /\.js$/); + +files.keys().forEach((key) => { + mocks.push(...files(key)); +}); + +export function mockXHR() { + Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send; + Mock.XHR.prototype.send = function () { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false; + + if (this.responseType) { + this.custom.xhr.responseType = this.responseType; + } + } + this.proxy_send(...arguments); + }; + + function XHRHttpRequst(respond) { + return function (options) { + let result; + if (respond instanceof Function) { + const { body, type, url } = options; + result = respond({ + method: type, + body: JSON.parse(body), + query: paramObj(url), + }); + } else { + result = respond; + } + return Mock.mock(result); + }; + } + + mocks.forEach((item) => { + Mock.mock( + new RegExp(item.url), + item.type || "get", + XHRHttpRequst(item.response) + ); + }); +} diff --git a/src/utils/validate.js b/src/utils/validate.js new file mode 100644 index 0000000..7b784fb --- /dev/null +++ b/src/utils/validate.js @@ -0,0 +1,268 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 判读是否为外链 + * @param path + * @returns {boolean} + */ +export function isExternal(path) { + return /^(https?:|mailto:|tel:)/.test(path); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 校验密码是否小于6位 + * @param value + * @returns {boolean} + */ +export function isPassword(value) { + return value.length >= 6; +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否为数字 + * @param value + * @returns {boolean} + */ +export function isNumber(value) { + const reg = /^[0-9]*$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是名称 + * @param value + * @returns {boolean} + */ +export function isName(value) { + const reg = /^[\u4e00-\u9fa5a-zA-Z0-9]+$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否为IP + * @param ip + * @returns {boolean} + */ +export function isIP(ip) { + const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; + return reg.test(ip); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是传统网站 + * @param url + * @returns {boolean} + */ +export function isUrl(url) { + const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; + return reg.test(url); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是小写字母 + * @param value + * @returns {boolean} + */ +export function isLowerCase(value) { + const reg = /^[a-z]+$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是大写字母 + * @param value + * @returns {boolean} + */ +export function isUpperCase(value) { + const reg = /^[A-Z]+$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是大写字母开头 + * @param value + * @returns {boolean} + */ +export function isAlphabets(value) { + const reg = /^[A-Za-z]+$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是字符串 + * @param value + * @returns {boolean} + */ +export function isString(value) { + return typeof value === "string" || value instanceof String; +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是数组 + * @param arg + * @returns {arg is any[]|boolean} + */ +export function isArray(arg) { + if (typeof Array.isArray === "undefined") { + return Object.prototype.toString.call(arg) === "[object Array]"; + } + return Array.isArray(arg); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是端口号 + * @param value + * @returns {boolean} + */ +export function isPort(value) { + const reg = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是手机号 + * @param value + * @returns {boolean} + */ +export function isPhone(value) { + const reg = /^1\d{10}$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是身份证号(第二代) + * @param value + * @returns {boolean} + */ +export function isIdCard(value) { + const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否是邮箱 + * @param value + * @returns {boolean} + */ +export function isEmail(value) { + const reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否中文 + * @param value + * @returns {boolean} + */ +export function isChina(value) { + const reg = /^[\u4E00-\u9FA5]{2,4}$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否为空 + * @param value + * @returns {boolean} + */ +export function isBlank(value) { + return ( + value == null || + false || + value === "" || + value.trim() === "" || + value.toLocaleLowerCase().trim() === "null" + ); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否为固话 + * @param value + * @returns {boolean} + */ +export function isTel(value) { + const reg = /^(400|800)([0-9\\-]{7,10})|(([0-9]{4}|[0-9]{3})([- ])?)?([0-9]{7,8})(([- 转])*([0-9]{1,4}))?$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否为数字且最多两位小数 + * @param value + * @returns {boolean} + */ +export function isNum(value) { + const reg = /^\d+(\.\d{1,2})?$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断经度 -180.0~+180.0(整数部分为0~180,必须输入1到5位小数) + * @param value + * @returns {boolean} + */ +export function isLongitude(value) { + const reg = /^[-|+]?(0?\d{1,2}\.\d{1,5}|1[0-7]?\d{1}\.\d{1,5}|180\.0{1,5})$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断纬度 -90.0~+90.0(整数部分为0~90,必须输入1到5位小数) + * @param value + * @returns {boolean} + */ +export function isLatitude(value) { + const reg = /^[-|+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/; + return reg.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description rtsp校验,只要有rtsp:// + * @param value + * @returns {boolean} + */ +export function isRTSP(value) { + const reg = /^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; + const reg1 = /^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5]):[0-9]{1,5}/; + const reg2 = /^rtsp:\/\/([a-z]{0,10}:.{0,10}@)?(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\//; + return reg.test(value) || reg1.test(value) || reg2.test(value); +} + +/** + * @author chuzhixin 1204505056@qq.com + * @description 判断是否为json + * @param value + * @returns {boolean} + */ +export function isJson(value) { + if (typeof value == "string") { + try { + var obj = JSON.parse(value); + if (typeof obj == "object" && obj) { + return true; + } else { + return false; + } + } catch (e) { + return false; + } + } +} diff --git a/src/vab/index.js b/src/vab/index.js new file mode 100644 index 0000000..1f98466 --- /dev/null +++ b/src/vab/index.js @@ -0,0 +1,5 @@ +// 加载插件 +const requirePlugin = require.context("./plugins", true, /\.js$/); +requirePlugin.keys().forEach((fileName) => { + requirePlugin(fileName); +}); diff --git a/src/vab/plugins/permissions.js b/src/vab/plugins/permissions.js new file mode 100644 index 0000000..227501a --- /dev/null +++ b/src/vab/plugins/permissions.js @@ -0,0 +1,74 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description 路由守卫,目前两种模式:all模式与intelligence模式 + */ +import router from "@/router"; +import store from "@/store"; +import getPageTitle from "@/utils/pageTitle"; +import { + authentication, + loginInterception, + recordRoute, + routesWhiteList, +} from "@/config/settings"; + +router.beforeEach(async (to, from, next) => { + let hasToken = store.getters["user/accessToken"]; + + if (!loginInterception) hasToken = true; + + if (hasToken) { + if (to.path === "/login") { + next({ path: "/" }); + } else { + const hasRoles = + store.getters["acl/admin"] || + store.getters["acl/role"].length > 0 || + store.getters["acl/ability"].length > 0; + if (hasRoles) { + next(); + } else { + try { + if (loginInterception) { + await store.dispatch("user/getUserInfo"); + } else { + //settings.js loginInterception为false(关闭登录拦截时)时,创建虚拟角色 + await store.dispatch("user/setVirtualRoles"); + } + + let accessRoutes = []; + if (authentication === "intelligence") { + accessRoutes = await store.dispatch("routes/setRoutes"); + } else if (authentication === "all") { + accessRoutes = await store.dispatch("routes/setAllRoutes"); + } + accessRoutes.forEach((item) => { + router.addRoute(item); + }); + + next({ ...to, replace: true }); + } catch { + await store.dispatch("user/resetAll"); + if (recordRoute) + next({ + path: "/login", + query: { redirect: to.path }, + replace: true, + }); + else next({ path: "/login", replace: true }); + } + } + } + } else { + if (routesWhiteList.indexOf(to.path) !== -1) { + next(); + } else { + if (recordRoute) + next({ path: "/login", query: { redirect: to.path }, replace: true }); + else next({ path: "/login", replace: true }); + } + } +}); +router.afterEach((to) => { + document.title = getPageTitle(to.meta.title); +}); diff --git a/src/vab/styles/normalize.less b/src/vab/styles/normalize.less new file mode 100644 index 0000000..3d79553 --- /dev/null +++ b/src/vab/styles/normalize.less @@ -0,0 +1,379 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + margin: 0.67em 0; + font-size: 2em; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; + /* 1 */ + height: 0; + /* 1 */ + overflow: visible; + /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + text-decoration: underline; + /* 2 */ + text-decoration: underline dotted; + /* 2 */ + border-bottom: none; + /* 1 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace; + /* 1 */ + font-size: 1em; + /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + margin: 0; + /* 2 */ + font-family: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + line-height: 1.15; + /* 1 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; + /* 1 */ + display: table; + /* 1 */ + max-width: 100%; + /* 1 */ + padding: 0; + /* 3 */ + color: inherit; + /* 2 */ + white-space: normal; + /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/src/vab/styles/vab.less b/src/vab/styles/vab.less new file mode 100644 index 0000000..6228be4 --- /dev/null +++ b/src/vab/styles/vab.less @@ -0,0 +1,29 @@ +@import "./normalize.less"; +/* 滚动条样式 */ +.base-scrollbar { + &::-webkit-scrollbar { + width: 8px; + height: 8px; + } + + &::-webkit-scrollbar-thumb { + background-color: rgba(144, 147, 153, 0.3); + border: 3px solid transparent; + border-radius: 7px; + } + + &::-webkit-scrollbar-thumb:hover { + background-color: rgba(144, 147, 153, 0.5); + } +} + +html { + body { + .base-scrollbar; + + * { + box-sizing: border-box; + .base-scrollbar; + } + } +} diff --git a/src/views/401.vue b/src/views/401.vue new file mode 100644 index 0000000..4ed56d6 --- /dev/null +++ b/src/views/401.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/src/views/404.vue b/src/views/404.vue new file mode 100644 index 0000000..74ed923 --- /dev/null +++ b/src/views/404.vue @@ -0,0 +1,210 @@ + + + + diff --git a/src/views/index/components/VersionInformation.vue b/src/views/index/components/VersionInformation.vue new file mode 100644 index 0000000..5cfc87c --- /dev/null +++ b/src/views/index/components/VersionInformation.vue @@ -0,0 +1,90 @@ + + + diff --git a/src/views/index/index.vue b/src/views/index/index.vue new file mode 100644 index 0000000..82631dd --- /dev/null +++ b/src/views/index/index.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 0000000..8e1e7b8 --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,86 @@ + + diff --git a/vue-admin-beautiful b/vue-admin-beautiful new file mode 160000 index 0000000..d5e5764 --- /dev/null +++ b/vue-admin-beautiful @@ -0,0 +1 @@ +Subproject commit d5e576485fda378976370dc633fb0d9734295d6d diff --git a/vue.config.js b/vue.config.js new file mode 100644 index 0000000..2f49e10 --- /dev/null +++ b/vue.config.js @@ -0,0 +1,189 @@ +/** + * @author chuzhixin 1204505056@qq.com + * @description vue.config.js全局配置 + */ +const path = require("path"); +const { + /* baseURL, */ + publicPath, + assetsDir, + outputDir, + lintOnSave, + transpileDependencies, + title, + abbreviation, + devPort, + providePlugin, + build7z, + donation, +} = require("./src/config/settings"); +const { + webpackBarName, + webpackBanner, + donationConsole, +} = require("zx-layouts"); + +if (donation) donationConsole(); +const { version, author } = require("./package.json"); +const Webpack = require("webpack"); +const WebpackBar = require("webpackbar"); +const FileManagerPlugin = require("filemanager-webpack-plugin"); +const dayjs = require("dayjs"); +const date = dayjs().format("YYYY_M_D"); +const time = dayjs().format("YYYY-M-D HH:mm:ss"); +const CompressionWebpackPlugin = require("compression-webpack-plugin"); +const productionGzipExtensions = ["html", "js", "css", "svg"]; +process.env.VUE_APP_TITLE = title || "vue-admin-beautiful"; +process.env.VUE_APP_AUTHOR = author || "chuzhixin"; +process.env.VUE_APP_UPDATE_TIME = time; +process.env.VUE_APP_VERSION = version; + +const resolve = (dir) => { + return path.join(__dirname, dir); +}; + +const mockServer = () => { + if (process.env.NODE_ENV === "development") { + return require("./mock/mockServer.js"); + } else { + return ""; + } +}; + +module.exports = { + publicPath, + assetsDir, + outputDir, + lintOnSave, + transpileDependencies, + devServer: { + hot: true, + port: devPort, + open: true, + noInfo: false, + overlay: { + warnings: true, + errors: true, + }, + // 注释掉的地方是前端配置代理访问后端的示例 + // proxy: { + // [baseURL]: { + // target: `http://你的后端接口地址`, + // ws: true, + // changeOrigin: true, + // pathRewrite: { + // ["^/" + baseURL]: "", + // }, + // }, + // }, + after: mockServer(), + }, + configureWebpack() { + return { + resolve: { + alias: { + "@": resolve("src"), + "*": resolve(""), + }, + }, + plugins: [ + new Webpack.ProvidePlugin(providePlugin), + new WebpackBar({ + name: webpackBarName, + }), + ], + }; + }, + chainWebpack(config) { + config.resolve.symlinks(true); + config.module.rule("svg").exclude.add(resolve("src/icon/remixIcon")).end(); + + config.module + .rule("remixIcon") + .test(/\.svg$/) + .include.add(resolve("src/icon/remixIcon")) + .end() + .use("svg-sprite-loader") + .loader("svg-sprite-loader") + .options({ symbolId: "remix-icon-[name]" }) + .end(); + + config.when(process.env.NODE_ENV === "development", (config) => { + config.devtool("source-map"); + }); + + config.when(process.env.NODE_ENV !== "development", (config) => { + config.performance.set("hints", false); + config.devtool("none"); + config.optimization.splitChunks({ + chunks: "all", + cacheGroups: { + libs: { + name: "vue-admin-beautiful-libs", + test: /[\\/]node_modules[\\/]/, + priority: 10, + chunks: "initial", + }, + }, + }); + config + .plugin("banner") + .use(Webpack.BannerPlugin, [`${webpackBanner}${time}`]) + .end(); + config + .plugin("compression") + .use(CompressionWebpackPlugin, [ + { + filename: "[path].gz[query]", + algorithm: "gzip", + test: new RegExp( + "\\.(" + productionGzipExtensions.join("|") + ")$" + ), + threshold: 8192, + minRatio: 0.8, + }, + ]) + .end(); + }); + + if (build7z) { + config.when(process.env.NODE_ENV === "production", (config) => { + config + .plugin("fileManager") + .use(FileManagerPlugin, [ + { + onEnd: { + delete: [`./${outputDir}/video`, `./${outputDir}/data`], + archive: [ + { + source: `./${outputDir}`, + destination: `./${outputDir}/${abbreviation}_${outputDir}_${date}.7z`, + }, + ], + }, + }, + ]) + .end(); + }); + } + }, + runtimeCompiler: true, + productionSourceMap: false, + css: { + requireModuleExtension: true, + sourceMap: true, + loaderOptions: { + less: { + lessOptions: { + javascriptEnabled: true, + modifyVars: { + "vab-color-blue": "#1890ff", + "vab-margin": "20px", + "vab-padding": "20px", + "vab-header-height": "65px", + }, + }, + }, + }, + }, +};