zoukankan      html  css  js  c++  java
  • ant-design-pro-vue 开发笔记(二)配置连接后台数据库

    1、vue.config.js   (后台使用phalapi)

    devServer: {
        // development server port 8000 
        port: 8000,
          // TODO api proxy 关于api请求代理: 如果期望启用代理,请删除mockjs的配置 mockjs /src/main.js
        proxy: {
          '/api': {
          target: 'http://127.0.0.1:8082/phalapi/public/',
          ws: false,
          changeOrigin: true,  //开启代理,是否跨域
          pathRewrite: {
            '^/api': ''  //需要rewrite的
          }
          }
         }
      }

     2、src/main.js 注释掉mock

    //import './mock'

    3、src/api/login.js  修改api

    export function login (parameter) {
      return axios({
        //url: '/auth/login',
        url: '?service=App.User.login',
        method: 'post',
        data: parameter
      })
    }

     4、修改.env

    # 当使用代理方式访问web api时, 此变量指定所有的api请求的uri前缀
    VUE_APP_API_BASE_URL=/api
    

    5、后台App.User.login接口返回的数据:

    {
        "ret": 200,
        "data": {
            "title": "Hello World!",
            "token": "afsd123123123123123123",
            "avatar": "https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png",
            "createTime": "1497160610259",
            "creatorId": "admin",
            "deleted": "0",
            "id": "7DEadbb2-F6d7-e08D-FA70-EEbBb132f91D",
            "lang": "zh-CN",
            "lastLoginIp": "27.154.74.117",
            "lastLoginTime": "1534837621348",
            "name": "Jennifer Young",
            "roleId": "admin",
            "username": "admin"
        },
        "msg": ""
    }
    

    6、src/store/modules/user.js 修改前台的获取数据:

    // TODO login 登录:这里执行真正的登录逻辑
        Login ({ commit }, userInfo) {
          return new Promise((resolve, reject) => {
            login(userInfo).then(response => {
              //const result = response.result
              const result = response.data
              console.log(result)
              // TODO login 登录:token的作用, 只是用于判断用户是否登录, 无其它作用
              Vue.ls.set(ACCESS_TOKEN, result.username, 7 * 24 * 60 * 60 * 1000)
              commit('SET_TOKEN', result.username)
              resolve()
            }).catch(error => {
              reject(error)
            })
          })
        },

    7、后台App.User.info接口返回的数据:

    {
        "ret": 200,
        "data": {
            "id": "4291d7da9005377ec9aec4a71ea837f",
            "name": "管理员",
            "username": "admin",
            "password": "",
            "avatar": "https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png",
            "status": "1",
            "telephone": "",
            "lastLoginIp": "27.154.74.117",
            "lastLoginTime": "1534837621348",
            "creatorId": "admin",
            "createTime": "1497160610259",
            "merchantCode": "TLif2btpzg079h15bk",
            "deleted": "0",
            "roleList": [
                "admin",
                "company-admin"
            ],
            "funPermissionList": [
                "user_add",
                "user_delete"
            ],
            "menuPermissionList": [
                "fun-permission",
                "dashboard",
                "form",
                "table",
                "profile",
                "result",
                "exception",
                "user",
                "dashboard",
                "support"
            ],
            "menuTree": [
                {
                    "path": "/welcome/index",
                    "flag": "welcome",
                    "title": "menu:welcome",
                    "icon": "smile"
                },
                {
                    "path": "/dashboard",
                    "flag": "dashboard",
                    "title": "menu:dashboard",
                    "icon": "eye",
                    "children": [
                        {
                            "path": "/dashboard/analysis",
                            "flag": "analysis",
                            "title": "menu:analysis"
                        },
                        {
                            "path": "https://www.baidu.com/",
                            "flag": "monitor",
                            "title": "menu:monitor"
                        },
                        {
                            "path": "/dashboard/workplac",
                            "flag": "workplac",
                            "title": "menu:workplac"
                        },
                        {
                            "path": "/other/test",
                            "flag": "test",
                            "title": "menu:test"
                        }
                    ]
                },
                {
                    "path": "/form",
                    "flag": "form",
                    "title": "menu:form",
                    "icon": "form",
                    "children": [
                        {
                            "path": "/form/base-form",
                            "flag": "BaseForm",
                            "title": "menu:BaseForm"
                        },
                        {
                            "path": "/form/step-form",
                            "flag": "StepForm",
                            "title": "menu:StepForm"
                        },
                        {
                            "path": "/form/advanced-form",
                            "flag": "AdvancedForm",
                            "title": "menu:AdvancedForm"
                        },
                        {
                            "path": "/form/other-form",
                            "flag": "OtherForm",
                            "title": "menu:OtherForm"
                        }
                    ]
                }
            ]
        },
        "msg": ""
    }

    8、src/api/login.js  修改api

    export function getInfo (username) {
      return axios({
        //url: '/user/info',
        url: '?service=App.User.info',
        method: 'post',
        data: {
          username
        },
        headers: {
          'Content-Type': 'application/json;charset=UTF-8'
        }
      })
    }

     9、src/store/modules/user.js 修改前台的获取数据:

    // 获取用户信息
        GetInfo ({ commit }) {
          return new Promise((resolve, reject) => {
            // TODO login 登录:登录成功之后, GetInfo获取用户基本信息
            getInfo(Vue.ls.get(ACCESS_TOKEN)).then(response => {
              commit('SET_LOADED_USER_INFO_FROM_BACKEND', true)
              //const result = response.result
              const result = response.data
              commit('SET_ROLES', result.roleList)
              // 缓存功能权限
              commit('SET_FUN_PERMISSIONS', result.funPermissionList)
              // 缓存路由权限
              commit('SET_ROUTER_PERMISSIONS', result.menuPermissionList)
    
              // TODO 构建动态菜单
              // 设置用户动态菜单(这是由服务器返回的动态菜单), 一般来说您的数据结构和我这肯定是不一样的. 因此可以在这里进行转换, 转换成功完成之后, 再执行下面的`SET_MENU_TREE`方法
              commit('SET_MENU_TREE', result.menuTree)
    
              // 设置用户信息
              commit('SET_INFO', result)
              // 用户姓名
              // TODO login tips 修改登录成功之后的提示语
              commit('SET_NAME', { name: result.name, welcome: welcome() })
              // 用户图片
              commit('SET_AVATAR', result.avatar)
    
              resolve(response)
            }).catch(error => {
              reject(error)
            })
          })
        },

      10、src/permission.js 修改前台的获取数据:

    // TODO login 登录:用户已登录, 但尚未获取到用户信息
          if (!store.getters.loadedUserInfoFromBackend) {
            // TODO login 登录:登录成功之后, GetInfo获取用户基本信息
            store
              .dispatch('GetInfo')
              .then(res => {
                console.log('permission.js,res:'+JSON.stringify(res))
                //const menuPermissionList = res.result && res.result.menuPermissionList
                const menuPermissionList = res.data && res.data.menuPermissionList
                console.log('permission.js,res.result.menuPermissionList'+menuPermissionList)
                // TODO login 登录:用户基本信息获取成功之后, 获取路由信息(菜单信息)
                store.dispatch('GenerateRoutes', { menuPermissionList }).then(() => {
                  // 根据菜单标识集合生成可访问的路由表
                  // 动态添加可访问路由表
                  router.addRoutes(store.getters.addRouters)
                  // TODO login 登录:获取url中的redirect参数,有redirect参数值,则转入redirect指定的界面
                  const redirect = decodeURIComponent(from.query.redirect || to.path)
                  if (to.path === redirect) {
                    // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
                    next({ ...to, replace: true })
                  } else {
                    // 跳转到目的路由
                    next({ path: redirect })
                  }
                })
              })
              .catch(() => {
                // TODO login 登录:用户基本信息获取失败的处理
                notification.error({
                  message: '错误',
                  description: '请求用户信息失败,请重试'
                })
                store.dispatch('Logout').then(() => {
                  next({ path: '/user/login', query: { redirect: to.fullPath } })
                })
              })
          } else {
            next()
          }

    11、phalapi后台代码:

    public function info() {
            // $username = $this->username;   // 账号参数
            // $password = $this->password;   // 密码参数
            // 更多其他操作……
    
            $roleList=array('admin','company-admin');
            $funPermissionList=array('user_add','user_delete');
            $menuPermissionList=array('fun-permission','dashboard','form','table','profile','result','exception','user','dashboard','support');
            $menuTree=array(array('path'=>'/welcome/index','flag'=>'welcome','title'=>'menu:welcome','icon'=>'smile'),array('path'=>'/dashboard','flag'=>'dashboard','title'=>'menu:dashboard','icon'=>'eye','children'=>array(array('path'=>'/dashboard/analysis','flag'=>'analysis','title'=>'menu:analysis'),array('path'=>'https://www.baidu.com/','flag'=>'monitor','title'=>'menu:monitor'),array('path'=>'/dashboard/workplac','flag'=>'workplac','title'=>'menu:workplac'),array('path'=>'/other/test','flag'=>'test','title'=>'menu:test'))),array('path'=>'/form','flag'=>'form','title'=>'menu:form','icon'=>'form','children'=>array(array('path'=>'/form/base-form','flag'=>'BaseForm','title'=>'menu:BaseForm'),array('path'=>'/form/step-form','flag'=>'StepForm','title'=>'menu:StepForm'),array('path'=>'/form/advanced-form','flag'=>'AdvancedForm','title'=>'menu:AdvancedForm'),array('path'=>'/form/other-form','flag'=>'OtherForm','title'=>'menu:OtherForm'))));
            
          
    
            return array('id' => '4291d7da9005377ec9aec4a71ea837f','name'=>'管理员','username'=>'admin','password'=>'','avatar'=>'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png','status'=>'1','telephone'=>'','lastLoginIp'=>'27.154.74.117','lastLoginTime'=>'1534837621348','creatorId'=>'admin','createTime'=>'1497160610259','merchantCode'=>'TLif2btpzg079h15bk','deleted'=>'0','roleList'=>$roleList,'funPermissionList'=>$funPermissionList,'menuPermissionList'=>$menuPermissionList,'menuTree'=>$menuTree);
        }
  • 相关阅读:
    localhost/127.0.0.1:8080
    android要注意的小问题
    2016年度工作计划
    2016年度计划总结
    竞品分析的思路
    《竞品调研:抄也是一门学问》学习总结
    书籍名单
    2015年度计划-总结
    以前的博客
    和老板沟通学习记录
  • 原文地址:https://www.cnblogs.com/windok/p/12525891.html
Copyright © 2011-2022 走看看