├── .env.dev ├── .env.prod ├── .env.test ├── .env.uat ├── .gitignore ├── README.md ├── babel.config.js ├── dist ├── css │ ├── app.3dfa20fe.css │ ├── chunk-0c887ddf.224805df.css │ ├── chunk-280ff214.3741255c.css │ ├── chunk-ae526aec.6543776e.css │ └── chunk-vendors.0f593e49.css ├── favicon.ico ├── img │ └── logo.82b9c7a5.png ├── index.html └── js │ ├── app.ca387042.js │ ├── app.ca387042.js.map │ ├── chunk-0c887ddf.b6868575.js │ ├── chunk-0c887ddf.b6868575.js.map │ ├── chunk-280ff214.e7cedfb6.js │ ├── chunk-280ff214.e7cedfb6.js.map │ ├── chunk-6aa42b5c.c30ead5f.js │ ├── chunk-6aa42b5c.c30ead5f.js.map │ ├── chunk-770521e1.0d0e1779.js │ ├── chunk-770521e1.0d0e1779.js.map │ ├── chunk-ae526aec.09ee93f5.js │ ├── chunk-ae526aec.09ee93f5.js.map │ ├── chunk-vendors.3e636b1a.js │ └── chunk-vendors.3e636b1a.js.map ├── package-lock.json ├── package.json ├── public ├── favicon.ico └── index.html └── src ├── App.vue ├── api ├── api.js ├── common.js └── systemManage.js ├── assets └── logo.png ├── components ├── nav - 副本.vue └── nav.vue ├── config └── config.js ├── main.js ├── request └── http.js ├── router └── index.js ├── store └── index.js └── views ├── layout ├── accountList │ ├── accountList.vue │ └── component │ │ └── title.vue ├── detail │ └── detail.vue ├── home.vue └── index │ └── index.vue └── login.vue /.env.dev: -------------------------------------------------------------------------------- 1 | NODE_ENV='development' 2 | VUE_APP_CURRENTMODE='dev' 3 | VUE_APP_BASEURL='' 4 | VUE_APP_SOCKETEURL='' -------------------------------------------------------------------------------- /.env.prod: -------------------------------------------------------------------------------- 1 | NODE_ENV='production' 2 | VUE_APP_CURRENTMODE='prod' 3 | VUE_APP_BASEURL='' 4 | VUE_APP_SOCKETEURL='' -------------------------------------------------------------------------------- /.env.test: -------------------------------------------------------------------------------- 1 | NODE_ENV='production' 2 | VUE_APP_CURRENTMODE='test' 3 | VUE_APP_BASEURL='' 4 | VUE_APP_SOCKETEURL='' -------------------------------------------------------------------------------- /.env.uat: -------------------------------------------------------------------------------- 1 | NODE_ENV='production' 2 | VUE_APP_CURRENTMODE='uat' 3 | VUE_APP_BASEURL='' 4 | VUE_APP_SOCKETEURL='' -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | vue的重要性可想而知,提前学习vue3.0,没毛病。本文会带大家了解vue3.0的构建工程、antd引入、生命周期、data双向数据绑定使用、方法使用、计算属性、监听、组件引入、组件传值、路由传值等知识点,本人菜鸟,大佬多多指导。废话少说,通过实操做一个登录、列表、详情界面直接上代码。 2 | 3 | github源码: [https://github.com/parchments/vue3-admin-template](https://github.com/parchments/vue3-admin-template) 4 | 5 | **效果预览:登录页、首页、列表页、详情页** 6 | 7 | ![](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6c1c21d7050f44598fcf01a447ac364a~tplv-k3u1fbpfcp-zoom-1.image) 8 | 9 | **首页** 10 | 11 | ![](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1d77c1b46b0545a797369c9afb969386~tplv-k3u1fbpfcp-zoom-1.image) 12 | 13 | **列表页** 14 | 15 | ![](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6e944b0f84204125a60072ab0f3eae30~tplv-k3u1fbpfcp-zoom-1.image) 16 | 17 | **详情页** 18 | 19 | ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/34e60f658aa34f65855a949ab8229ec5~tplv-k3u1fbpfcp-zoom-1.image) 20 | 21 | ### 1、项目搭建 22 | 23 | 1. 安装node就不说咯,必备。此外需要安装vue-cli4代以上最新脚手架,可以通过执行如下npm 命令安装/更新脚手架版本 24 | 25 | ``` 26 | 脚手架升级: npm update @vue/cli 27 | 初次安装: npm i @vue/cli -g 28 | ``` 29 | 30 | 31 | 根据自己需求选择需要预先安装的插件 32 | ``` 33 | vue create \[projectName\] 34 | ``` 35 | 36 | ![](https://oscimg.oschina.net/oscnet/up-1e2a18a029958c140bb3b468bf5267b66ed.png) 37 | 38 | ![](https://oscimg.oschina.net/oscnet/up-1d77188e46a9f0ce288fd7edf7097d924b4.png) 39 | 40 | ![](https://oscimg.oschina.net/oscnet/up-0319119b41605400da3c3e87f84ac55283b.png) 41 | 42 | ![](https://oscimg.oschina.net/oscnet/up-1a0283b5d02c0370296c44b1c00e1a8944f.png) 43 | 44 | ![](https://oscimg.oschina.net/oscnet/up-28243b533921d214787184671d3aad1f90f.png) 45 | 46 | ![](https://oscimg.oschina.net/oscnet/up-ba6486086dcb0cfb8fe3935c1c9756968d1.png) 47 | 48 | ![](https://oscimg.oschina.net/oscnet/up-4a64e8cbc1cb8bde7f012678ca81b0a8189.png) 49 | 50 | 怎么知道自己正确安装了vue3.0,请看vue3.0的main.js,vue2.0引入vue是import Vue from 'vue',vue3.0则是解构引入,看到解构引入代表此项目为vue3.0,干得漂亮,继续。。。 51 | 52 | vue3.0全局挂载http、api、config 53 | 54 | ![](https://oscimg.oschina.net/oscnet/up-f61053f5360e7ebaf4241d409428038ebf6.png) 55 | 56 | ![](https://oscimg.oschina.net/oscnet/up-80778024032ea3a397bf6ec64661228e467.png) 57 | 58 | 顺便提一句,如果vue3.0+ts开发的话,全局挂载需要如下挂载方式 59 | 60 | 在文件 main.ts 添加 带有 + 符号后代码 61 | ``` 62 | // main.ts 63 | import { createApp } from "vue"; 64 | import App from "./App.vue"; 65 | \+ import axios from "axios"; 66 | 67 | const app = createApp(App); 68 | \+ app.config.globalProperties.$http = axios; 69 | app.mount("#app") 70 | 在文件 shims-vue.d.ts添加 带有 + 符号后代码 71 | 72 | // shims-vue.d.ts 73 | 74 | declare module "*.vue" { 75 | import { defineComponent } from "vue"; 76 | const component: ReturnType; 77 | export default component; 78 | } 79 | 80 | \+ declare module "@vue/runtime-core" { 81 | \+ import { AxiosInstance } from "axios"; 82 | \+ interface ComponentCustomProperties { 83 | \+ $http: AxiosInstance; 84 | \+ } 85 | \+ } 86 | ``` 87 | ![](https://oscimg.oschina.net/oscnet/up-1a75a32cc5f128cd86b1cf9eb7301d1949a.gif)![](https://oscimg.oschina.net/oscnet/up-89f278693ffc1df1f55e0b417534558eed6.gif) 88 | 89 | # 2、安装并引入antd 90 | ``` 91 | $ npm i --save ant-design-vue@next 92 | ``` 93 | //需要按需引入的话安装插件 babel-plugin-import 然后配置 babel.config.js$ npm i --save babel-plugin-import 94 | 95 | **完整引入** 96 | ``` 97 | import { createApp } from 'vue'; 98 | import Antd from 'ant-design-vue'; 99 | import App from './App'; 100 | import 'ant-design-vue/dist/antd.css'; 101 | 102 | const app = createApp(); 103 | app.config.productionTip = false; 104 | 105 | app.use(Antd); 106 | 107 | 以上代码便完成了 Antd 的引入。需要注意的是,样式文件需要单独引入。 108 | 109 | **局部导入组件** 110 | 111 | import { createApp } from 'vue'; 112 | import { Button, message } from 'ant-design-vue'; 113 | import App from './App'; 114 | 115 | const app = createApp(); 116 | app.config.productionTip = false; 117 | 118 | /\* Automatically register components under Button, such as Button.Group */ 119 | app.use(Button); 120 | 121 | app.config.globalProperties.$message = message; 122 | 123 | 如果需要按需加载,则配置`ant-design-vue` 124 | 125 | 根目录打开`babel.config.js`文件,将里面的内容修改为 126 | 127 | module.exports = { 128 | presets: \["@vue/cli-plugin-babel/preset"\], 129 | plugins: \[ 130 | //以下是配置按需加载 131 | \[ 132 | "import", 133 | { 134 | libraryName: "ant-design-vue", 135 | libraryDirectory: "es", 136 | style: "css"//为true时加载的是less文件 137 | } 138 | \] 139 | \] 140 | } 141 | ``` 142 | 143 | 目前我是用全局引入的方式引入antd,大家根据自己需求引入即可。 144 | 145 | # 3、页面布局 146 | 147 | ![](https://oscimg.oschina.net/oscnet/up-5afdcdd41303d82e14b02346c1736f363c9.png) 148 | 149 | app.vue页面 150 | ``` 151 | 156 | 157 | 162 | ``` 163 | login页面: 涉及data定义,响应式数据、生命周期、方法调用、实例获取(即是vue2.x的this) 164 | 165 | ![](https://oscimg.oschina.net/oscnet/up-ac9fee55abcc53c2977cc4a487e0c44f4a8.png) 166 | ``` 167 | //login 168 | 184 | 185 | 266 | 278 | ``` 279 | 看得出来跟vue2.x的结构已经有很大区别了,例如setup、方法使用等等,setup是Composition API的入口,Vue3.0提供的新属性,可以在setup中使用Composition API,在上文代码中我们在setup中通过reactive初始化了一个响应式数据,然后通过return返回了一个对象,对象中包含了声明的响应式数据和一个方法。 280 |   281 | 282 | setup函数有两个参数,分别是props和context, setup(props,context); 283 | 284 | props组件外部传入进来的属性 285 | ``` 286 | export default { 287 | props: { 288 | title: { 289 | type: String 290 | } 291 | }, 292 | setup(props) { 293 | //组件传入的值 294 | console.log(props.title) 295 | } 296 | } 297 | ``` 298 | context是一个对象,里面包含了三个属性,分别是 attrs、slots、emit 299 | 300 | attrs与Vue2.0的this.$attrs是一样的,即外部传入的未在props中定义的属性。对于attrs与props一样,我们不能对attrs使用es6的解构,必须使用attrs.name的写法。 301 | 302 | slots对应的是组件的插槽,与Vue2.0的this.$slots是对应的,与props和attrs一样,slots也是不能解构的。 303 | 304 | emit对应的是Vue2.0的this.$emit, 即对外暴露事件。 305 | 306 | home.vue页面 307 | ``` 308 | ![](https://oscimg.oschina.net/oscnet/up-0e5c5181a088f6b3bd925effb7caf816720.png) 309 | 310 | 321 | 322 | 355 | ``` 356 | ![](https://oscimg.oschina.net/oscnet/up-70bd65774562c2de1545983d6b89e19738a.gif)![](https://oscimg.oschina.net/oscnet/up-5e06f9db46957e12bfcd8aeec49f509c855.gif) 357 | 358 | index->index.vue页面 359 | ``` 360 | 366 | 367 | 388 | ``` 389 | ![](https://oscimg.oschina.net/oscnet/up-fba104401ce0c5309f5b6bdb513ba8a7224.gif)![](https://oscimg.oschina.net/oscnet/up-2258f13a2594ff99db3a0b9a9b93014825e.gif) 390 | 391 | accountList.vue 列表页面(计算属性) 392 | 393 | ![](https://oscimg.oschina.net/oscnet/up-dc2864da0ad9a0bffff9585418171257af3.png) 394 | ``` 395 | 422 | 423 | 544 | ``` 545 | ![](https://oscimg.oschina.net/oscnet/up-d046578cdf018f2f760c54da3c905bf5fbc.gif)![](https://oscimg.oschina.net/oscnet/up-729b847273b6eab5df7b5c77d9dee05b4cf.gif) 546 | 547 | detail 详情页面(路由传参) 548 | 549 | ![](https://oscimg.oschina.net/oscnet/up-5e4ae81926638f376fb8467c6b15973f9cc.png) 550 | ``` 551 | 557 | 558 | 582 | ``` 583 | 相信大家对vue3.0基础用法有了初步的认识,菜鸟的我也在不断学习中,持续更新ing 584 | 585 | 官网文档:[https://v3.cn.vuejs.org/api/application-config.html](https://v3.cn.vuejs.org/api/application-config.html) -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /dist/css/app.3dfa20fe.css: -------------------------------------------------------------------------------- 1 | #app{text-align:center} -------------------------------------------------------------------------------- /dist/css/chunk-0c887ddf.224805df.css: -------------------------------------------------------------------------------- 1 | .nav[data-v-231c90f5]{margin:20px}.nav .item[data-v-231c90f5]{margin:20px;font-size:20px;color:#ccc}.nav[data-v-231c90f5] .router-link-active{color:#1890ff} -------------------------------------------------------------------------------- /dist/css/chunk-280ff214.3741255c.css: -------------------------------------------------------------------------------- 1 | .box[data-v-4fac8c39]{width:50%;margin:0 auto;padding-top:200px}.box .form[data-v-4fac8c39]{width:60%;margin:0 auto;padding-top:30px} -------------------------------------------------------------------------------- /dist/css/chunk-ae526aec.6543776e.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/parchments/vue3-admin-template/b3f9271e0dd06b251296fe1a084ece9ea75acffb/dist/css/chunk-ae526aec.6543776e.css -------------------------------------------------------------------------------- /dist/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/parchments/vue3-admin-template/b3f9271e0dd06b251296fe1a084ece9ea75acffb/dist/favicon.ico -------------------------------------------------------------------------------- /dist/img/logo.82b9c7a5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/parchments/vue3-admin-template/b3f9271e0dd06b251296fe1a084ece9ea75acffb/dist/img/logo.82b9c7a5.png -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | vue3-admin-template
-------------------------------------------------------------------------------- /dist/js/app.ca387042.js: -------------------------------------------------------------------------------- 1 | (function(e){function t(t){for(var s,a,o=t[0],u=t[1],f=t[2],i=0,d=[];i\n
\n \n
\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=1ab81361\"\nconst script = {}\n\nimport \"./App.vue?vue&type=style&index=0&lang=less\"\nscript.render = render\n\nexport default script","import { createRouter, createWebHistory } from 'vue-router'\r\n\r\nconst routes = [{\r\n\t\tpath: '/',\r\n\t\tredirect: '/home'\r\n\t},\r\n\t{\r\n\t\tpath: '/login',\r\n\t\tname: 'login',\r\n\t\tcomponent: () => import('../views/login.vue')\r\n\t},\r\n\t{\r\n\t\tpath: '/home',\r\n\t\tname: 'home',\r\n\t\tcomponent: () => import('../views/layout/home.vue'),\r\n\t\tchildren: [{\r\n\t\t\tpath: '/index',\r\n\t\t\tname: 'index',\r\n\t\t\tcomponent: () => import('../views/layout/index/index.vue')\r\n\t\t},{\r\n\t\t\tpath: '/accountList',\r\n\t\t\tname: 'accountList',\r\n\t\t\tcomponent: () => import('../views/layout/accountList/accountList.vue')\r\n\t\t},{\r\n\t\t\tpath: '/accountList/detail',\r\n\t\t\tname: 'detail',\r\n\t\t\tcomponent: () => import('../views/layout/detail/detail.vue')\r\n\t\t}]\r\n\t},\r\n]\r\n\r\nconst router = createRouter({\r\n\thistory: createWebHistory(process.env.BASE_URL),\r\n\troutes\r\n})\r\n\r\nexport default router\n","import { createStore } from 'vuex'\n\nexport default createStore({\n state: {\n },\n mutations: {\n },\n actions: {\n },\n modules: {\n }\n})\n","/**\r\n * 封装\r\n * 请求拦截、响应拦截、错误统一处理\r\n */\r\nimport axios from 'axios'\r\nimport router from '../router/index'\r\n\r\n/**\r\n * 跳转登录页\r\n * 携带当前页面路由,以期在登录页面完成登录后返回当前页面\r\n */\r\nlet toLogin = () => {\r\n\trouter.push({\r\n\t\tpath: '/login',\r\n\t\tquery: {\r\n\t\t\tredirect: router.currentRoute.fullPath\r\n\t\t}\r\n\t})\r\n}\r\n\r\n// 创建axios实例\r\nlet instance = axios.create({\r\n\ttimeout: 3000000, //请求超时时间\r\n});\r\n\r\n/**\r\n * 请求拦截器\r\n * 每次请求前,如果存在token则在请求头中携带token\r\n */\r\ninstance.interceptors.request.use(\r\n\tconfig => {\r\n\t\t//登录流程控制中,根据本地是否存在token判断用户的登录情况\r\n\t\t//但是即使token存在,也有可能token是过期的,所以在每次的请求头中携带token\r\n\t\t//后台根据携带的token判断用户的登录情况,并返回给我们对应的状态码\r\n\t\t//而后我们可以在响应拦截器中,根据状态码进行一些统一的操作。\r\n\t\t//用户信息\r\n\t\tlet userInfo = '';\r\n\t\tif (localStorage.userInfo) {\r\n\t\t\tuserInfo = localStorage.userInfo\r\n\t\t} else {\r\n\t\t\tuserInfo = '';\r\n\t\t}\r\n\r\n\t\t//token\r\n\t\tlet token = '';\r\n\t\tif (localStorage.token) {\r\n\t\t\ttoken = localStorage.token\r\n\t\t} else {\r\n\t\t\ttoken = '';\r\n\t\t}\r\n\t\t//设置统一请求头\r\n\t\tconfig.headers = {\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t\t'token': token,\r\n\t\t\t'userInfo': userInfo\r\n\t\t}\r\n\t\treturn config;\r\n\t},\r\n\terror => Promise.error(error)\r\n)\r\n\r\n/**\r\n * 请求失败后的错误统一处理\r\n * @param {Number} status 请求失败的状态码\r\n */\r\nlet errorHandle = (status, other) => {\r\n\t//状态码判断\r\n\tswitch (status) {\r\n\t\tcase 400:\r\n\t\t\tconsole.log('客户端请求的语法错误,服务器无法理解')\r\n\t\t\tbreak;\r\n\t\tcase 401:\r\n\t\t\t// ViewUI.Message.error('请重新登录');\r\n\t\t\tlocalStorage.clear();\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\ttoLogin(); //跳转到登录\r\n\t\t\t}, 3000);\r\n\t\t\tbreak;\r\n\t\tcase 404:\r\n\t\t\tbreak;\r\n\t\tcase 408:\r\n\t\t\tbreak;\r\n\t\tcase 500:\r\n\t\t\tconsole.log(other);\r\n\t\t\t// ViewUI.Message.error('网络异常,稍后重试');\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tconsole.log(other);\r\n\t}\r\n}\r\n\r\n//响应拦截器\r\ninstance.interceptors.response.use(\r\n\t//请求成功\r\n\tres => {\r\n\t\tif (res.status === 200) {\r\n\t\t\treturn Promise.resolve(res) //Promise.resolve(value)方法返回一个以给定值解析后的Promise 对象。\r\n\t\t} else {\r\n\t\t\tconsole.log(\"响应拦截器失败\");\r\n\t\t\treturn Promise.reject(res) //Promise.reject(reason)方法返回一个带有拒绝原因reason参数的Promise对象。\r\n\t\t}\r\n\t},\r\n\t//请求失败\r\n\terror => {\r\n\t\t//return Promise.reject(error);\r\n\t\tconst { response } = error;\r\n\t\tif (response) {\r\n\t\t\t//请求已发出,但是不在2xx的范围 ------错误处理、token过期等\r\n\t\t\tconsole.log(response);\r\n\t\t\terrorHandle(response.status, response.data.message);\r\n\t\t\treturn Promise.reject(response);\r\n\t\t} else {\r\n\t\t\t// 处理断网的情况\r\n\t\t\t// ViewUI.Message.error('网络异常,稍后重试');\r\n\t\t}\r\n\t}\r\n);\r\nexport default instance;\n","import axios from '../request/http'\r\nlet baseURL = process.env.VUE_APP_BASEURL\r\n\r\n//系统管理\r\nconst systemManageApi = {\r\n\tsystemManage: {\r\n\t\t//列表\r\n\t\tgetList(params) {\r\n\t\t\treturn axios.post(baseURL + 'rest/menu/insertMenu', params)\r\n\t\t},\r\n\t\t//新增\r\n\t\tadd(params) {\r\n\t\t\treturn axios.post(baseURL + 'rest/menu/insertMenu', params)\r\n\t\t},\r\n\t\t//编辑\r\n\t\tedit(params) {\r\n\t\t\treturn axios.post(baseURL + 'rest/menu/insertMenu', params)\r\n\t\t},\r\n\t\t//修改密码\r\n\t\tchangePassword(params) {\r\n\t\t\treturn axios.post(baseURL + 'rest/menu/insertMenu', params)\r\n\t\t}\r\n\t}\r\n}\r\nexport default systemManageApi\n","import axios from '../request/http'\r\nlet baseURL = process.env.VUE_APP_BASEURL\r\n\r\n//公用\r\nconst commonApi = {\r\n\tcommon: {\r\n\t\t//上传\r\n\t\tuploadFile(params, config) {\r\n\t\t\treturn axios.post(baseURL + 'rest/menu/insertMenu', params, config)\r\n\t\t}\r\n\t}\r\n}\r\nexport default commonApi\n","//接口地址\r\nimport systemManageApi from './systemManage' //系统管理\r\nimport commonApi from './common' //公用接口\r\n\r\nconst api = {\r\n\t...systemManageApi,\r\n\t...commonApi\r\n}\r\nexport default api\n","'use strict'\r\nlet config = {\r\n\t/*\r\n\t * 后台返回状态码\r\n\t * RET_CODE: 0代表失败 1代表成功\r\n\t */\r\n RET_CODE: {\r\n SUCCESS_CODE: 1,//后台返回成功的状态码\r\n ERROR_CODE: 0,//后台返回失败的状态码\r\n },\r\n //分页设置\r\n paginationParams: {\r\n pageSize: 10,//每页的数量\r\n pageNo: 1,//当前页码\r\n size: 10,//当前页的数量\r\n total: 0, //总条数\r\n pages: 0,//总页码数\r\n }\r\n}\r\nexport default config\r\n","import { createApp } from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\nimport Antd from 'ant-design-vue'\r\nimport 'ant-design-vue/dist/antd.css'\r\n\r\nimport api from \"./api/api\"\r\nimport config from \"./config/config\"\r\nimport axios from './request/http'\r\n\r\nconst app = createApp(App)\r\n\r\n//全局挂载 组件内通过const { ctx } = getCurrentInstance();获取\r\napp.config.globalProperties.$api = api\r\napp.config.globalProperties.$config = config\r\napp.config.globalProperties.$axios = axios\r\n\r\napp.use(Antd).use(store).use(router).use(api).mount('#app')","var map = {\n\t\"./af\": \"161a\",\n\t\"./af.js\": \"161a\",\n\t\"./ar\": \"0d64\",\n\t\"./ar-dz\": \"a6bd\",\n\t\"./ar-dz.js\": \"a6bd\",\n\t\"./ar-kw\": \"2443\",\n\t\"./ar-kw.js\": \"2443\",\n\t\"./ar-ly\": \"9769\",\n\t\"./ar-ly.js\": \"9769\",\n\t\"./ar-ma\": \"d72d\",\n\t\"./ar-ma.js\": \"d72d\",\n\t\"./ar-sa\": \"3dd2\",\n\t\"./ar-sa.js\": \"3dd2\",\n\t\"./ar-tn\": \"8d74\",\n\t\"./ar-tn.js\": \"8d74\",\n\t\"./ar.js\": \"0d64\",\n\t\"./az\": \"7da2\",\n\t\"./az.js\": \"7da2\",\n\t\"./be\": \"3817\",\n\t\"./be.js\": \"3817\",\n\t\"./bg\": \"d5d2\",\n\t\"./bg.js\": \"d5d2\",\n\t\"./bm\": \"aa9b\",\n\t\"./bm.js\": \"aa9b\",\n\t\"./bn\": \"0426\",\n\t\"./bn.js\": \"0426\",\n\t\"./bo\": \"fe66\",\n\t\"./bo.js\": \"fe66\",\n\t\"./br\": \"be56\",\n\t\"./br.js\": \"be56\",\n\t\"./bs\": \"d164\",\n\t\"./bs.js\": \"d164\",\n\t\"./ca\": \"c04d\",\n\t\"./ca.js\": \"c04d\",\n\t\"./cs\": \"eb4f\",\n\t\"./cs.js\": \"eb4f\",\n\t\"./cv\": \"eda5\",\n\t\"./cv.js\": \"eda5\",\n\t\"./cy\": \"4169\",\n\t\"./cy.js\": \"4169\",\n\t\"./da\": \"038a\",\n\t\"./da.js\": \"038a\",\n\t\"./de\": \"68d5\",\n\t\"./de-at\": \"a700\",\n\t\"./de-at.js\": \"a700\",\n\t\"./de-ch\": \"9c18\",\n\t\"./de-ch.js\": \"9c18\",\n\t\"./de.js\": \"68d5\",\n\t\"./dv\": \"b46f\",\n\t\"./dv.js\": \"b46f\",\n\t\"./el\": \"5a1f\",\n\t\"./el.js\": \"5a1f\",\n\t\"./en-au\": \"da58\",\n\t\"./en-au.js\": \"da58\",\n\t\"./en-ca\": \"1a9f\",\n\t\"./en-ca.js\": \"1a9f\",\n\t\"./en-gb\": \"0c0a\",\n\t\"./en-gb.js\": \"0c0a\",\n\t\"./en-ie\": \"a89c\",\n\t\"./en-ie.js\": \"a89c\",\n\t\"./en-il\": \"dbb7\",\n\t\"./en-il.js\": \"dbb7\",\n\t\"./en-in\": \"f927\",\n\t\"./en-in.js\": \"f927\",\n\t\"./en-nz\": \"a2d0\",\n\t\"./en-nz.js\": \"a2d0\",\n\t\"./en-sg\": \"f95d\",\n\t\"./en-sg.js\": \"f95d\",\n\t\"./eo\": \"838d\",\n\t\"./eo.js\": \"838d\",\n\t\"./es\": \"2461\",\n\t\"./es-do\": \"fea1\",\n\t\"./es-do.js\": \"fea1\",\n\t\"./es-us\": \"461f\",\n\t\"./es-us.js\": \"461f\",\n\t\"./es.js\": \"2461\",\n\t\"./et\": \"63f1\",\n\t\"./et.js\": \"63f1\",\n\t\"./eu\": \"fef5\",\n\t\"./eu.js\": \"fef5\",\n\t\"./fa\": \"b3d9\",\n\t\"./fa.js\": \"b3d9\",\n\t\"./fi\": \"af97\",\n\t\"./fi.js\": \"af97\",\n\t\"./fil\": \"5dbb\",\n\t\"./fil.js\": \"5dbb\",\n\t\"./fo\": \"4d32\",\n\t\"./fo.js\": \"4d32\",\n\t\"./fr\": \"7dfe\",\n\t\"./fr-ca\": \"3a74\",\n\t\"./fr-ca.js\": \"3a74\",\n\t\"./fr-ch\": \"f5c1\",\n\t\"./fr-ch.js\": \"f5c1\",\n\t\"./fr.js\": \"7dfe\",\n\t\"./fy\": \"ce1e\",\n\t\"./fy.js\": \"ce1e\",\n\t\"./ga\": \"9244\",\n\t\"./ga.js\": \"9244\",\n\t\"./gd\": \"b47c\",\n\t\"./gd.js\": \"b47c\",\n\t\"./gl\": \"6ef7\",\n\t\"./gl.js\": \"6ef7\",\n\t\"./gom-deva\": \"42fa\",\n\t\"./gom-deva.js\": \"42fa\",\n\t\"./gom-latn\": \"0183\",\n\t\"./gom-latn.js\": \"0183\",\n\t\"./gu\": \"c091\",\n\t\"./gu.js\": \"c091\",\n\t\"./he\": \"b304\",\n\t\"./he.js\": \"b304\",\n\t\"./hi\": \"22b9\",\n\t\"./hi.js\": \"22b9\",\n\t\"./hr\": \"d250\",\n\t\"./hr.js\": \"d250\",\n\t\"./hu\": \"ec46\",\n\t\"./hu.js\": \"ec46\",\n\t\"./hy-am\": \"8d18\",\n\t\"./hy-am.js\": \"8d18\",\n\t\"./id\": \"31fe\",\n\t\"./id.js\": \"31fe\",\n\t\"./is\": \"1cef\",\n\t\"./is.js\": \"1cef\",\n\t\"./it\": \"3691\",\n\t\"./it-ch\": \"36c6\",\n\t\"./it-ch.js\": \"36c6\",\n\t\"./it.js\": \"3691\",\n\t\"./ja\": \"fc7f\",\n\t\"./ja.js\": \"fc7f\",\n\t\"./jv\": \"5414\",\n\t\"./jv.js\": \"5414\",\n\t\"./ka\": \"80a9\",\n\t\"./ka.js\": \"80a9\",\n\t\"./kk\": \"3feb\",\n\t\"./kk.js\": \"3feb\",\n\t\"./km\": \"b423\",\n\t\"./km.js\": \"b423\",\n\t\"./kn\": \"1bbd\",\n\t\"./kn.js\": \"1bbd\",\n\t\"./ko\": \"08dc\",\n\t\"./ko.js\": \"08dc\",\n\t\"./ku\": \"8d1c\",\n\t\"./ku.js\": \"8d1c\",\n\t\"./ky\": \"129d\",\n\t\"./ky.js\": \"129d\",\n\t\"./lb\": \"6fe3\",\n\t\"./lb.js\": \"6fe3\",\n\t\"./lo\": \"ab3e\",\n\t\"./lo.js\": \"ab3e\",\n\t\"./lt\": \"cb8f\",\n\t\"./lt.js\": \"cb8f\",\n\t\"./lv\": \"4ef4\",\n\t\"./lv.js\": \"4ef4\",\n\t\"./me\": \"647c\",\n\t\"./me.js\": \"647c\",\n\t\"./mi\": \"7986\",\n\t\"./mi.js\": \"7986\",\n\t\"./mk\": \"7544\",\n\t\"./mk.js\": \"7544\",\n\t\"./ml\": \"a8b7\",\n\t\"./ml.js\": \"a8b7\",\n\t\"./mn\": \"3c46\",\n\t\"./mn.js\": \"3c46\",\n\t\"./mr\": \"604b\",\n\t\"./mr.js\": \"604b\",\n\t\"./ms\": \"03d2\",\n\t\"./ms-my\": \"7482\",\n\t\"./ms-my.js\": \"7482\",\n\t\"./ms.js\": \"03d2\",\n\t\"./mt\": \"7857\",\n\t\"./mt.js\": \"7857\",\n\t\"./my\": \"8fa7\",\n\t\"./my.js\": \"8fa7\",\n\t\"./nb\": \"4e71\",\n\t\"./nb.js\": \"4e71\",\n\t\"./ne\": \"80c7\",\n\t\"./ne.js\": \"80c7\",\n\t\"./nl\": \"4f6a\",\n\t\"./nl-be\": \"6717\",\n\t\"./nl-be.js\": \"6717\",\n\t\"./nl.js\": \"4f6a\",\n\t\"./nn\": \"546f\",\n\t\"./nn.js\": \"546f\",\n\t\"./oc-lnc\": \"ba3f\",\n\t\"./oc-lnc.js\": \"ba3f\",\n\t\"./pa-in\": \"fc4a\",\n\t\"./pa-in.js\": \"fc4a\",\n\t\"./pl\": \"1caf\",\n\t\"./pl.js\": \"1caf\",\n\t\"./pt\": \"c4ca\",\n\t\"./pt-br\": \"d4c7\",\n\t\"./pt-br.js\": \"d4c7\",\n\t\"./pt.js\": \"c4ca\",\n\t\"./ro\": \"bdb1\",\n\t\"./ro.js\": \"bdb1\",\n\t\"./ru\": \"888b\",\n\t\"./ru.js\": \"888b\",\n\t\"./sd\": \"7b20\",\n\t\"./sd.js\": \"7b20\",\n\t\"./se\": \"399a\",\n\t\"./se.js\": \"399a\",\n\t\"./si\": \"c764\",\n\t\"./si.js\": \"c764\",\n\t\"./sk\": \"1370\",\n\t\"./sk.js\": \"1370\",\n\t\"./sl\": \"7b7f\",\n\t\"./sl.js\": \"7b7f\",\n\t\"./sq\": \"f300\",\n\t\"./sq.js\": \"f300\",\n\t\"./sr\": \"c89f\",\n\t\"./sr-cyrl\": \"24bc\",\n\t\"./sr-cyrl.js\": \"24bc\",\n\t\"./sr.js\": \"c89f\",\n\t\"./ss\": \"0c25\",\n\t\"./ss.js\": \"0c25\",\n\t\"./sv\": \"cb8b\",\n\t\"./sv.js\": \"cb8b\",\n\t\"./sw\": \"99c3\",\n\t\"./sw.js\": \"99c3\",\n\t\"./ta\": \"b77b\",\n\t\"./ta.js\": \"b77b\",\n\t\"./te\": \"f977\",\n\t\"./te.js\": \"f977\",\n\t\"./tet\": \"11f7\",\n\t\"./tet.js\": \"11f7\",\n\t\"./tg\": \"75ce\",\n\t\"./tg.js\": \"75ce\",\n\t\"./th\": \"2187\",\n\t\"./th.js\": \"2187\",\n\t\"./tk\": \"4e8c\",\n\t\"./tk.js\": \"4e8c\",\n\t\"./tl-ph\": \"2ef4\",\n\t\"./tl-ph.js\": \"2ef4\",\n\t\"./tlh\": \"0335\",\n\t\"./tlh.js\": \"0335\",\n\t\"./tr\": \"fb8a\",\n\t\"./tr.js\": \"fb8a\",\n\t\"./tzl\": \"8392\",\n\t\"./tzl.js\": \"8392\",\n\t\"./tzm\": \"2717\",\n\t\"./tzm-latn\": \"5bfe\",\n\t\"./tzm-latn.js\": \"5bfe\",\n\t\"./tzm.js\": \"2717\",\n\t\"./ug-cn\": \"334d\",\n\t\"./ug-cn.js\": \"334d\",\n\t\"./uk\": \"eb6b\",\n\t\"./uk.js\": \"eb6b\",\n\t\"./ur\": \"a961\",\n\t\"./ur.js\": \"a961\",\n\t\"./uz\": \"b430\",\n\t\"./uz-latn\": \"c402\",\n\t\"./uz-latn.js\": \"c402\",\n\t\"./uz.js\": \"b430\",\n\t\"./vi\": \"8e72\",\n\t\"./vi.js\": \"8e72\",\n\t\"./x-pseudo\": \"c058\",\n\t\"./x-pseudo.js\": \"c058\",\n\t\"./yo\": \"f742\",\n\t\"./yo.js\": \"f742\",\n\t\"./zh-cn\": \"88e3\",\n\t\"./zh-cn.js\": \"88e3\",\n\t\"./zh-hk\": \"47ac\",\n\t\"./zh-hk.js\": \"47ac\",\n\t\"./zh-mo\": \"7b8b\",\n\t\"./zh-mo.js\": \"7b8b\",\n\t\"./zh-tw\": \"ac7b\",\n\t\"./zh-tw.js\": \"ac7b\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"a28e\";","export { default } from \"-!../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/_less-loader@5.0.0@less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&lang=less\"; export * from \"-!../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--10-oneOf-1-1!../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/_less-loader@5.0.0@less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&lang=less\""],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/js/chunk-0c887ddf.b6868575.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-0c887ddf"],{6733:function(e,t,c){"use strict";c.r(t);var n=c("db85"),o=Object(n["createVNode"])("br",null,null,-1),r=Object(n["createVNode"])("br",null,null,-1),a=Object(n["createVNode"])("br",null,null,-1),u=Object(n["createVNode"])("br",null,null,-1),b=Object(n["createTextVNode"])("退出登录");function l(e,t){var c=Object(n["resolveComponent"])("Nav"),l=Object(n["resolveComponent"])("router-view"),d=Object(n["resolveComponent"])("a-button");return Object(n["openBlock"])(),Object(n["createBlock"])("div",null,[Object(n["createVNode"])(c),Object(n["createVNode"])(l),o,r,a,u,Object(n["createVNode"])(d,{onClick:t[1]||(t[1]=function(t){return e.back()})},{default:Object(n["withCtx"])((function(){return[b]})),_:1})])}var d=c("e793"),i=Object(n["withScopeId"])("data-v-231c90f5");Object(n["pushScopeId"])("data-v-231c90f5");var j={class:"nav"},O=Object(n["createTextVNode"])("首页"),s=Object(n["createTextVNode"])("账号列表");Object(n["popScopeId"])();var v=i((function(e,t){var c=Object(n["resolveComponent"])("router-link");return Object(n["openBlock"])(),Object(n["createBlock"])("div",j,[Object(n["createVNode"])(c,{to:"/index",tag:"div",class:"item"},{default:i((function(){return[O]})),_:1}),Object(n["createVNode"])(c,{to:"/accountList",tag:"div",class:"item"},{default:i((function(){return[s]})),_:1})])})),p={name:"nav"};c("e966");p.render=v,p.__scopeId="data-v-231c90f5";var f=p,N={name:"home",components:{Nav:f},setup:function(e,t){console.log(e,t);var c=Object(n["reactive"])({}),o=Object(n["getCurrentInstance"])(),r=o.ctx,a=function(){r.$router.push("/login")};return Object(d["a"])(Object(d["a"])({},Object(n["toRefs"])(c)),{},{back:a})}};N.render=l;t["default"]=N},e0e9:function(e,t,c){},e966:function(e,t,c){"use strict";c("e0e9")}}]); 2 | //# sourceMappingURL=chunk-0c887ddf.b6868575.js.map -------------------------------------------------------------------------------- /dist/js/chunk-0c887ddf.b6868575.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/views/layout/home.vue","webpack:///./src/components/nav.vue","webpack:///./src/components/nav.vue?e00a","webpack:///./src/views/layout/home.vue?77e8","webpack:///./src/components/nav.vue?6ff7"],"names":["back","class","to","tag","name","render","__scopeId","components","Nav","setup","props","context","console","log","state","ctx","$router","push"],"mappings":"yIAIE,yBAAK,mB,EACL,yBAAK,mB,EACL,yBAAK,mB,EACL,yBAAK,mB,+BACqB,Q,sLAP3B,yBAQM,YAPL,yBAAO,GACP,yBAA2B,GAC3B,EACA,EACA,EACA,EACA,yBAAyC,GAA9B,QAAK,+BAAE,EAAAA,U,+BAAQ,iBAAI,C,+HCPzBC,MAAM,O,+BACuC,M,+BACM,Q,oIAFxD,yBAGM,MAHN,EAGM,CAFJ,yBAAgE,GAAnDC,GAAG,SAASC,IAAI,MAAMF,MAAM,Q,YAAO,iBAAE,C,YAClD,yBAAwE,GAA3DC,GAAG,eAAeC,IAAI,MAAMF,MAAM,Q,YAAO,iBAAI,C,iBAK/C,GACbG,KAAM,O,UCJR,EAAOC,OAAS,EAChB,EAAOC,UAAY,kBAEJ,QFQC,GACdF,KAAM,OACNG,WAAY,CACXC,IAAA,GAIDC,MAPc,SAORC,EAAMC,GACXC,QAAQC,IAAIH,EAAMC,GAGlB,IAAMG,EAAQ,sBAAS,IAJH,EASJ,kCAARC,EATY,EASZA,IAEFf,EAAM,WACXe,EAAIC,QAAQC,KAAK,WAGlB,wCACI,oBAAOH,IADX,IAECd,WGrCJ,EAAOK,OAAS,EAED,gB,yDCLf","file":"js/chunk-0c887ddf.b6868575.js","sourcesContent":["\r\n\r\n\n","\n\n\n\n\n\n","import { render } from \"./nav.vue?vue&type=template&id=231c90f5&scoped=true\"\nimport script from \"./nav.vue?vue&type=script&lang=js\"\nexport * from \"./nav.vue?vue&type=script&lang=js\"\n\nimport \"./nav.vue?vue&type=style&index=0&id=231c90f5&scoped=true&lang=less\"\nscript.render = render\nscript.__scopeId = \"data-v-231c90f5\"\n\nexport default script","import { render } from \"./home.vue?vue&type=template&id=028db11c\"\nimport script from \"./home.vue?vue&type=script&lang=js\"\nexport * from \"./home.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","export { default } from \"-!../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/_less-loader@5.0.0@less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./nav.vue?vue&type=style&index=0&id=231c90f5&scoped=true&lang=less\"; export * from \"-!../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/_less-loader@5.0.0@less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./nav.vue?vue&type=style&index=0&id=231c90f5&scoped=true&lang=less\""],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/js/chunk-280ff214.e7cedfb6.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-280ff214"],{"053b":function(e,t,o){var n=o("1e2c"),c=o("d910").f,r=Function.prototype,a=r.toString,u=/^\s*function ([^ (]*)/,l="name";n&&!(l in r)&&c(r,l,{configurable:!0,get:function(){try{return a.call(this).match(u)[1]}catch(e){return""}}})},c5b1:function(e,t,o){"use strict";o("e43b")},dd7b:function(e,t,o){"use strict";o.r(t);o("053b");var n=o("db85"),c=Object(n["withScopeId"])("data-v-4fac8c39");Object(n["pushScopeId"])("data-v-4fac8c39");var r={class:"box"},a=Object(n["createVNode"])("h1",null,"登录",-1),u=Object(n["createTextVNode"])("登录");Object(n["popScopeId"])();var l=c((function(e,t){var o=Object(n["resolveComponent"])("a-input"),l=Object(n["resolveComponent"])("a-form-item"),d=Object(n["resolveComponent"])("a-button"),b=Object(n["resolveComponent"])("a-form");return Object(n["openBlock"])(),Object(n["createBlock"])("div",r,[a,Object(n["createVNode"])("h2",null,Object(n["toDisplayString"])(e.name),1),Object(n["createVNode"])(b,{class:"form",layout:"inline"},{default:c((function(){return[Object(n["createVNode"])(l,{label:"账号"},{default:c((function(){return[Object(n["createVNode"])(o,{value:e.account,"onUpdate:value":t[1]||(t[1]=function(t){return e.account=t}),type:"text",placeholder:"请输入账号"},null,8,["value"])]})),_:1}),Object(n["createVNode"])(l,{label:"密码"},{default:c((function(){return[Object(n["createVNode"])(o,{value:e.password,"onUpdate:value":t[2]||(t[2]=function(t){return e.password=t}),type:"password",placeholder:"请输入密码"},null,8,["value"])]})),_:1}),Object(n["createVNode"])("h3",null,"输入账号密码,"+Object(n["toDisplayString"])(e.count)+" 秒后登录",1),Object(n["createVNode"])(d,{onClick:t[3]||(t[3]=function(t){return e.login()}),block:"",disabled:""===e.account||""===e.password,type:"primary"},{default:c((function(){return[u]})),_:1},8,["disabled"])]})),_:1})])})),d=o("e793"),b={name:"login",components:{},setup:function(e){var t=Object(n["reactive"])({count:3,name:"我是响应式数据name",account:"",password:""}),o=Object(n["getCurrentInstance"])(),c=o.ctx;console.log("context",e),console.log("ctx",c);var r=function(){console.log(c);var e=t.account,o=t.password;""===e||""===o?alert("账号密码不能为空"):(setInterval((function(){t.count--}),1e3),setTimeout((function(){c.$router.push("/index")}),3e3))};return Object(n["onBeforeMount"])((function(){console.log("onBeforeMount,组件挂载前,相当于beforeMount")})),Object(n["onMounted"])((function(){console.log("onMounted,实例挂载完毕,相当于mounted")})),Object(n["onBeforeUpdate"])((function(){console.log("onBeforeUpdate,响应式数据变化前,相当于beforeUpdate")})),Object(n["onUpdated"])((function(){console.log("onUpdated,响应式数据变化完成 ,相当于updated")})),Object(n["onBeforeUnmount"])((function(){console.log("onBeforeUnmount,实例销毁前 ,相当于beforeDestroy")})),Object(n["onUnmounted"])((function(){console.log("onUnmounted,实例已销毁 ,相当于destroyed")})),Object(n["onErrorCaptured"])((function(){console.log("onErrorCaptured,错误数据捕捉")})),Object(d["a"])(Object(d["a"])({},Object(n["toRefs"])(t)),{},{login:r})}};o("c5b1");b.render=l,b.__scopeId="data-v-4fac8c39";t["default"]=b},e43b:function(e,t,o){}}]); 2 | //# sourceMappingURL=chunk-280ff214.e7cedfb6.js.map -------------------------------------------------------------------------------- /dist/js/chunk-280ff214.e7cedfb6.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./node_modules/_core-js@3.6.5@core-js/modules/es.function.name.js","webpack:///./src/views/login.vue?2f73","webpack:///./src/views/login.vue","webpack:///./src/views/login.vue?4efa"],"names":["DESCRIPTORS","defineProperty","f","FunctionPrototype","Function","prototype","FunctionPrototypeToString","toString","nameRE","NAME","configurable","get","call","this","match","error","class","name","layout","label","value","account","type","placeholder","password","count","login","block","disabled","components","setup","context","state","ctx","console","log","alert","setInterval","setTimeout","$router","push","render","__scopeId"],"mappings":"qGAAA,IAAIA,EAAc,EAAQ,QACtBC,EAAiB,EAAQ,QAAuCC,EAEhEC,EAAoBC,SAASC,UAC7BC,EAA4BH,EAAkBI,SAC9CC,EAAS,wBACTC,EAAO,OAIPT,KAAiBS,KAAQN,IAC3BF,EAAeE,EAAmBM,EAAM,CACtCC,cAAc,EACdC,IAAK,WACH,IACE,OAAOL,EAA0BM,KAAKC,MAAMC,MAAMN,GAAQ,GAC1D,MAAOO,GACP,MAAO,Q,kCCjBf,W,oKCCMC,MAAM,O,EACV,yBAAW,UAAP,MAAE,G,+BAUyF,M,qQAXhG,yBAaM,MAbN,EAaM,CAZL,EACA,yBAAiB,uCAAX,EAAAC,MAAI,GACV,yBASS,GATDD,MAAM,OAAOE,OAAO,U,YAC3B,iBAEc,CAFd,yBAEc,GAFDC,MAAM,MAAI,C,WACtB,iBAAkE,CAAlE,yBAAkE,GAAjDC,MAAO,EAAAC,Q,gDAAA,EAAAA,QAAO,IAAEC,KAAK,OAAOC,YAAY,S,4BAE1D,yBAEc,GAFDJ,MAAM,MAAI,C,WACtB,iBAAuE,CAAvE,yBAAuE,GAAtDC,MAAO,EAAAI,S,gDAAA,EAAAA,SAAQ,IAAEF,KAAK,WAAWC,YAAY,S,4BAE/D,yBAA8B,UAA1B,UAAO,6BAAE,EAAAE,OAAO,QAAK,GACzB,yBAA2G,GAAhG,QAAK,+BAAE,EAAAC,UAASC,MAAA,GAAOC,SAAiB,KAAP,EAAAP,SAA0B,KAAR,EAAAG,SAAiBF,KAAK,W,YAAU,iBAAE,C,sDASnF,GACdL,KAAM,QACNY,WAAY,GAOZC,MATc,SASRC,GAIL,IAAMC,EAAQ,sBAAS,CACtBP,MAAO,EACPR,KAAM,cACNI,QAAS,GACTG,SAAU,KARG,EAYE,kCAARS,EAZM,EAYNA,IACRC,QAAQC,IAAI,UAAUJ,GACtBG,QAAQC,IAAI,MAAMF,GAElB,IAAMP,EAAQ,WAGbQ,QAAQC,IAAIF,GAHO,IAIdZ,EAAoBW,EAApBX,QAAQG,EAAYQ,EAAZR,SACC,KAAXH,GAA4B,KAAXG,EACnBY,MAAM,aAENC,aAAY,WACXL,EAAMP,UACL,KACFa,YAAW,WACVL,EAAIM,QAAQC,KAAK,YAChB,OAmCJ,OA5BA,4BAAe,WACdN,QAAQC,IAAI,yCAGb,wBAAW,WACVD,QAAQC,IAAI,kCAGb,6BAAgB,WACfD,QAAQC,IAAI,8CAGb,wBAAW,WACVD,QAAQC,IAAI,sCAGb,8BAAiB,WAChBD,QAAQC,IAAI,8CAGb,0BAAa,WACZD,QAAQC,IAAI,sCAGb,8BAAiB,WAChBD,QAAQC,IAAI,6BAGb,iCAEI,oBAAOH,IAFX,IAGCN,Y,UC5FJ,EAAOe,OAAS,EAChB,EAAOC,UAAY,kBAEJ,gB","file":"js/chunk-280ff214.e7cedfb6.js","sourcesContent":["var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.github.io/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","export { default } from \"-!../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/_less-loader@5.0.0@less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./login.vue?vue&type=style&index=0&id=4fac8c39&lang=less&scoped=true\"; export * from \"-!../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/_less-loader@5.0.0@less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./login.vue?vue&type=style&index=0&id=4fac8c39&lang=less&scoped=true\"","\r\n\r\n\r\n\n","import { render } from \"./login.vue?vue&type=template&id=4fac8c39&scoped=true\"\nimport script from \"./login.vue?vue&type=script&lang=js\"\nexport * from \"./login.vue?vue&type=script&lang=js\"\n\nimport \"./login.vue?vue&type=style&index=0&id=4fac8c39&lang=less&scoped=true\"\nscript.render = render\nscript.__scopeId = \"data-v-4fac8c39\"\n\nexport default script"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/js/chunk-6aa42b5c.c30ead5f.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-6aa42b5c"],{"2f6a":function(e,t,c){"use strict";c.r(t);var n=c("db85"),o=c("cf05"),a=c.n(o),r={style:{"padding-top":"100px"}},u=Object(n["createVNode"])("h2",null,"首页内容",-1),b=Object(n["createVNode"])("img",{src:a.a,alt:""},null,-1);function i(e,t){return Object(n["openBlock"])(),Object(n["createBlock"])("div",r,[u,b])}var p=c("e793"),l={name:"index",setup:function(){var e=Object(n["reactive"])({}),t=Object(n["getCurrentInstance"])(),c=t.ctx;return console.log(c),Object(p["a"])({},Object(n["toRefs"])(e))}};l.render=i;t["default"]=l},cf05:function(e,t,c){e.exports=c.p+"img/logo.82b9c7a5.png"}}]); 2 | //# sourceMappingURL=chunk-6aa42b5c.c30ead5f.js.map -------------------------------------------------------------------------------- /dist/js/chunk-6aa42b5c.c30ead5f.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/views/layout/index/index.vue","webpack:///./src/views/layout/index/index.vue?2771","webpack:///./src/assets/logo.png"],"names":["style","src","alt","name","setup","state","ctx","console","log","render","module","exports"],"mappings":"iKACMA,MAAA,yB,EACJ,yBAAa,UAAT,QAAI,G,EACR,yBAA2C,OAAtCC,IAAA,IAA+BC,IAAI,I,yDAFzC,yBAGM,MAHN,EAGM,CAFL,EACA,I,gBAMc,GACdC,KAAM,QAINC,MALc,WAMb,IAAMC,EAAQ,sBAAS,IADhB,EAKS,kCAARC,EALD,EAKCA,IAGR,OAFAC,QAAQC,IAAIF,GAEZ,kBACI,oBAAOD,MCpBd,EAAOI,OAASA,EAED,gB,qBCLfC,EAAOC,QAAU,IAA0B","file":"js/chunk-6aa42b5c.c30ead5f.js","sourcesContent":["\r\n\r\n\n","import { render } from \"./index.vue?vue&type=template&id=0af6e23a\"\nimport script from \"./index.vue?vue&type=script&lang=js\"\nexport * from \"./index.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","module.exports = __webpack_public_path__ + \"img/logo.82b9c7a5.png\";"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/js/chunk-770521e1.0d0e1779.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-770521e1"],{ac09b:function(e,t,c){"use strict";c.r(t);var n=c("db85"),o=Object(n["createTextVNode"])("返回列表");function r(e,t){var c=Object(n["resolveComponent"])("router-link");return Object(n["openBlock"])(),Object(n["createBlock"])("div",null,[Object(n["createVNode"])("h3",null,"请求参数id为"+Object(n["toDisplayString"])(e.id)+"的数据",1),Object(n["createVNode"])(c,{to:"/accountList"},{default:Object(n["withCtx"])((function(){return[o]})),_:1})])}var a=c("e793"),i=c("7171"),u={name:"detail",components:{},setup:function(e,t){var c=Object(n["reactive"])({id:""}),o=Object(n["getCurrentInstance"])(),r=o.ctx,u=Object(i["c"])(),b=u.query;return console.log(b),c.id=b.id,console.log("详情",r,t),Object(a["a"])({},Object(n["toRefs"])(c))}};u.render=r;t["default"]=u}}]); 2 | //# sourceMappingURL=chunk-770521e1.0d0e1779.js.map -------------------------------------------------------------------------------- /dist/js/chunk-770521e1.0d0e1779.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/views/layout/detail/detail.vue","webpack:///./src/views/layout/detail/detail.vue?0a41"],"names":["id","to","name","components","setup","props","context","state","ctx","query","console","log","render"],"mappings":"uKAGiC,Q,mGAFhC,yBAGM,YAFL,yBAAyB,UAArB,UAAO,6BAAE,EAAAA,IAAI,MAAG,GACpB,yBAAiD,GAApCC,GAAG,gBAAc,C,8BAAC,iBAAI,C,0CAOrB,GACdC,KAAM,SACNC,WAAY,GAGZC,MALc,SAKRC,EAAMC,GACX,IAAMC,EAAQ,sBAAS,CACtBP,GAAI,KAFe,EAIJ,kCAARQ,EAJY,EAIZA,IAJY,EAKF,iBAAVC,EALY,EAKZA,MAKR,OAJAC,QAAQC,IAAIF,GACZF,EAAMP,GAAKS,EAAMT,GACjBU,QAAQC,IAAI,KAAKH,EAAIF,GAErB,kBACI,oBAAOC,MCvBd,EAAOK,OAASA,EAED","file":"js/chunk-770521e1.0d0e1779.js","sourcesContent":["\r\n\r\n\n","import { render } from \"./detail.vue?vue&type=template&id=cd2b4810\"\nimport script from \"./detail.vue?vue&type=script&lang=js\"\nexport * from \"./detail.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script"],"sourceRoot":""} -------------------------------------------------------------------------------- /dist/js/chunk-ae526aec.09ee93f5.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-ae526aec"],{1664:function(e,t,n){"use strict";n("51d5")},"513c":function(e,t,n){"use strict";var c=n("1e2c"),r=n("d890"),o=n("e8d6"),a=n("1944"),u=n("faa8"),i=n("2118"),l=n("7063"),s=n("9f67"),f=n("efe2"),d=n("6d60"),p=n("b338").f,b=n("aa6b").f,v=n("d910").f,O=n("c10f").trim,N="Number",h=r[N],j=h.prototype,g=i(d(j))==N,V=function(e){var t,n,c,r,o,a,u,i,l=s(e,!1);if("string"==typeof l&&l.length>2)if(l=O(l),t=l.charCodeAt(0),43===t||45===t){if(n=l.charCodeAt(2),88===n||120===n)return NaN}else if(48===t){switch(l.charCodeAt(1)){case 66:case 98:c=2,r=49;break;case 79:case 111:c=8,r=55;break;default:return+l}for(o=l.slice(2),a=o.length,u=0;ur)return NaN;return parseInt(o,c)}return+l};if(o(N,!h(" 0o1")||!h("0b1")||h("+0x1"))){for(var I,x=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof x&&(g?f((function(){j.valueOf.call(n)})):i(n)!=N)?l(new h(V(t)),n,x):V(t)},w=c?p(h):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),y=0;w.length>y;y++)u(h,I=w[y])&&!u(x,I)&&v(x,I,b(h,I));x.prototype=j,j.constructor=x,a(r,N,x)}},"51d5":function(e,t,n){},7063:function(e,t,n){var c=n("a719"),r=n("50fb");e.exports=function(e,t,n){var o,a;return r&&"function"==typeof(o=t.constructor)&&o!==n&&c(a=o.prototype)&&a!==n.prototype&&r(e,a),e}},c10f:function(e,t,n){var c=n("2732"),r=n("fc8c"),o="["+r+"]",a=RegExp("^"+o+o+"*"),u=RegExp(o+o+"*$"),i=function(e){return function(t){var n=String(c(t));return 1&e&&(n=n.replace(a,"")),2&e&&(n=n.replace(u,"")),n}};e.exports={start:i(1),end:i(2),trim:i(3)}},ec50:function(e,t,n){"use strict";n.r(t);var c=n("db85"),r={style:{"margin-top":"100px"}};function o(e,t){var n=Object(c["resolveComponent"])("ti"),o=Object(c["resolveComponent"])("a-table-column"),a=Object(c["resolveComponent"])("a-table"),u=Object(c["resolveComponent"])("a-input");return Object(c["openBlock"])(),Object(c["createBlock"])("div",r,[Object(c["createVNode"])(n,{title:e.title},null,8,["title"]),Object(c["createVNode"])("h3",null,"列表请求数据中..."+Object(c["toDisplayString"])(e.count)+"秒后显示",1),Object(c["createVNode"])(a,{"data-source":e.list,pagination:!1,style:{width:"60%",margin:"0 auto 30px"}},{default:Object(c["withCtx"])((function(){return[Object(c["createVNode"])(o,{key:"account",title:"account","data-index":"account"}),Object(c["createVNode"])(o,{key:"password",title:"password","data-index":"password"}),Object(c["createVNode"])(o,{key:"action","data-index":"action"},{default:Object(c["withCtx"])((function(t){var n=t.record;return[Object(c["createVNode"])("span",null,[Object(c["createVNode"])("a",{onClick:function(t){return e.goToLink(n.id)}},"详情",8,["onClick"])])]})),_:1})]})),_:1},8,["data-source"]),Object(c["createVNode"])(u,{type:"text",value:e.leftValue,"onUpdate:value":t[1]||(t[1]=function(t){return e.leftValue=t}),placeholder:"leftValue",style:{width:"100px"}},null,8,["value"]),Object(c["createVNode"])(u,{type:"text",value:e.rightValue,"onUpdate:value":t[2]||(t[2]=function(t){return e.rightValue=t}),placeholder:"rightValue",style:{width:"100px"}},null,8,["value"]),Object(c["createVNode"])("div",null," 计算属性输出的结果是:"+Object(c["toDisplayString"])(e.resultValue),1)])}n("513c");var a=n("e793");function u(e,t){return Object(c["openBlock"])(),Object(c["createBlock"])("div",null,Object(c["toDisplayString"])(e.title),1)}var i={props:{title:String}};n("1664");i.render=u;var l=i,s={name:"accountList",components:{ti:l},setup:function(e,t){console.log("propss,context",e,t);var n=Object(c["reactive"])({title:"我是子组件的值",list:[],count:3,leftValue:0,rightValue:0,resultValue:Object(c["computed"])((function(){return Number(n.leftValue)+Number(n.rightValue)}))}),r=Object(c["getCurrentInstance"])(),o=r.ctx;function u(e){o.$router.push({path:"/accountList/detail",query:{id:e}})}function i(){var e=setInterval((function(){n.count--,n.count<1&&clearInterval(e)}),1e3);console.log("请求列表数据");var t=setTimeout((function(){n.list=[{id:1,account:"admin",password:"111111"},{id:2,account:"chushi",password:"chushi-111"},{id:3,account:"six",password:"666"}],clearTimeout(t)}),2e3)}return console.log("列表实例",o),Object(c["onMounted"])((function(){i()})),Object(a["a"])(Object(a["a"])({},Object(c["toRefs"])(n)),{},{goToLink:u})}};s.render=o;t["default"]=s},fc8c:function(e,t){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"}}]); 2 | //# sourceMappingURL=chunk-ae526aec.09ee93f5.js.map -------------------------------------------------------------------------------- /dist/js/chunk-ae526aec.09ee93f5.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/views/layout/accountList/component/title.vue?536e","webpack:///./node_modules/_core-js@3.6.5@core-js/modules/es.number.constructor.js","webpack:///./node_modules/_core-js@3.6.5@core-js/internals/inherit-if-required.js","webpack:///./node_modules/_core-js@3.6.5@core-js/internals/string-trim.js","webpack:///./src/views/layout/accountList/accountList.vue","webpack:///./src/views/layout/accountList/component/title.vue","webpack:///./src/views/layout/accountList/component/title.vue?0bdf","webpack:///./src/views/layout/accountList/accountList.vue?0ab9","webpack:///./node_modules/_core-js@3.6.5@core-js/internals/whitespaces.js"],"names":["DESCRIPTORS","global","isForced","redefine","has","classof","inheritIfRequired","toPrimitive","fails","create","getOwnPropertyNames","f","getOwnPropertyDescriptor","defineProperty","trim","NUMBER","NativeNumber","NumberPrototype","prototype","BROKEN_CLASSOF","toNumber","argument","first","third","radix","maxCode","digits","length","index","code","it","charCodeAt","NaN","slice","parseInt","key","NumberWrapper","value","arguments","dummy","this","valueOf","call","keys","split","j","constructor","isObject","setPrototypeOf","module","exports","$this","Wrapper","NewTarget","NewTargetPrototype","requireObjectCoercible","whitespaces","whitespace","ltrim","RegExp","rtrim","createMethod","TYPE","string","String","replace","start","end","style","title","count","data-source","list","pagination","data-index","record","goToLink","id","type","leftValue","placeholder","rightValue","resultValue","props","render","name","components","setup","context","console","log","state","Number","ctx","$router","push","path","query","getList","timer1","setInterval","clearInterval","timer2","setTimeout","account","password","clearTimeout"],"mappings":"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","file":"js/chunk-ae526aec.09ee93f5.js","sourcesContent":["export { default } from \"-!../../../../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./title.vue?vue&type=style&index=0&lang=css\"; export * from \"-!../../../../../node_modules/_mini-css-extract-plugin@0.9.0@mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../../node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/stylePostLoader.js!../../../../../node_modules/_postcss-loader@3.0.0@postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../../node_modules/_cache-loader@4.1.0@cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/_vue-loader-v16@16.0.0-beta.5.4@vue-loader-v16/dist/index.js??ref--0-1!./title.vue?vue&type=style&index=0&lang=css\"","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.github.io/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.github.io/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","var isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","\r\n\r\n\n","\r\n\r\n\r\n\r\n\n","import { render } from \"./title.vue?vue&type=template&id=faa84016\"\nimport script from \"./title.vue?vue&type=script&lang=js\"\nexport * from \"./title.vue?vue&type=script&lang=js\"\n\nimport \"./title.vue?vue&type=style&index=0&lang=css\"\nscript.render = render\n\nexport default script","import { render } from \"./accountList.vue?vue&type=template&id=287633f5\"\nimport script from \"./accountList.vue?vue&type=script&lang=js\"\nexport * from \"./accountList.vue?vue&type=script&lang=js\"\nscript.render = render\n\nexport default script","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue3-admin-template", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "ant-design-vue": "^2.0.0-beta.7", 12 | "axios": "^0.20.0", 13 | "core-js": "^3.6.5", 14 | "vue": "^3.0.0-0", 15 | "vue-loader-v16": "^16.0.0-beta.5.4", 16 | "vue-router": "^4.0.0-0", 17 | "vuex": "^4.0.0-0" 18 | }, 19 | "devDependencies": { 20 | "@vue/cli-plugin-babel": "~4.5.0", 21 | "@vue/cli-plugin-eslint": "~4.5.0", 22 | "@vue/cli-plugin-router": "~4.5.0", 23 | "@vue/cli-plugin-vuex": "~4.5.0", 24 | "@vue/cli-service": "~4.5.0", 25 | "@vue/compiler-sfc": "^3.0.0-0", 26 | "babel-eslint": "^10.1.0", 27 | "eslint": "^6.7.2", 28 | "eslint-plugin-vue": "^7.0.0-0", 29 | "less": "^3.0.4", 30 | "less-loader": "^5.0.0" 31 | }, 32 | "eslintConfig": { 33 | "root": true, 34 | "env": { 35 | "node": true 36 | }, 37 | "extends": [ 38 | "plugin:vue/vue3-essential", 39 | "eslint:recommended" 40 | ], 41 | "parserOptions": { 42 | "parser": "babel-eslint" 43 | }, 44 | "rules": {} 45 | }, 46 | "browserslist": [ 47 | "> 1%", 48 | "last 2 versions", 49 | "not dead" 50 | ] 51 | } 52 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/parchments/vue3-admin-template/b3f9271e0dd06b251296fe1a084ece9ea75acffb/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/api/api.js: -------------------------------------------------------------------------------- 1 | //接口地址 2 | import systemManageApi from './systemManage' //系统管理 3 | import commonApi from './common' //公用接口 4 | 5 | const api = { 6 | ...systemManageApi, 7 | ...commonApi 8 | } 9 | export default api 10 | -------------------------------------------------------------------------------- /src/api/common.js: -------------------------------------------------------------------------------- 1 | import axios from '../request/http' 2 | let baseURL = process.env.VUE_APP_BASEURL 3 | 4 | //公用 5 | const commonApi = { 6 | common: { 7 | //上传 8 | uploadFile(params, config) { 9 | return axios.post(baseURL + 'rest/menu/insertMenu', params, config) 10 | } 11 | } 12 | } 13 | export default commonApi 14 | -------------------------------------------------------------------------------- /src/api/systemManage.js: -------------------------------------------------------------------------------- 1 | import axios from '../request/http' 2 | let baseURL = process.env.VUE_APP_BASEURL 3 | 4 | //系统管理 5 | const systemManageApi = { 6 | systemManage: { 7 | //列表 8 | getList(params) { 9 | return axios.post(baseURL + 'rest/menu/insertMenu', params) 10 | }, 11 | //新增 12 | add(params) { 13 | return axios.post(baseURL + 'rest/menu/insertMenu', params) 14 | }, 15 | //编辑 16 | edit(params) { 17 | return axios.post(baseURL + 'rest/menu/insertMenu', params) 18 | }, 19 | //修改密码 20 | changePassword(params) { 21 | return axios.post(baseURL + 'rest/menu/insertMenu', params) 22 | } 23 | } 24 | } 25 | export default systemManageApi 26 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/parchments/vue3-admin-template/b3f9271e0dd06b251296fe1a084ece9ea75acffb/src/assets/logo.png -------------------------------------------------------------------------------- /src/components/nav - 副本.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /src/components/nav.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 15 | 29 | -------------------------------------------------------------------------------- /src/config/config.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | let config = { 3 | /* 4 | * 后台返回状态码 5 | * RET_CODE: 0代表失败 1代表成功 6 | */ 7 | RET_CODE: { 8 | SUCCESS_CODE: 1,//后台返回成功的状态码 9 | ERROR_CODE: 0,//后台返回失败的状态码 10 | }, 11 | //分页设置 12 | paginationParams: { 13 | pageSize: 10,//每页的数量 14 | pageNo: 1,//当前页码 15 | size: 10,//当前页的数量 16 | total: 0, //总条数 17 | pages: 0,//总页码数 18 | } 19 | } 20 | export default config 21 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import Antd from 'ant-design-vue' 6 | import 'ant-design-vue/dist/antd.css' 7 | 8 | import api from "./api/api" 9 | import config from "./config/config" 10 | import axios from './request/http' 11 | 12 | const app = createApp(App) 13 | 14 | //全局挂载 组件内通过const { ctx } = getCurrentInstance();获取 15 | app.config.globalProperties.$api = api 16 | app.config.globalProperties.$config = config 17 | app.config.globalProperties.$axios = axios 18 | 19 | app.use(Antd).use(store).use(router).use(api).mount('#app') -------------------------------------------------------------------------------- /src/request/http.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 封装 3 | * 请求拦截、响应拦截、错误统一处理 4 | */ 5 | import axios from 'axios' 6 | import router from '../router/index' 7 | 8 | /** 9 | * 跳转登录页 10 | * 携带当前页面路由,以期在登录页面完成登录后返回当前页面 11 | */ 12 | let toLogin = () => { 13 | router.push({ 14 | path: '/login', 15 | query: { 16 | redirect: router.currentRoute.fullPath 17 | } 18 | }) 19 | } 20 | 21 | // 创建axios实例 22 | let instance = axios.create({ 23 | timeout: 3000000, //请求超时时间 24 | }); 25 | 26 | /** 27 | * 请求拦截器 28 | * 每次请求前,如果存在token则在请求头中携带token 29 | */ 30 | instance.interceptors.request.use( 31 | config => { 32 | //登录流程控制中,根据本地是否存在token判断用户的登录情况 33 | //但是即使token存在,也有可能token是过期的,所以在每次的请求头中携带token 34 | //后台根据携带的token判断用户的登录情况,并返回给我们对应的状态码 35 | //而后我们可以在响应拦截器中,根据状态码进行一些统一的操作。 36 | //用户信息 37 | let userInfo = ''; 38 | if (localStorage.userInfo) { 39 | userInfo = localStorage.userInfo 40 | } else { 41 | userInfo = ''; 42 | } 43 | 44 | //token 45 | let token = ''; 46 | if (localStorage.token) { 47 | token = localStorage.token 48 | } else { 49 | token = ''; 50 | } 51 | //设置统一请求头 52 | config.headers = { 53 | 'Content-Type': 'application/json', 54 | 'token': token, 55 | 'userInfo': userInfo 56 | } 57 | return config; 58 | }, 59 | error => Promise.error(error) 60 | ) 61 | 62 | /** 63 | * 请求失败后的错误统一处理 64 | * @param {Number} status 请求失败的状态码 65 | */ 66 | let errorHandle = (status, other) => { 67 | //状态码判断 68 | switch (status) { 69 | case 400: 70 | console.log('客户端请求的语法错误,服务器无法理解') 71 | break; 72 | case 401: 73 | // ViewUI.Message.error('请重新登录'); 74 | localStorage.clear(); 75 | setTimeout(() => { 76 | toLogin(); //跳转到登录 77 | }, 3000); 78 | break; 79 | case 404: 80 | break; 81 | case 408: 82 | break; 83 | case 500: 84 | console.log(other); 85 | // ViewUI.Message.error('网络异常,稍后重试'); 86 | break; 87 | default: 88 | console.log(other); 89 | } 90 | } 91 | 92 | //响应拦截器 93 | instance.interceptors.response.use( 94 | //请求成功 95 | res => { 96 | if (res.status === 200) { 97 | return Promise.resolve(res) //Promise.resolve(value)方法返回一个以给定值解析后的Promise 对象。 98 | } else { 99 | console.log("响应拦截器失败"); 100 | return Promise.reject(res) //Promise.reject(reason)方法返回一个带有拒绝原因reason参数的Promise对象。 101 | } 102 | }, 103 | //请求失败 104 | error => { 105 | //return Promise.reject(error); 106 | const { response } = error; 107 | if (response) { 108 | //请求已发出,但是不在2xx的范围 ------错误处理、token过期等 109 | console.log(response); 110 | errorHandle(response.status, response.data.message); 111 | return Promise.reject(response); 112 | } else { 113 | // 处理断网的情况 114 | // ViewUI.Message.error('网络异常,稍后重试'); 115 | } 116 | } 117 | ); 118 | export default instance; 119 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from 'vue-router' 2 | 3 | const routes = [{ 4 | path: '/', 5 | redirect: '/home' 6 | }, 7 | { 8 | path: '/login', 9 | name: 'login', 10 | component: () => import('../views/login.vue') 11 | }, 12 | { 13 | path: '/home', 14 | name: 'home', 15 | component: () => import('../views/layout/home.vue'), 16 | children: [{ 17 | path: '/index', 18 | name: 'index', 19 | component: () => import('../views/layout/index/index.vue') 20 | },{ 21 | path: '/accountList', 22 | name: 'accountList', 23 | component: () => import('../views/layout/accountList/accountList.vue') 24 | },{ 25 | path: '/accountList/detail', 26 | name: 'detail', 27 | component: () => import('../views/layout/detail/detail.vue') 28 | }] 29 | }, 30 | ] 31 | 32 | const router = createRouter({ 33 | history: createWebHistory(process.env.BASE_URL), 34 | routes 35 | }) 36 | 37 | export default router 38 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex' 2 | 3 | export default createStore({ 4 | state: { 5 | }, 6 | mutations: { 7 | }, 8 | actions: { 9 | }, 10 | modules: { 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /src/views/layout/accountList/accountList.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 150 | -------------------------------------------------------------------------------- /src/views/layout/accountList/component/title.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 17 | -------------------------------------------------------------------------------- /src/views/layout/detail/detail.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 32 | -------------------------------------------------------------------------------- /src/views/layout/home.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 46 | -------------------------------------------------------------------------------- /src/views/layout/index/index.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 29 | -------------------------------------------------------------------------------- /src/views/login.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 103 | 115 | --------------------------------------------------------------------------------