{"id":17798246,"url":"https://github.com/fengwenyi/vue-admin-pro","last_synced_at":"2025-03-17T04:33:40.723Z","repository":{"id":105508917,"uuid":"191085738","full_name":"fengwenyi/vue-admin-pro","owner":"fengwenyi","description":"【停止维护】请移步：erwin-admin-sample。","archived":false,"fork":false,"pushed_at":"2022-04-20T17:44:54.000Z","size":5412,"stargazers_count":90,"open_issues_count":0,"forks_count":46,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-27T18:12:33.411Z","etag":null,"topics":["iview","iview-admin","viewui","vue"],"latest_commit_sha":null,"homepage":"https://github.com/fengwenyi/erwin-admin-sample","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fengwenyi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-10T02:52:53.000Z","updated_at":"2024-06-28T04:45:17.000Z","dependencies_parsed_at":null,"dependency_job_id":"b48569e5-763b-43e5-8a1f-936bb59eed41","html_url":"https://github.com/fengwenyi/vue-admin-pro","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fengwenyi%2Fvue-admin-pro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fengwenyi%2Fvue-admin-pro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fengwenyi%2Fvue-admin-pro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fengwenyi%2Fvue-admin-pro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fengwenyi","download_url":"https://codeload.github.com/fengwenyi/vue-admin-pro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243846976,"owners_count":20357294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["iview","iview-admin","viewui","vue"],"created_at":"2024-10-27T12:00:08.453Z","updated_at":"2025-03-17T04:33:40.716Z","avatar_url":"https://github.com/fengwenyi.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  Vue Admin Pro\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e基于iView-Admin，最懂后端程序员的后台管理系统，View UI 4.7.0\u003c/strong\u003e\n\u003c/p\u003e\n\nVue Admin Pro，这是一个简单的后端管理系统，适用于后端程序员写一写简单的后端管理系统，逻辑较简单，也不涉及权限只有简单的登录Token认证。\n\n## 预览\n\n2020，再次优化了登录页，增加了校验\n\n![重写登录页面](./images/login-2020.png)\n\n\u003e 预览图 https://images.fengwenyi.com/1247653275613884417\n\n## 目录\n\n```\n.\n├── LICENSE\n├── README.md   // 说明\n├── cypress.json\n├── images      // github图片说明\n│   └── login.png // 登录图\n├── package.json  // 依赖包\n├── public\n│   ├── favicon.png  // 浏览器图标\n│   └── index.html   // 首页index代码\n├── src\n│   ├── App.vue     // App\n│   ├── api           // 与服务器交互的接口存放位置\n│   │   ├── data.js   // 数据接口示例\n│   │   └── login.js  // 登录/登出 接口\n│   ├── assets        // 资源 字体，图片，图标等\n│   │   ├── fonts     // 字体\n│   │   ├── icons     // 图标\n│   │   └── images    // 图片\n│   ├── components    // 组件\n│   │   ├── charts\n│   │   ├── common\n│   │   ├── common-icon\n│   │   ├── count-to\n│   │   ├── cropper\n│   │   ├── drag-drawer\n│   │   ├── drag-list\n│   │   ├── editor\n│   │   ├── icons\n│   │   ├── info-card\n│   │   ├── login-form  // 登录表单组件\n│   │   ├── main\n│   │   ├── markdown\n│   │   ├── parent-view\n│   │   ├── paste-editor\n│   │   ├── split-pane\n│   │   ├── tables       // table组件\n│   │   └── tree-select\n│   ├── config           // 配置\n│   │   └── index.js\n│   ├── directive\n│   │   ├── directives.js\n│   │   ├── index.js\n│   │   └── module\n│   ├── index.less        // index的样式文件\n│   ├── libs                // 库\n│   │   ├── api.request.js  // api\n│   │   ├── axios.js        // axios\n│   │   ├── excel.js\n│   │   ├── render-dom.js\n│   │   ├── tools.js\n│   │   └── util.js\n│   ├── locale              // 国际化\n│   │   ├── index.js\n│   │   └── lang            // 多语言\n│   ├── main.js             // main\n│   ├── mock                // 模拟后端接口\n│   │   ├── data\n│   │   ├── data.js         // 数据接口\n│   │   ├── index.js        // index\n│   │   ├── login.js        // 登录接口\n│   │   └── user.js         // 用户接口\n│   ├── plugin\n│   │   ├── error-store\n│   │   └── index.js\n│   ├── router              // 路由\n│   │   ├── before-close.js\n│   │   ├── index.js        // 路由策略\n│   │   └── routers.js      // 路由配置\n│   ├── store               // 全局存储\n│   │   ├── index.js        // index\n│   │   └── module          // Module\n│   └── view                // 前端页面\n│       ├── Home            // 首页\n│       ├── Login           // 登录页\n│       └── Table           // 表单也示例\n├── tests\n│   ├── e2e\n│   │   ├── plugins\n│   │   ├── specs\n│   │   └── support\n│   └── unit\n│       └── HelloWorld.spec.js\n└── vue.config.js           // vue 配置\n```\n\n## 登录\n\n路径：\n\n```\nsrc/api/login.js\n```\n\n内容：\n\n```javascript\nimport axios from '@/libs/api.request'\n\n/**\n * 登录\n * @param account\n * @param password\n * @returns {http.ClientRequest | ClientHttp2Stream | * | never | AxiosPromise\u003cany\u003e}\n */\nexport const login = (account, password) =\u003e {\n  const data = {\n    account,\n    password\n  }\n  return axios.request({\n    url: 'auth/login',\n    method: 'post',\n    dataType: 'json',\n    headers: {\n      'Content-Type': 'application/json; charset=UTF-8'\n    },\n    data: data\n  })\n}\n\n/**\n * 退出登录\n * @param token\n * @returns {http.ClientRequest | ClientHttp2Stream | * | never | AxiosPromise\u003cany\u003e}\n */\nexport const logout = (token) =\u003e {\n  const data = {}\n  return axios.request({\n    url: 'auth/logout',\n    method: 'get',\n    dataType: 'json',\n    headers: {\n      'Content-Type': 'application/json; charset=UTF-8',\n      'token': token\n    },\n    data: data\n  })\n}\n\n```\n\n接口写法\n\n```java\nimport com.fengwenyi.vueadminproapi.entity.Login;\nimport net.iutil.ApiResult;\nimport org.springframework.http.MediaType;\nimport org.springframework.util.StringUtils;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.UUID;\n\n/**\n * 认证\n * @author Erwin Feng\n * @since 2019-06-08 10:21\n */\n@RestController\n@RequestMapping(value = \"/auth\",\n        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,\n        produces = MediaType.APPLICATION_JSON_UTF8_VALUE)\npublic class AuthController {\n\n    @PostMapping(\"/login\")\n    public ApiResult login(@RequestBody Login login) {\n        String account = login.getAccount();\n        String password = login.getPassword();\n        if (StringUtils.isEmpty(account))\n            return ApiResult.error().setCode(10001).setMsg(\"账号不能为空\");\n        if (StringUtils.isEmpty(password))\n            return ApiResult.error().setCode(10002).setMsg(\"密码不能为空\");\n        if (!account.equals(\"admin\"))\n            return ApiResult.error().setCode(10003).setMsg(\"账号不存在\");\n        if (!password.equals(\"admin@1234\"))\n            return ApiResult.error().setCode(10004).setMsg(\"密码不正确\");\n        Map\u003cString, String\u003e map = new HashMap\u003c\u003e();\n        map.put(\"token\", UUID.randomUUID().toString());\n        map.put(\"uid\", UUID.randomUUID().toString());\n        return ApiResult.success(map);\n    }\n\n    @GetMapping(\"/logout\")\n    public ApiResult logout(@RequestHeader String token) {\n        return ApiResult.success();\n    }\n\n}\n```\n\n## 接口示例\n\n[点此处传送门](https://github.com/fengwenyi/APIExample)\n\n## token\n\ntoken格式推荐：`uid_token`\n\n在API请求的时候如何携带发起请求？\n\n如下示例：\n\n```javascript\nimport axios from '@/libs/api.request'\nimport { getToken } from '@/libs/util'\n\nexport const data = (d1, d2) =\u003e {\n  const data = {\n    d1,\n    d2\n  }\n  return axios.request({\n    url: 'auth/login',\n    method: 'post',\n    dataType: 'json',\n    headers: {\n      'Content-Type': 'application/json; charset=UTF-8',\n      'token': getToken()\n    },\n    data: data\n  })\n}\n```\n\n## API请求\n\n重新封装API接口请求\n\n[sess request.js](https://github.com/PanJiaChen/vue-element-admin/blob/master/src/utils/request.js)\n\n\n示例\n\n```javascript\nimport request from '@/libs/request'\n\nexport function apiDataTest (data) {\n  const param = JSON.stringify(data)\n  return request({\n    url: '/data/test',\n    method: 'post',\n    data: param\n  })\n}\n```\n\n配置：\n\n```javascript\nexport default {\n  // ...\n  /**\n   * 接口请求配置\n   */\n  api: {\n    /**\n     * header配置\n     */\n    header: {\n      /**\n       * 是否携带token(当token存在时)\n       */\n      token: true,\n      /**\n       * 自定义token key\n       */\n      tokenKey: 'token',\n      /**\n       * 是否采用JSON方式提交\n       */\n      json: true\n    }\n  }\n}\n```\n\n接口示例代码：\n\n[DataController.java](https://github.com/fengwenyi/vue-admin-pro-api/blob/master/src/main/java/com/fengwenyi/vueadminproapi/controller/DataController.java)\n\n```java\npackage com.fengwenyi.vueadminproapi.controller;\n\nimport lombok.extern.slf4j.Slf4j;\nimport net.iutil.ApiResult;\nimport org.springframework.http.MediaType;\nimport org.springframework.web.bind.annotation.*;\n\n/**\n * @author Erwin Feng\n * @since 2019-07-29 09:31\n */\n@Slf4j\n@RestController\n@RequestMapping(value = \"/data\",\n        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,\n        produces = MediaType.APPLICATION_JSON_UTF8_VALUE)\npublic class DataController {\n\n    @PostMapping(\"/test\")\n    public ApiResult test(@RequestHeader String token, @RequestBody Object data) {\n        log.info(\"token: {}\", token);\n        log.info(\"data: {}\", data);\n        return ApiResult.success(\"这是服务响应的数据-test\");\n    }\n\n}\n```\n\n## 资料\n\n- [View UI](https://www.iviewui.com/)\n- [iview-admin文档](https://lison16.github.io/iview-admin-doc/#/)\n- [更新日志](LOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffengwenyi%2Fvue-admin-pro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffengwenyi%2Fvue-admin-pro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffengwenyi%2Fvue-admin-pro/lists"}