From 28acfdbb04cb12079981dc495d1f95f5c6cad0aa Mon Sep 17 00:00:00 2001 From: FairyEver <1711467488@qq.com> Date: Thu, 7 May 2020 15:49:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E8=AE=BE=E8=AE=A1,=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E7=9A=84=E7=BD=91=E7=BB=9C=E8=AF=B7=E6=B1=82=E4=BC=9A=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=B3=A8=E5=86=8C=E5=88=B0=20vue=20=E5=8E=9F=E5=9E=8B?= =?UTF-8?q?=20$api=20=E4=B8=8A,=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E6=97=A7=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/components.markdown.js | 9 ---- src/api/demo.business.issues.142.js | 18 -------- src/api/demo.business.table.1.js | 9 ---- src/api/demo.playground.log.ajax.js | 8 ---- src/api/demo.plugins.mocks.ajax.js | 8 ---- src/api/index.js | 7 +++ src/api/modules/component.markdown.js | 13 ++++++ src/api/modules/demo.js | 44 +++++++++++++++++++ src/api/modules/sys.user.js | 13 ++++++ src/{plugin/axios/index.js => api/service.js} | 30 +++++++------ src/api/sys.login.js | 9 ---- src/components/d2-markdown/index.vue | 3 +- src/plugin/api/index.js | 7 +++ src/plugin/d2admin/index.js | 2 + src/store/modules/d2admin/modules/account.js | 4 +- src/views/demo/business/issues/142/index.vue | 18 +++----- .../demo/business/issues/142/mixins/index.js | 6 +-- src/views/demo/business/table/1/index.vue | 3 +- src/views/demo/d2-crud/demo29/code.js | 4 +- src/views/demo/d2-crud/demo29/index.vue | 3 +- src/views/demo/playground/log/ajax/index.vue | 3 +- 21 files changed, 118 insertions(+), 103 deletions(-) delete mode 100644 src/api/components.markdown.js delete mode 100644 src/api/demo.business.issues.142.js delete mode 100644 src/api/demo.business.table.1.js delete mode 100644 src/api/demo.playground.log.ajax.js delete mode 100644 src/api/demo.plugins.mocks.ajax.js create mode 100644 src/api/index.js create mode 100644 src/api/modules/component.markdown.js create mode 100644 src/api/modules/demo.js create mode 100644 src/api/modules/sys.user.js rename src/{plugin/axios/index.js => api/service.js} (85%) delete mode 100644 src/api/sys.login.js create mode 100644 src/plugin/api/index.js diff --git a/src/api/components.markdown.js b/src/api/components.markdown.js deleted file mode 100644 index 338a1e22..00000000 --- a/src/api/components.markdown.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/plugin/axios' - -export function componentsMarkdownBase (url) { - return request({ - baseURL: process.env.BASE_URL, - url, - method: 'get' - }) -} diff --git a/src/api/demo.business.issues.142.js b/src/api/demo.business.issues.142.js deleted file mode 100644 index 279e878b..00000000 --- a/src/api/demo.business.issues.142.js +++ /dev/null @@ -1,18 +0,0 @@ -import request from '@/plugin/axios' - -export function fetch () { - return request({ - url: '/demo/business/issues/142/fetch', - method: 'get' - }) -} - -export function detail (id) { - return request({ - url: '/demo/business/issues/142/detail', - method: 'get', - params: { - id - } - }) -} diff --git a/src/api/demo.business.table.1.js b/src/api/demo.business.table.1.js deleted file mode 100644 index 0e47dbca..00000000 --- a/src/api/demo.business.table.1.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/plugin/axios' - -export function businessTable1List (params) { - return request({ - url: '/demo/business/table/1/fetch', - method: 'get', - params - }) -} diff --git a/src/api/demo.playground.log.ajax.js b/src/api/demo.playground.log.ajax.js deleted file mode 100644 index e5edc8a5..00000000 --- a/src/api/demo.playground.log.ajax.js +++ /dev/null @@ -1,8 +0,0 @@ -import request from '@/plugin/axios' - -export function getInvalidUrl () { - return request({ - url: '/invalid-url', - method: 'get' - }) -} diff --git a/src/api/demo.plugins.mocks.ajax.js b/src/api/demo.plugins.mocks.ajax.js deleted file mode 100644 index 3e98ed94..00000000 --- a/src/api/demo.plugins.mocks.ajax.js +++ /dev/null @@ -1,8 +0,0 @@ -import request from '@/plugin/axios' - -export function pluginMocksAjax () { - return request({ - url: '/demo/plugins/mock/ajax', - method: 'get' - }) -} diff --git a/src/api/index.js b/src/api/index.js new file mode 100644 index 00000000..49b1a1fc --- /dev/null +++ b/src/api/index.js @@ -0,0 +1,7 @@ +import { assign, map } from 'lodash' +import { request } from './service' + +const files = require.context('./modules', false, /\.js$/) +const generators = files.keys().map(key => files(key).default) + +export default assign({}, ...map(generators, generator => generator({ request }))) diff --git a/src/api/modules/component.markdown.js b/src/api/modules/component.markdown.js new file mode 100644 index 00000000..92554251 --- /dev/null +++ b/src/api/modules/component.markdown.js @@ -0,0 +1,13 @@ +export default ({ request }) => ({ + /** + * @description 登录 + * @param {Object} data 登录携带的信息 + */ + COMPONENT_MARKDOWN_GET ({ url = '' } = {}) { + return request({ + baseURL: process.env.BASE_URL, + url, + method: 'get' + }) + } +}) diff --git a/src/api/modules/demo.js b/src/api/modules/demo.js new file mode 100644 index 00000000..b6981bb5 --- /dev/null +++ b/src/api/modules/demo.js @@ -0,0 +1,44 @@ +export default ({ request }) => ({ + /** + * @description https://d2.pub/d2-admin/preview/#/demo/business/issues/142 + * @description 列表 + */ + DEMO_BUSINESS_ISSUE_142_LIST () { + return request({ + url: '/demo/business/issues/142/fetch', + method: 'get' + }) + }, + /** + * @description https://d2.pub/d2-admin/preview/#/demo/business/issues/142 + * @description 详情 + */ + DEMO_BUSINESS_ISSUE_142_DETAIL ({ id } = {}) { + return request({ + url: '/demo/business/issues/142/detail', + method: 'get', + params: { + id + } + }) + }, + /** + * @description https://d2.pub/d2-admin/preview/#/demo/business/table/1 + * @description 列表 + */ + DEMO_BUSINESS_TABLE_1_LIST () { + return request({ + url: '/demo/business/table/1/fetch', + method: 'get' + }) + }, + /** + * @description 错误日志示例 请求一个不存在的地址 + */ + DEMO_LOG_AJAX () { + return request({ + url: '/invalid-url', + method: 'get' + }) + } +}) diff --git a/src/api/modules/sys.user.js b/src/api/modules/sys.user.js new file mode 100644 index 00000000..c74b8def --- /dev/null +++ b/src/api/modules/sys.user.js @@ -0,0 +1,13 @@ +export default ({ request }) => ({ + /** + * @description 登录 + * @param {Object} data 登录携带的信息 + */ + SYS_USER_LOGIN (data = {}) { + return request({ + url: '/login', + method: 'post', + data + }) + } +}) diff --git a/src/plugin/axios/index.js b/src/api/service.js similarity index 85% rename from src/plugin/axios/index.js rename to src/api/service.js index 3e2e9c5f..23942ca8 100644 --- a/src/plugin/axios/index.js +++ b/src/api/service.js @@ -1,7 +1,8 @@ -import store from '@/store' import axios from 'axios' import { Message } from 'element-ui' +import { get } from 'lodash' import util from '@/libs/util' +import store from '@/store' // 创建一个错误 function errorCreate (msg) { @@ -34,20 +35,11 @@ function errorLog (error) { } // 创建一个 axios 实例 -const service = axios.create({ - baseURL: process.env.VUE_APP_API, - timeout: 5000 // 请求超时时间 -}) +const service = axios.create() // 请求拦截器 service.interceptors.request.use( - config => { - // 在请求发送之前做一些处理 - const token = util.cookies.get('token') - // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改 - config.headers['X-Token'] = token - return config - }, + config => config, error => { // 发送失败 console.log(error) @@ -105,4 +97,16 @@ service.interceptors.response.use( } ) -export default service +export function request (config) { + const token = util.cookies.get('token') + const configDefault = { + headers: { + Authorization: token, + 'Content-Type': get(config, 'headers.Content-Type', 'application/json') + }, + timeout: 5000, + baseURL: process.env.VUE_APP_API, + data: {} + } + return service(Object.assign(configDefault, config)) +} diff --git a/src/api/sys.login.js b/src/api/sys.login.js deleted file mode 100644 index 5ce25638..00000000 --- a/src/api/sys.login.js +++ /dev/null @@ -1,9 +0,0 @@ -import request from '@/plugin/axios' - -export function accountLogin (data) { - return request({ - url: '/login', - method: 'post', - data - }) -} diff --git a/src/components/d2-markdown/index.vue b/src/components/d2-markdown/index.vue index 2fc0f672..e99b0028 100644 --- a/src/components/d2-markdown/index.vue +++ b/src/components/d2-markdown/index.vue @@ -12,7 +12,6 @@ import marked from 'marked' import highlight from 'highlight.js' import bandupan from './plugin/baidupan' import 'github-markdown-css' -import { componentsMarkdownBase } from '@api/components.markdown' export default { name: 'd2-markdown', props: { @@ -64,7 +63,7 @@ export default { }, // 从 url 加载原始数据 async getReadme (url) { - const data = await componentsMarkdownBase(url) + const data = await this.$api.COMPONENT_MARKDOWN_GET({ url }) return this.marked(data) }, marked (data) { diff --git a/src/plugin/api/index.js b/src/plugin/api/index.js new file mode 100644 index 00000000..550c7d02 --- /dev/null +++ b/src/plugin/api/index.js @@ -0,0 +1,7 @@ +import api from '@/api' + +export default { + install (Vue) { + Vue.prototype.$api = api + } +} diff --git a/src/plugin/d2admin/index.js b/src/plugin/d2admin/index.js index 7c739e91..62f7d86a 100644 --- a/src/plugin/d2admin/index.js +++ b/src/plugin/d2admin/index.js @@ -11,6 +11,7 @@ import '@/assets/svg-icons' import i18n from '@/i18n.js' // 功能插件 +import pluginApi from '@/plugin/api' import pluginError from '@/plugin/error' import pluginLog from '@/plugin/log' import pluginOpen from '@/plugin/open' @@ -33,6 +34,7 @@ export default { i18n: (key, value) => i18n.t(key, value) }) // 插件 + Vue.use(pluginApi) Vue.use(pluginError) Vue.use(pluginLog) Vue.use(pluginOpen) diff --git a/src/store/modules/d2admin/modules/account.js b/src/store/modules/d2admin/modules/account.js index cbd960d0..b6d06cce 100644 --- a/src/store/modules/d2admin/modules/account.js +++ b/src/store/modules/d2admin/modules/account.js @@ -1,7 +1,7 @@ import { Message, MessageBox } from 'element-ui' import util from '@/libs/util.js' import router from '@/router' -import { accountLogin } from '@api/sys.login' +import api from '@/api' export default { namespaced: true, @@ -17,7 +17,7 @@ export default { username = '', password = '' } = {}) { - const res = await accountLogin({ username, password }) + const res = await api.SYS_USER_LOGIN({ username, password }) // 设置 cookie 一定要存 uuid 和 token 两个 cookie // 整个系统依赖这两个数据进行校验和存储 // uuid 是用户身份唯一标识 用户注册的时候确定 并且不可改变 不可重复 diff --git a/src/views/demo/business/issues/142/index.vue b/src/views/demo/business/issues/142/index.vue index b05d5194..ce9ce349 100644 --- a/src/views/demo/business/issues/142/index.vue +++ b/src/views/demo/business/issues/142/index.vue @@ -13,11 +13,6 @@