第九章 封装mock模块

574 阅读2分钟

待修复

一、在mock,新建index.js

import Mock from 'mockjs'
import {baseUrl} from '@/utils/global'

import * as login from './modules/login'
import * as user from './modules/user'
import * as dept from './modules/dept'
import * as role from './modules/role'
import * as menu from './modules/menu'
import * as dict from './modules/dict'
import * as config from './modules/config'
import * as log from './modules/log'
import * as loginlog from './modules/loginlog'

//1.开启/关闭【所有模块】拦截,通过调用【openMock参数】设置
//2.开启/关闭【业务模块】拦截,通过调用fnCreate方法【isOpen参数】设置
//3.开启/关闭【业务模块中某个请求】拦截,通过函数返回对象中的【isOpen属性】设置

let openMock = true;
//let openMock = false;
fnCreate(login,openMock);
fnCreate(user,openMock);
fnCreate(dept,openMock);
fnCreate(role,openMock);
fnCreate(menu,openMock);
fnCreate(dict,openMock);
fnCreate(config,openMock);
fnCreate(log,openMock);
fnCreate(loginlog,openMock);

/*
创建mock模拟数据
@param {*} mod模块
@param {*} isOpen是否开启?
*/

function fnCreate(mod,isOpen=true){
    if(isOpen){
        for(var key in mod){
            ((res)=>{
                if(res.isOpen!==false){
                    let url = baseUrl
                    if(!url,endsWith("/")){
                        url = url+'/'
                    }
                    url = url+res.url
                    Mock.mock(new RegExp(url),res.type,(opts)=>{
                        opts['data'] = opts.body ? JSON.parse(opts.body) : null
                        delete opts.body
                        console.log('\n');
                        console.log('%cmock拦截,请求:','color:bulue',opts);
                        console.log('%cmock拦截,响应:','color:blue',res.data);
                    })
                }
            })(mod[key]()|| {})
        }
    }
}

二、在modules,修改user.js

import axios from '../axios'

/*用户管理模块 */

//保存
export function save(){
    return {url:'/user/save',method:'post',data:{"code":200,"msg":null,"data":1}}
}
// export const save = (data) =>{
//     return axios({url:'/user/save',method:'post',data})
// }

//删除
export function batchDelete(){
    return {url:'/user/delete',method:'post',data:{"code":200,"msg":null,"data":1}}
}
// export const batchDelete = (data) =>{
//     return axios({url:'/user/delete',method:'post',data})
// }

//分页查询
export function findPage(params){
    let findPageData = {"code":200,"msg":null,"data":{}}
    let pageNum = 1;
    let pageSize = 8;
    let content = this.getContent(pageNum,pageSize);
    
    findPageDate.data.pageNum = pageNum;
    findPageDate.data.pageSize = pageSize;
    findPageDate.data.totalSize = 50;
    findPageDate.data.content = content;

    return {url:'/user/findPage',method:'post',data:findPageData}
}
// export const findPage = (data) =>{
//     return axios({url:'/user/findPage',method:'post',data})
// }

export function getContent(pageNum,pageSize){
    let content = [];
    for(let i=0; i<pageSize;i++){
        let obj = {};
        let index = ((pageNum-1)*pageSize)+i+1
         obj.id = index
         obj.name = "mango"+index
         obj.password = "9ec9750e709431dad22365cabc5c625482e"
         obj.salt = "YzcmCZNvbXorsz9dm8e"
         obj.email = "mango"+index+"@qq.com"
         obj.mobile = "18688982323"
         obj.status = 1
         obj.deptId = 12
         obj.deptName ="技术部"
         obj.status = 1
         if(i%2===0){
            obj.detId = 13
            obj.deptName = '市场部'
         }
         obj.createBy = "admin"
         obj.createTime = "2018-08-14 11:11:11"
         obj.createBy = "admin"
         obj.ctrateTime ="2018-09-14 12:12:12"
         content.push(obj)
    }
    return content
}

//查找用户的菜单权限标识集合
// export const findPermissions = (params) =>{
//     return axios({url:'/user/findPermissions',method:'get',params})
// }
export function findPermisstions(){
    let permsData = {"code":200,"msg":null,data:["sys:user:view","sys:menu:delete"]}
     return {url:'user/findPermissions',type:"get",data:permsData}
}