# service

服务层负责处理发起的请求, 并返回对服务端的响应。程序自动加载 service 下所有的模块。

我们来创建一个简单的用户服务类。

// @/service/system/user.js

import { BaseService, Service, Permission } from "@/cool";

@Service("sys/user")
export default extends BaseService {
    @Permission('start')
	start(data) {
		return this.request({
			url: '/start',
			method: 'POST',
			data
		});
	}
}
  • 这是一个基于 BaseService 的基本类,默认包含 page, add, update, delete, info, list 基本请求方式。

  • @Service 处理请求地址 ${baseUrl}/crm/user/${url}

  • @Permission 给接口添加权限。每一个 service 都有对应的 permission 对象,这是一个可控制接口权限的集合。

// 获取所有列表
list(params) {
    return this.request({
        url: '/list',
        params: {
            ...params
        }
    });
}

// 以分页类型获取对应列表
page(params) {
    return this.request({
        url: '/page',
        params: {
            ...params
        }
    });
}

// 获取选中的信息
info(params) {
    return this.request({
        url: '/info',
        params: {
            ...params
        }
    });
}

// 更新选中的信息
update(params) {
    return this.request({
        url: '/update',
        method: 'POST',
        data: {
            ...params
        }
    });
}

// 删除选择的数据,默认使用 ids: string
delete(params) {
    return this.request({
        url: '/delete',
        method: 'POST',
        data: {
            ...params
        }
    });
}

// 添加新数据
add(params) {
    return this.request({
        url: '/add',
        method: 'POST',
        data: {
            ...params
        }
    });
}

# use

如果文件名是 index,则绑定在上一级目录下,否则绑定为当前文件名。如:

  1. service/common/index.js
export default class extends BaseService {
	userLogin(params) {
		return this.request({
			url: "/comm/login",
			method: "POST",
			data: {
				...params
			}
		});
	}
}

// 使用

this.$service.common.userLogin({ account: "admin", password: "123456" });
  1. service/system/user.js
export default class extends BaseService {
	move(data) {
		return this.request({
			url: "/move",
			method: "POST",
			data
		});
	}
}

// 使用
this.$service.system.user.move();

# proxy

可针对不同 service 层配置不同代理,示例:

// /src/service/test/index.js
import { BaseService, Service } from "@/cool/index";

@Service({
    namespace: "sys/task",
    proxy: '/order'
})
export default extends BaseService {}

// vue.config.js
proxy: {
    '/order': {
        target: 'https://order.cool-admin.com',

        changeOrigin: true,
        pathRewrite: { '^/order': '/' }
    }
}

# request

详细看文件@/service/request.js,根据需求处理返回结果。

# --ignore

忽略 文件目录 的引入,如 /service/business/analy--fix.js