Skip to content

Commit a5e08bb

Browse files
committed
新增工具方法
1 parent 863c216 commit a5e08bb

File tree

11 files changed

+210
-19
lines changed

11 files changed

+210
-19
lines changed

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"axios": "^0.19.2",
1414
"core-js": "^3.6.5",
1515
"element-ui": "^2.13.2",
16+
"moment": "^2.27.0",
1617
"vue": "^2.6.11",
1718
"vue-router": "^3.0.7",
1819
"vuex": "^3.4.0"

src/components/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import Menus from './menus';
2+
import tablePagination from './table-pagination/Index.vue';
23

34
const components = {
45
Menus,
6+
tablePagination,
57
};
68

79
const install = (Vue) => {

src/components/menus/Menus.vue

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,8 @@
11
<template>
22
<div class="sidebar">
3-
<el-menu
4-
class="sidebar-el-menu"
5-
:default-active="onRoutes"
6-
:collapse="!isCollapse"
7-
background-color="#fff"
8-
text-color="#333"
9-
active-text-color="#3273dc"
10-
unique-opened
11-
router
12-
v-if="menuList.length"
13-
>
3+
<el-menu class="sidebar-el-menu" :default-active="onRoutes" :collapse="!isCollapse" background-color="#fff" text-color="#333" active-text-color="#3273dc" unique-opened v-if="menuList.length" @select="selectMenu">
144
<template v-for="(item, i) in menuList">
15-
<MenuItem
16-
:key="i"
17-
:item="item"
18-
/>
5+
<MenuItem :key="i" :item="item" />
196
</template>
207
</el-menu>
218
</div>
@@ -47,6 +34,11 @@ export default {
4734
return this.$route.path.replace('/', '');
4835
}
4936
},
37+
methods: {
38+
selectMenu (item) {
39+
this.$router.push({ name: item, replace: true });
40+
}
41+
},
5042
components: {
5143
MenuItem,
5244
},
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<template>
2+
<!-- 页码开始 -->
3+
<div class="pagination">
4+
<el-pagination background hide-on-single-page layout="total, prev, pager, next,jumper" :current-page="pageIndex" :page-size="pageSize" :total="pageTotal" @current-change="handlePageChange"></el-pagination>
5+
</div>
6+
<!-- 页码结束 -->
7+
</template>
8+
9+
<script>
10+
export default {
11+
name: 'table-pagination',
12+
props: {
13+
// 总共页码数
14+
pageTotal: {
15+
type: Number,
16+
default: 0,
17+
},
18+
// 当前页码
19+
pageIndex: {
20+
type: Number,
21+
default: 1,
22+
},
23+
// 每页的条数
24+
pageSize: {
25+
type: Number,
26+
default: 10,
27+
}
28+
},
29+
methods: {
30+
handlePageChange (val) {
31+
this.$emit('handlePageChange', val);
32+
}
33+
}
34+
}
35+
</script>
36+
37+
<style lang="scss" scoped>
38+
.pagination {
39+
display: flex;
40+
flex-direction: row;
41+
justify-content: flex-end;
42+
margin: 30px 0;
43+
}
44+
</style>

src/services/base.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import axios from 'axios';
2+
import { fileObjectField, serializeObject } from '@/utils';
3+
4+
export default class BaseService {
5+
// 提供get请求方法
6+
async get (url, params = {}) {
7+
return await axios.get(`${url}?${serializeObject(params)}`);
8+
}
9+
10+
// 提供post请求
11+
async post (url, postData = {}) {
12+
return await axios.post(url, fileObjectField(postData));
13+
}
14+
15+
// 提供put请求
16+
async put (url, id, postData = {}) {
17+
return await axios.put(`${url}/${id}`, fileObjectField(postData));
18+
}
19+
20+
// 提供delete请求
21+
async delete (url, id) {
22+
return await axios.delete(`${url}/${id}`);
23+
}
24+
}
25+

src/services/menu.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import axios from 'axios';
1+
import BaseService from './base';
22

3-
class MenuService {
3+
class MenuService extends BaseService{
44
// 获取菜单的接口
55
async getMenuList () {
6-
return await axios.get('http://localhost:9000/api/category');
6+
return await this.get('http://localhost:9000/api/category');
77
}
88
}
99

src/utils/data-type.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const toString = Object.prototype.toString;
2+
3+
export const isObject = (obj) => {
4+
return Object.is(toString.call(obj), '[object Object]');
5+
};
6+
7+
export const isRegExp = (v) => {
8+
return Object.is(toString.call(v), '[object RegExp]');
9+
};
10+
11+
12+
export const isValidArrayIndex = (val) => {
13+
const n = parseFloat(String(val));
14+
return n >= 0 && Math.floor(n) === n && isFinite(val);
15+
};
16+
17+
export const isString = (str) => {
18+
return Object.is(toString.call(str), '[object String]');
19+
};

src/utils/date.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import moment from 'moment'
2+
3+
export const formatDate = (dateNum, isDue = false) => {
4+
if (!dateNum) {
5+
return ''
6+
}
7+
if (/^\d+$/g.test(dateNum)) {
8+
dateNum = Number.parseInt(dateNum)
9+
}
10+
if (isDue) {
11+
return moment(dateNum).format('YYYY-MM-DD')
12+
} else {
13+
return moment(dateNum).format('YYYY-MM-DD HH:mm:ss')
14+
}
15+
}

src/utils/index.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ export * from './http';
22
export * from './storage';
33
export * from './str';
44
export * from './set-title';
5-
export * from './menu';
5+
export * from './menu';
6+
export * from './data-type';
7+
export * from './object';
8+
export * from './date';

0 commit comments

Comments
 (0)